Hi.When I run the dockerfile in simulation I get an error reporting(in appendix1), To solve this error I added the command of
build commulti_robot_separators to the dockerfile .However, when i run the dockerfile again.I received much errors(in appendix2)..I have not been able to solve the problem for a long time.Looking forward to your reply,thanks very much!!
Appendix1:
[ 6%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/buzz_slam.cpp.o
[ 9%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/buzz_slam_closures.cpp.o
[ 12%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/specialized/ros/buzz_slam_ros_closures.cpp.o
[ 15%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/slam/specialized/ros/buzz_slam_ros.cpp.o
[ 18%] Building CXX object CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o
In file included from /home/docker/robust_distributed_slam_simulation/buzz_slam/src/generic_robot/buzz_generic_robot_slam_ros.cpp:3:0:
/home/docker/robust_distributed_slam_simulation/buzz_slam/src/generic_robot/message_handler_utils/message_handler_utils.h:6:10: fatal error: multi_robot_separators/ReceiveSeparators.h: No such file or directory
#include <multi_robot_separators/ReceiveSeparators.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o] Error 1
CMakeFiles/generic_robot_buzz_slam_node.dir/build.make:158: recipe for target 'CMakeFiles/generic_robot_buzz_slam_node.dir/generic_robot/buzz_generic_robot_slam_ros.cpp.o' failed
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/generic_robot_buzz_slam_node.dir/all' failed
make[1]: *** [CMakeFiles/generic_robot_buzz_slam_node.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
The command '/bin/sh -c cd /home/docker/robust_distributed_slam_simulation/buzz_slam && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -Wno-dev ../src && make && make install' returned a non-zero code: 2
Appendix2:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:215:52: error: invalid cast from type 'cv::Size {aka cv::Size_}' to type 'int'
(int)fromSignature.getWordsDescriptors().size(),
^
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/ULogger.h:51:89: note: in definition of macro 'ULOGGER_LOG'
#define ULOGGER_LOG(level, ...) ULogger::write(level, FILE, LINE, FUNCTION, VA_ARGS)
^~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/ULogger.h:59:23: note: in expansion of macro 'ULOGGER_DEBUG'
#define UDEBUG(...) ULOGGER_DEBUG(VA_ARGS)
^~~~~~~~~~~~~
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:211:2: note: in expansion of macro 'UDEBUG'
UDEBUG("Input(%d): %d words, %d 3D words, %d words descriptors, %d kpts, %d kpts3D, %d descriptors, image=%dx%d",
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:246:39: error: no match for 'operator==' (operand types are 'std::multimap<int, int>::size_type {aka long unsigned int}' and 'cv::Size {aka cv::Size_}')
fromSignature.getWords().size() == fromSignature.getWordsDescriptors().size() ||
error: no matching function for call to 'uMultimapToMapUnique(const std::vector<cv::Point3_ >&)'
uMultimapToMapUnique(signatureB->getWords3()),
^
In file included from /multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:43:0:
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: candidate: template<class K, class V> std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V>&)
inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
^~~~~~~~~~~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: template argument deduction/substitution failed:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2576:53: note: 'const std::vector<cv::Point3_ >' is not derived from 'const std::multimap<K, V>'
uMultimapToMapUnique(signatureB->getWords3()),
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2613:52: error: no matching function for call to 'uMultimapToMapUnique(const std::vector<cv::Point3_ >&)'
uMultimapToMapUnique(signatureA->getWords3()),
^
In file included from /multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:43:0:
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: candidate: template<class K, class V> std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V>&)
inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
^~~~~~~~~~~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: template argument deduction/substitution failed:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2613:52: note: 'const std::vector<cv::Point3_ >' is not derived from 'const std::multimap<K, V>'
uMultimapToMapUnique(signatureA->getWords3()),
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2614:52: error: no matching function for call to 'uMultimapToMapUnique(const std::vector<cv::Point3_ >&)'
uMultimapToMapUnique(signatureB->getWords3()),
^
In file included from /multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:43:0:
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: candidate: template<class K, class V> std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V>&)
inline std::map<K, V> uMultimapToMapUnique(const std::multimap<K, V> & m)
^~~~~~~~~~~~~~~~~~~~
/opt/ros/melodic/lib/rtabmap-0.20/../../include/rtabmap-0.20/rtabmap/utilite/UStl.h:505:23: note: template argument deduction/substitution failed:
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2614:52: note: 'const std::vector<cv::Point3_ >' is not derived from 'const std::multimap<K, V>'
uMultimapToMapUnique(signatureB->getWords3()),
^
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2785:58: error: 'const class std::vector<cv::Point3_ >' has no member named 'find'; did you mean 'end'?
const cv::Point3f & pt3D = fromSignature.getWords3().find(wordId)->second;
^~~~
end
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2792:72: error: invalid initialization of reference of type 'const cv::KeyPoint&' from expression of type 'const int'
const cv::KeyPoint & kpt = fromSignature.getWords().find(wordId)->second;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2798:33: error: 'const class std::vector<cv::Point3_ >' has no member named 'find'; did you mean 'end'?
if(toSignature.getWords3().find(wordId) != toSignature.getWords3().end())
^~~~
end
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2800:64: error: 'const class std::vector<cv::Point3_ >' has no member named 'find'; did you mean 'end'?
depthTo = util3d::transformPoint(toSignature.getWords3().find(wordId)->second, invLocalTransformTo).z;
^~~~
end
/multi_robot_SLAM_separators/ros_ws/src/multi_robot_separators/src/myRegistrationVis.cpp:2802:70: error: invalid initialization of reference of type 'const cv::KeyPoint&' from expression of type 'const int'
const cv::KeyPoint & kpt = toSignature.getWords().find(wordId)->second;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
multi_robot_separators/CMakeFiles/multi_robot_separators.dir/build.make:86: recipe for target 'multi_robot_separators/CMakeFiles/multi_robot_separators.dir/src/myRegistrationVis.cpp.o' failed
make[2]: *** [multi_robot_separators/CMakeFiles/multi_robot_separators.dir/src/myRegistrationVis.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:3621: recipe for target 'multi_robot_separators/CMakeFiles/multi_robot_separators.dir/all' failed
make[1]: *** [multi_robot_separators/CMakeFiles/multi_robot_separators.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed