Robotics StackExchange | Archived questions

opencv2 indigo dependency

Hello,

I am using a ros package done by a former colleague who coded it with ubuntu 12.04 and ros hydro. Therefore, he included in manifest.xml <depend package="opencv2"/>. I am running ubuntu 14.04 (LTS) and ROS indigo.

This question suggests to replace opencv2 with cv_bridge, but when I ran rosmake I got this error:

/opt/ros/indigo/share/linemod_ros/Linemod/LinemodWrap.cpp: In member function ‘void LinemodWrap::save(std::string)’:
  /opt/ros/indigo/share/linemod_ros/Linemod/LinemodWrap.cpp:219:28: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Wunused-result]
       system(command.c_str());
                              ^
  /opt/ros/indigo/share/linemod_ros/Linemod/LinemodWrap.cpp: In member function ‘void LinemodWrap::save(std::string)’:
  /opt/ros/indigo/share/linemod_ros/Linemod/LinemodWrap.cpp:219:28: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Wunused-result]
       system(command.c_str());
                              ^
  [100%] Building CXX object CMakeFiles/train_online.dir/Linemod/LinemodWrap.cpp.o
  Linking CXX executable ../bin/detect_test_offline
  Linking CXX executable ../bin/detect
  Linking CXX executable ../bin/train_virtual
  /opt/ros/indigo/share/linemod_ros/Linemod/LinemodWrap.cpp: In member function ‘void LinemodWrap::save(std::string)’:
  /opt/ros/indigo/share/linemod_ros/Linemod/LinemodWrap.cpp:219:28: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Wunused-result]
       system(command.c_str());
                              ^
  make[3]: Leaving directory `/opt/ros/indigo/share/linemod_ros/build'
  [100%] Built target detect_test_offline
  CMakeFiles/train_virtual.dir/Linemod/VirtualModeller.cpp.o: In function `VirtualModeller::loadFile(std::string, boost::shared_ptr<pcl::PointCloud<pcl::PointXYZRGBA> >, cv::Mat*)':
  /opt/ros/indigo/share/linemod_ros/Linemod/VirtualModeller.cpp:59: undefined reference to `cv::imread(cv::String const&, int)'
  CMakeFiles/train_virtual.dir/Linemod/VirtualModeller.cpp.o: In function `~String':
  /usr/local/include/opencv2/core/cvstd.hpp:667: undefined reference to `cv::String::deallocate()'
  CMakeFiles/train_virtual.dir/Linemod/VirtualModeller.cpp.o: In function `String':
  /usr/local/include/opencv2/core/cvstd.inl.hpp:81: undefined reference to `cv::String::allocate(unsigned long)'
  CMakeFiles/train_virtual.dir/Linemod/VirtualModeller.cpp.o: In function `~String':
  /usr/local/include/opencv2/core/cvstd.hpp:667: undefined reference to `cv::String::deallocate()'
  collect2: error: ld returned 1 exit status
  make[3]: *** [../bin/train_virtual] Error 1
  make[3]: Leaving directory `/opt/ros/indigo/share/linemod_ros/build'
  make[2]: *** [CMakeFiles/train_virtual.dir/all] Error 2
  make[2]: *** Waiting for unfinished jobs....
  Linking CXX executable ../bin/train_online
  make[3]: Leaving directory `/opt/ros/indigo/share/linemod_ros/build'
  [100%] Built target detect
  make[3]: Leaving directory `/opt/ros/indigo/share/linemod_ros/build'
  [100%] Built target train_online
  make[2]: Leaving directory `/opt/ros/indigo/share/linemod_ros/build'
  make[1]: *** [all] Error 2
  make[1]: Leaving directory `/opt/ros/indigo/share/linemod_ros/build'
-------------------------------------------------------------------------------}
[ rosmake ] Output from build of package linemod_ros written to:
[ rosmake ]    /home/ariel/.ros/rosmake/rosmake_output-20160315-153928/linemod_ros/build_output.log
[rosmake-6] Finished <<< linemod_ros [FAIL] [ 42.67 seconds ]                                         
[ rosmake ] Halting due to failure in package linemod_ros. 
[ rosmake ] Waiting for other threads to complete.
[ rosmake ] Results:                                                                                  
[ rosmake ] Cleaned 63 packages.                                                                      
[ rosmake ] Built 63 packages with 1 failures.                                                        
[ rosmake ] Summary output to directory     

This question also gives a suggestion, but due to the fact that it was asked in 2014 and now opencv3 is the latest version, I don't believe it would be the right solution.

And this question suggests libopencv-dev too....

So, is cv_bridge dependency the right way to solve this incompatibility?

Thanks for the help.

EDIT 1: the manifest.xml looks like this

<package>
  <description brief="linemod_ros">

     linemod_ros

  </description>
  <license>BSD</license>
  <review status="unreviewed" notes=""/>
  <url>http://ros.org/wiki/linemod_ros</url>
  <depend package="pcl_ros"/>
  <depend package="pcl_conversions"/>
  <depend package="roscpp"/>
  <!--depend package="opencv2"/-->
  <depend package="cv_bridge"/>
</package>

I tried to build it with catkin but the package was not built at all....I just moved the folder to catkin_ws/src

EDIT 2: I've just found the tutorial catkin/migratingfromrosbuild

Asked by Ariel on 2016-03-15 09:44:06 UTC

Comments

Can you post your files like manifest.xml? And you should probably look into using catkin, it's the recommended build system for Indigo

Asked by alee on 2016-03-15 09:51:07 UTC

I catkinized it keeping in mind all the dependencies and I have it running now. Answer closed.

Asked by Ariel on 2016-03-16 06:25:19 UTC

Answers