Robotics StackExchange | Archived questions

error in migrating fuerte to hydro, using SR4000

hi there, I am using SR4000(3D camera) and it is going well under Fuerte. But I have to migrate the package to Hydro. When I try to compile it, I always face this error.

my error is,

Scanning dependencies of target swissranger_camera
[ 36%] Building CXX object camera_drivers_experimental/swissranger_camera/CMakeFiles/swissranger_camera.dir/src/sr.cpp.o
[ 37%] Building CXX object camera_drivers_experimental/swissranger_camera/CMakeFiles/swissranger_camera.dir/src/dev_sr.cpp.o
Linking CXX executable /home/ktset/catkin_ws/devel/lib/swissranger_camera/swissranger_camera
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o: In function `swissranger_camera::SwissRangerConfig::__get_statics__()':
sr.cpp:(.text._ZN18swissranger_camera17SwissRangerConfig15__get_statics__Ev[swissranger_camera::SwissRangerConfig::__get_statics__()]+0x23): undefined reference to `dynamic_reconfigure::__init_mutex__'
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o: In function `SRNode::SRNode(ros::NodeHandle const&)':
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x53): undefined reference to `image_transport::ImageTransport::ImageTransport(ros::NodeHandle const&)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x73): undefined reference to `image_transport::ImageTransport::ImageTransport(ros::NodeHandle const&)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x93): undefined reference to `image_transport::ImageTransport::ImageTransport(ros::NodeHandle const&)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x3b1): undefined reference to `image_transport::ImageTransport::advertise(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, bool)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x44e): undefined reference to `image_transport::ImageTransport::advertise(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, bool)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x4e5): undefined reference to `image_transport::ImageTransport::advertise(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, bool)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0x579): undefined reference to `image_transport::ImageTransport::advertise(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, bool)'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0xcf1): undefined reference to `image_transport::ImageTransport::~ImageTransport()'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0xd0b): undefined reference to `image_transport::ImageTransport::~ImageTransport()'
sr.cpp:(.text._ZN6SRNodeC2ERKN3ros10NodeHandleE[_ZN6SRNodeC5ERKN3ros10NodeHandleE]+0xd25): undefined reference to `image_transport::ImageTransport::~ImageTransport()'
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o: In function `SRNode::~SRNode()':
sr.cpp:(.text._ZN6SRNodeD2Ev[_ZN6SRNodeD5Ev]+0x1d3): undefined reference to `image_transport::ImageTransport::~ImageTransport()'
sr.cpp:(.text._ZN6SRNodeD2Ev[_ZN6SRNodeD5Ev]+0x1e5): undefined reference to `image_transport::ImageTransport::~ImageTransport()'
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o:sr.cpp:(.text._ZN6SRNodeD2Ev[_ZN6SRNodeD5Ev]+0x1f7): more undefined references to `image_transport::ImageTransport::~ImageTransport()' follow
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o: In function `SRNode::getInitParams()':
sr.cpp:(.text._ZN6SRNode13getInitParamsEv[SRNode::getInitParams()]+0x1aa): undefined reference to `camera_info_manager::CameraInfoManager::CameraInfoManager(ros::NodeHandle, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o: In function `SRNode::reconfig(swissranger_camera::SwissRangerConfig&, unsigned int)':
sr.cpp:(.text._ZN6SRNode8reconfigERN18swissranger_camera17SwissRangerConfigEj[SRNode::reconfig(swissranger_camera::SwissRangerConfig&, unsigned int)]+0x2fd): undefined reference to `tf::resolve(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sr.cpp:(.text._ZN6SRNode8reconfigERN18swissranger_camera17SwissRangerConfigEj[SRNode::reconfig(swissranger_camera::SwissRangerConfig&, unsigned int)]+0x3a0): undefined reference to `camera_info_manager::CameraInfoManager::validateURL(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
sr.cpp:(.text._ZN6SRNode8reconfigERN18swissranger_camera17SwissRangerConfigEj[SRNode::reconfig(swissranger_camera::SwissRangerConfig&, unsigned int)]+0x3c8): undefined reference to `camera_info_manager::CameraInfoManager::loadCameraInfo(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/swissranger_camera.dir/src/sr.cpp.o: In function `SRNode::spin()':
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x45): undefined reference to `camera_info_manager::CameraInfoManager::getCameraInfo()'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x5e7): undefined reference to `image_transport::Publisher::getNumSubscribers() const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x616): undefined reference to `image_transport::Publisher::publish(sensor_msgs::Image_<std::allocator<void> > const&) const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x62b): undefined reference to `image_transport::Publisher::getNumSubscribers() const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x65a): undefined reference to `image_transport::Publisher::publish(sensor_msgs::Image_<std::allocator<void> > const&) const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x66f): undefined reference to `image_transport::Publisher::getNumSubscribers() const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x69e): undefined reference to `image_transport::Publisher::publish(sensor_msgs::Image_<std::allocator<void> > const&) const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x6b3): undefined reference to `image_transport::Publisher::getNumSubscribers() const'
sr.cpp:(.text._ZN6SRNode4spinEv[SRNode::spin()]+0x6e2): undefined reference to `image_transport::Publisher::publish(sensor_msgs::Image_<std::allocator<void> > const&) const'
collect2: ld returned 1 exit status
make[2]: *** [/home/ktset/catkin_ws/devel/lib/swissranger_camera/swissranger_camera] Error 1
make[1]: *** [camera_drivers_experimental/swissranger_camera/CMakeFiles/swissranger_camera.dir/all] Error 2
make: *** [all] Error 2

CmakeList.txt :

cmake_minimum_required(VERSION 2.8.3)
project(swissranger_camera)


find_package(catkin REQUIRED COMPONENTS roscpp std_msgs genmsg)


catkin_package(
  INCLUDE_DIRS include
  LIBRARIES /usr/share/libmesasr
  CATKIN_DEPENDS roscpp std_msgs dynamic_reconfigure sensor_msgs image_transport camera_info_manager driver_base tf
  DEPENDS system_lib boost mesasr
)

include_directories(include ${catkin_INCLUDE_DIRS} mesasr)

add_executable(swissranger_camera src/sr.cpp src/dev_sr.cpp)
target_link_libraries(swissranger_camera mesasr ${catkin_LIBRARIES} ${Boost_LIBRARIES} /usr/share/libmesasr)
add_dependencies(swissranger_camera dynamic_reconfigure sensor_msgs image_transport camera_info_manager driver_base tf)`

Package.xml

  <build_depend>std_msgs</build_depend>
  <build_depend>image_transport</build_depend>
  <build_depend>sensor_msgs</build_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>tf</build_depend>
  <build_depend>camera_info_manager</build_depend>
  <build_depend>dynamic_reconfigure</build_depend>
  <build_depend>driver_base</build_depend>
  <build_depend>tf</build_depend>
  <build_depend>libmesasr</build_depend>

  <run_depend>image_transport</run_depend>
  <run_depend>std_msgs</run_depend>
  <run_depend>sensor_msgs</run_depend>
  <run_depend>roscpp</run_depend>
  <run_depend>tf</run_depend>
  <run_depend>camera_info_manager</run_depend>
  <run_depend>dynamic_reconfigure</run_depend>
  <run_depend>driver_base</run_depend>
  <run_depend>tf</run_depend>
  <run_depend>libmesasr</run_depend>

this is the first time I leave my Question so dunno how to use that code function.

How can I fix it? any comments will helpful and thankful. Cheers

Asked by kaist.wook on 2013-12-22 16:30:40 UTC

Comments

Answers

Hope this helps: There are several problems with your CMakeLists.txt.

The biggest one: You need to find_package all the ROS packages you depend on. This is how the variables catkin_INCLUDE_DIRS and catkin_LIBRARIES are set up.

So do a

find_package(catkin REQUIRED COMPONENTS
  roscpp
  std_msgs
  image_transport
  sensor_msgs
  tf
  camera_info_manager
  dynamic_reconfigure
  driver_base
)

(best sort this alphabetically). Maybe this resolves your problem already.

Other issues:

  • You shouldn't link against a library with the full path, but just against the library name minus the lib part, i.e. mesasr
  • the add_dependencies call is not what you want. You need this if you need messages to be built before, but better use ${<packagename>_EXPORTED_TARGETS} or ${catkin_EXPORTED_TARGETS}
  • in catkin_package: The LIBRARIES part is not correct, this is only for exporting libraries that you build
  • in catkin_package: exchange mesasr with libmesasr (the same name as in the package.xml)

Also, there already exists a swissranger driver, have you checked out the OpenPTrack swissranger_camera package?

Asked by mgruhler on 2015-07-21 01:37:28 UTC

Comments

omg, just saw now, when this was actually asked... :-D just stumbled upon it due to the update to the question :-S

Asked by mgruhler on 2015-07-21 01:38:41 UTC

Doesn't matter: we try to answer all questions on ROS Answers, old or new. Only really outdated / no longer relevant questions get closed (but only rarely). So thanks for your contribution.

Asked by gvdhoorn on 2015-07-21 06:16:20 UTC