Hi Josh,
The code would have been helpful!
laser_proc.cpp:109: mob_client.call(mob_msg);
where:
ros::ServiceClient mob_client =
node.serviceClient<surveyor_ctrl::controlCmd>("robot_control", true);
and
surveyor_ctrl::controlCmd mob_msg;
Similarly, laser_proc.cpp:380 is: laser_client.call(msg) where msg is a
laserCmd and laser_client is similar to mob_client (same declaration,
different service).
Yes, the laserCmd and controlCmd are generated from .srv files in
surveyor_ctrl.
Actually, as I just went to grab the header files to paste here, I
noticed that there were laserCmd.h in two places:
surveyor_ctrl/srv/cpp/surveyor_ctrl/laserCmd.h and
surveyor_ctrl/srv_gen/cpp/include/surveyor_ctrl/laserCmd.h. The former
had header files with old dates and the md5sum information the error
message contained (a line like "inline static std:;string getMD5Sum() {
return....}"), while the latter file was generated today and contained a
similar call but as a private function.
I removed the old files and their directory (the srv/cpp items) and
rebuilt everything and had success! So I think problem solved! Did the
location of generated service headers change between box and ctutrtle??
Thanks for pointing me in the right direction!
Thanks,
Barry
On 11/09/2010 11:11 AM, Josh Faust wrote:
> What is the code that's causing the error? (e.g. laser_proc.cpp:109).
>
> Are laserCmd and controlCmd generated from .srv files? What does
> their headers look like?
>
> Josh
>
> On Tue, Nov 9, 2010 at 11:01 AM, Barry O'Brien
> <bobrien@newtonrobotics.com <mailto:bobrien@newtonrobotics.com>> wrote:
>
> Hello,
>
> I recently upgraded my system from box turtle to cturtle and am having
> some odd compilation issues. I am running Ubuntu 9.10 (64-bit).
>
> I have four separate ROS nodes that have previously compiled and ran
> just fine, but following the upgrade two of the four nodes are no
> longer
> compiling. These two nodes (called surveyor_vision and surveyor_ui)
> depend on services (laserCmd, controlCmd) defined in one of the other
> (correctly building) nodes (called surveyor_ctrl). As far as I can
> tell,
> the errors have to do with apparent changes to the way Services and
> ServiceClients are implemented.
>
> After reading through the change logs for cturtle, it is clear
> that this
> functionality was modified between box turtle and cturtle
> releases, but
> that all changes made should have retained backwards compatibility.
> Similarly, the OpenCV warnings should have been addressed in
> incremental
> updates according to the mailing list and change logs but are still
> being thrown. This is my confusion - I can see that others have seen
> these errors/warnings, but that they should have been addressed
> with the
> software I have installed.
>
> I have confirmed my Ubuntu package sources list matches that on
> the ROS
> installation documentation, and apt-get reports all sources are
> up-to-date. I have also confirmed that my .bashrc correctly points to
> the cturtle setup script.
>
> My question is are there other places that are maintaining "hidden"
> paths to box turtle libraries other than the rather obvious places I
> mention above? Or does this point to a required code change in the
> instantiation and/or use of these services?
>
> Please let me know if there is any other information that I am
> forgetting to provide.
>
> The output from attempting to build surveyor_vision is below.
>
> Thanks,
> Barry O'Brien
> Newton Robotics
>
> 0%] Built target rospack_genmsg_libexe
> [ 0%] Built target rosbuild_precompile
> [ 50%] Building CXX object
> src/CMakeFiles/surveyor_vision.dir/laser_proc.o
> In file included from
> /home/bobrien/newton/surveyor/surveyor_vision/include/surveyor_vision/laser_proc.h:5,
> from
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:1:
> /opt/ros/cturtle/stacks/vision_opencv/opencv2/opencv/include/opencv/cv.h:47:2:
> warning: #warning "This is a deprecated opencv header provided for
> compatibility. Please include a header from a corresponding opencv
> module"
> In file included from
> /opt/ros/cturtle/stacks/vision_opencv/opencv2/opencv/include/opencv/cv.h:64,
> from
> /home/bobrien/newton/surveyor/surveyor_vision/include/surveyor_vision/laser_proc.h:5,
> from
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:1:
> /opt/ros/cturtle/stacks/vision_opencv/opencv2/opencv/include/opencv2/core/internal.hpp:297:1:
> warning: "CV_IMPL" redefined
> In file included from
> /home/bobrien/newton/surveyor/surveyor_vision/include/surveyor_vision/laser_proc.h:5,
> from
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:1:
> /opt/ros/cturtle/stacks/vision_opencv/opencv2/opencv/include/opencv/cv.h:60:1:
> warning: this is the location of the previous definition
> /opt/ros/cturtle/stacks/vision_opencv/opencv2/opencv/include/opencv/cv.h:67:8:
> warning: extra tokens at end of #endif directive
> In file included from
> /opt/ros/cturtle/ros/core/roscpp/include/ros/service_client.h:33,
> from /opt/ros/cturtle/ros/core/roscpp/include/ros/node_handle.h:35,
> from /opt/ros/cturtle/ros/core/roscpp/include/ros/ros.h:45,
> from
> /home/bobrien/newton/surveyor/surveyor_vision/include/surveyor_vision/laser_proc.h:4,
> from
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:1:
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h: In
> static
> member function ‘static const char*
> ros::service_traits::MD5Sum<M>::value(const M&) [with M =
> surveyor_ctrl::controlCmd]’:
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:94:
> instantiated from ‘const char* ros::service_traits::md5sum(const M&)
> [with M = surveyor_ctrl::controlCmd]’
> /opt/ros/cturtle/ros/core/roscpp/include/ros/service_client.h:90:
> instantiated from ‘bool ros::ServiceClient::call(Service&) [with
> Service
> = surveyor_ctrl::controlCmd]’
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:109:
> instantiated from here
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:49:
> error:
> ‘const struct surveyor_ctrl::controlCmd’ has no member named
> ‘__getServerMD5Sum’
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h: In
> static
> member function ‘static const char*
> ros::service_traits::MD5Sum<M>::value(const M&) [with M =
> surveyor_ctrl::laserCmd]’:
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:94:
> instantiated from ‘const char* ros::service_traits::md5sum(const M&)
> [with M = surveyor_ctrl::laserCmd]’
> /opt/ros/cturtle/ros/core/roscpp/include/ros/service_client.h:90:
> instantiated from ‘bool ros::ServiceClient::call(Service&) [with
> Service
> = surveyor_ctrl::laserCmd]’
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:380:
> instantiated from here
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:49:
> error:
> ‘const struct surveyor_ctrl::laserCmd’ has no member named
> ‘__getServerMD5Sum’
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h: In
> static
> member function ‘static const char*
> ros::service_traits::MD5Sum<M>::value() [with M =
> surveyor_ctrl::laserCmd]’:
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:76:
> instantiated from ‘const char* ros::service_traits::md5sum() [with M =
> surveyor_ctrl::laserCmd]’
> /opt/ros/cturtle/ros/core/roscpp/include/ros/service_client_options.h:93:
> instantiated
> from ‘void ros::ServiceClientOptions::init(const std::string&, bool,
> const ros::M_string&) [with Service = surveyor_ctrl::laserCmd]’
> /opt/ros/cturtle/ros/core/roscpp/include/ros/node_handle.h:1062:
> instantiated from ‘ros::ServiceClient
> ros::NodeHandle::serviceClient(const std::string&, bool, const
> ros::M_string&) [with Service = surveyor_ctrl::laserCmd]’
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:18:
> instantiated from here
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:44:
> error:
> ‘__s_getServerMD5Sum’ is not a member of ‘surveyor_ctrl::laserCmd’
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h: In
> static
> member function ‘static const char*
> ros::service_traits::MD5Sum<M>::value() [with M =
> surveyor_ctrl::controlCmd]’:
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:76:
> instantiated from ‘const char* ros::service_traits::md5sum() [with M =
> surveyor_ctrl::controlCmd]’
> /opt/ros/cturtle/ros/core/roscpp/include/ros/service_client_options.h:93:
> instantiated
> from ‘void ros::ServiceClientOptions::init(const std::string&, bool,
> const ros::M_string&) [with Service = surveyor_ctrl::controlCmd]’
> /opt/ros/cturtle/ros/core/roscpp/include/ros/node_handle.h:1062:
> instantiated from ‘ros::ServiceClient
> ros::NodeHandle::serviceClient(const std::string&, bool, const
> ros::M_string&) [with Service = surveyor_ctrl::controlCmd]’
> /home/bobrien/newton/surveyor/surveyor_vision/src/laser_proc.cpp:33:
> instantiated from here
> /opt/ros/cturtle/ros/core/roslib/include/ros/service_traits.h:44:
> error:
> ‘__s_getServerMD5Sum’ is not a member of ‘surveyor_ctrl::controlCmd’
> make[2]: *** [src/CMakeFiles/surveyor_vision.dir/laser_proc.o] Error 1
> make[1]: *** [src/CMakeFiles/surveyor_vision.dir/all] Error 2
> make: *** [all] Error 2
>
> --
> Barry O'Brien
> Software Engineer
> Newton Labs
> O: (425) 251-9600
> C: (571) 334-5719
>
> **************************************************
> These communications are without prejudice to Newton's rights
> under any existing agreement and should not be considered as
> binding upon Newton, until Newton affirmatively agrees in writing.
> This e-mail and any of its attachments may contain Newton
> proprietary information, which is privileged, confidential, or
> subject to copyright belonging to Newton family of Companies. This
> e-mail is intended solely for the use of the individual or entity
> to which it is addressed. If you are not the intended recipient of
> this e-mail, you are hereby notified that any dissemination,
> distribution, copying, or action taken in relation to the contents
> of and attachments to this e-mail is strictly prohibited and may
> be unlawful. If you have received this e-mail in error, please
> notify the sender immediately and permanently delete the original
> and any copy of this e-mail and any printout. Thank You.
> **************************************************
>
> _______________________________________________
> ros-users mailing list
> ros-users@code.ros.org <mailto:ros-users@code.ros.org>
> https://code.ros.org/mailman/listinfo/ros-users
>
>