wg-perception / tabletop

conversion of the old tabletop stack to ecto
7 stars 24 forks source link

Tabletop not compiling after installing opencv 3 (ros-indigo-opencv3) #28

Closed corot closed 8 years ago

corot commented 8 years ago

Pretty sure this is nothing unknown for most of the readers, but as Kinetic release approach, will become more urgent.

[100%] Built target tabletop_object_ectomodule
In file included from /home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:40:0:
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:134:5: error: ‘AlgorithmInfo’ does not name a type
     AlgorithmInfo*
     ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:101:9: note: attribute for ‘class cv::RgbdNormals’ must follow the ‘class’ keyword
   class RgbdNormals: public Algorithm
         ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:202:5: error: ‘AlgorithmInfo’ does not name a type
     AlgorithmInfo*
     ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:172:9: note: attribute for ‘class cv::DepthCleaner’ must follow the ‘class’ keyword
   class DepthCleaner: public Algorithm
         ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:315:5: error: ‘AlgorithmInfo’ does not name a type
     AlgorithmInfo*
     ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:274:9: note: attribute for ‘class cv::RgbdPlane’ must follow the ‘class’ keyword
   class RgbdPlane: public Algorithm
         ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:332:21: note: attribute for ‘struct cv::RgbdFrame’ must follow the ‘struct’ keyword
   CV_EXPORTS struct RgbdFrame
                     ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:351:21: note: attribute for ‘struct cv::OdometryFrame’ must follow the ‘struct’ keyword
   CV_EXPORTS struct OdometryFrame : public RgbdFrame
                     ^
In file included from /home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:40:0:
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:390:20: note: attribute for ‘class cv::Odometry’ must follow the ‘class’ keyword
   CV_EXPORTS class Odometry: public Algorithm
                    ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:502:5: error: ‘AlgorithmInfo’ does not name a type
     AlgorithmInfo*
     ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:480:20: note: attribute for ‘class cv::RgbdOdometry’ must follow the ‘class’ keyword
   CV_EXPORTS class RgbdOdometry: public Odometry
                    ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:551:5: error: ‘AlgorithmInfo’ does not name a type
     AlgorithmInfo*
     ^
/opt/ros/indigo/include/opencv2/rgbd/rgbd.hpp:605:5: error: ‘AlgorithmInfo’ does not name a type
     AlgorithmInfo*
     ^
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp: In member function ‘int tabletop::TableDetector::process(const ecto::tendrils&, const ecto::tendrils&)’:
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:161:20: error: ‘class cv::RgbdPlane’ has no member named ‘set’
       plane_finder.set("threshold", *plane_threshold_);
                    ^
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:162:20: error: ‘class cv::RgbdPlane’ has no member named ‘set’
       plane_finder.set("min_size", int(*min_table_size_));
                    ^
/home/jorge/workspaces/ork/src/ork_tabletop/src/table/TableDetector.cpp:163:20: error: ‘class cv::RgbdPlane’ has no member named ‘set’
       plane_finder.set("sensor_error_a", 0.0075);
                    ^
make[2]: *** [ork_tabletop/src/table/CMakeFiles/tabletop_table_ectomodule.dir/TableDetector.cpp.o] Error 1
make[1]: *** [ork_tabletop/src/table/CMakeFiles/tabletop_table_ectomodule.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

So I suppose the code must be patched with alternative versions with:

#if CV_VERSION_MAJOR == 3
      < something for OpenCV3 >
#else
      < something else for OpenCV2 >
#endif

as other ORK modules, right? If not, current code will not compile on Kinetic, I suppose.

vrabaud commented 8 years ago

Hi, this is normal as opencv_candidate has been compiled with OpenCV2. You should have it be part of your workspace. I added your case to the FAQ at http://wiki.ros.org/opencv3#Usage