Hi to all,
Right now I'm trying to adapt and migrate the ROS package RGBDSLAM to ROS Indigo and, after talking to Felix Endres, the code developer and the responsible for the package maintenance, I thought it should be better to get some help around here, cause it seems like the API from OpenNI got some changes that are not compatible with the rgbdslam previous code.
Right now I have OpenNI-2.4.9 installed on Ubuntu 13.10 Saucy.
The following errors appear when I do catkin_make
on the workspace folder: (I'm going to split them in different cases so it can be better analyzed)
In file included from /home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp:18:0:
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.h:49:40: error: ‘cv::vector’ has not been declared
void detect(const cv::Mat& image, cv::vector<cv::KeyPoint>& keypoints, std::vector<float>& descriptors, const cv::Mat& mask = cv::Mat()) const;
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.h:49:46: error: expected ‘,’ or ‘...’ before ‘<’ token
void detect(const cv::Mat& image, cv::vector<cv::KeyPoint>& keypoints, std::vector<float>& descriptors, const cv::Mat& mask = cv::Mat()) const;
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp:108:55: error: ‘cv::vector’ has not been declared
void SiftGPUWrapper::detect(const cv::Mat& image, cv::vector<cv::KeyPoint>& keypoints, std::vector<float>& descriptors, const Mat& mask) const {
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp:108:61: error: expected ‘,’ or ‘...’ before ‘<’ token
void SiftGPUWrapper::detect(const cv::Mat& image, cv::vector<cv::KeyPoint>& keypoints, std::vector<float>& descriptors, const Mat& mask) const {
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp: In member function ‘void SiftGPUWrapper::detect(const cv::Mat&, int) const’:
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp:111:9: error: ‘keypoints’ was not declared in this scope
keypoints.clear();
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp:133:9: error: ‘descriptors’ was not declared in this scope
descriptors.resize(128 * num_features);
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/sift_gpu_wrapper.cpp:141:5: error: ‘keypoints’ was not declared in this scope
keypoints.clear();
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:370:40: error: ‘string’ does not name a type
FeatureDetector* createDetector( const string& detectorType )
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:370:48: error: ISO C++ forbids declaration of ‘detectorType’ with no type [-fpermissive]
FeatureDetector* createDetector( const string& detectorType )
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp: In function ‘cv::FeatureDetector* createDetector(const int&)’:
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:374:23: error: request for member ‘compare’ in ‘detectorType’, which is of non-class type ‘const int’
if( !detectorType.compare( "FAST" ) ) {
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:379:56: error: no matching function for call to ‘cv::DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector(cv::FastAdjuster*, int, int, int)’
params->get<int>("adjuster_max_iterations"));
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:379:56: note: candidates are:
In file included from /usr/local/include/opencv2/features2d/features2d.hpp:48:0,
from /usr/include/opencv/cv.h:68,
from /home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:25:
/usr/local/include/opencv2/features2d.hpp:762:5: note: cv::DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector(const cv::DynamicAdaptedFeatureDetector&)
DynamicAdaptedFeatureDetector(const DynamicAdaptedFeatureDetector&);
^
/usr/local/include/opencv2/features2d.hpp:762:5: note: candidate expects 1 argument, 4 provided
/usr/local/include/opencv2/features2d.hpp:753:5: note: cv::DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector(const cv::Ptr<cv::AdjusterAdapter>&, int, int, int)
DynamicAdaptedFeatureDetector( const Ptr<AdjusterAdapter>& adjuster, int min_features=400, int max_features=500, int max_iters=5 );
^
/usr/local/include/opencv2/features2d.hpp:753:5: note: no known conversion for argument 1 from ‘cv::FastAdjuster*’ to ‘const cv::Ptr<cv::AdjusterAdapter>&’
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:381:28: error: request for member ‘compare’ in ‘detectorType’, which is of non-class type ‘const int’
else if( !detectorType.compare( "STAR" ) ) {
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:385:28: error: request for member ‘compare’ in ‘detectorType’, which is of non-class type ‘const int’
else if( !detectorType.compare( "SIFT" ) ) {
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:387:44: error: ‘cv::SIFT::DetectorParams’ has not been declared
fd = new SiftFeatureDetector(SIFT::DetectorParams::GET_DEFAULT_THRESHOLD(),
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:388:44: error: ‘cv::SIFT::DetectorParams’ has not been declared
SIFT::DetectorParams::GET_DEFAULT_EDGE_THRESHOLD());
^
In file included from /opt/ros/indigo/include/ros/ros.h:40:0,
from /home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:16:
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:390:24: error: ‘cv::SIFT::DetectorParams’ has not been declared
SIFT::DetectorParams::GET_DEFAULT_THRESHOLD(),
^
/home/nuno/AIMAVProject_ws/src/rgbdslam_v2/src/misc.cpp:391:24: error: ‘cv::SIFT::DetectorParams’ has not been declared
SIFT::DetectorParams::GET_DEFAULT_EDGE_THRESHOLD());
^
There are some others but I think for now you can have an idea of what may be missing on these files. In can found the rest of them in the ROS Answers topic (http://answers.ros.org/question/173203/rgbdslam-indigo-support/). I assume it can be lack of includes in the headers but if also a change in the functions are needed, I need help in this cause I'm not familiar with the OpenCV code and API.
Thank you very much in advance! Best regards