orbslam3报错问题
1. CMake Error at /opt/ros/noetic/share/ros/core/rosbuild/private.cmake:99 (message):
1 | CMake Error at /opt/ros/noetic/share/ros/core/rosbuild/private.cmake:99 (message): |

根本原因:未找到,ROS_PACKAGE_PATH路径。
参考:「 Linux调试错误 」CMake Error at /opt/ros/kinetic/share/ros/core/rosbuild/public.cmake:129 (message):
1 | cd ~ |
添加路径后依然报错
https://blog.csdn.net/weixin_62952541/article/details/131807996

1 | sudo apt-get install python3-pip |
2. 关于ROS_PACKAGE_PATH
如果直接在~/.bashrc 中添加相同环境变量的不同路径
1 | export ROS_PACKAGE_PATH="/xxx/xxx/xx1/" |
会出现环境变量被覆盖的情况
echo $ROS_PACKAGE_PATH读取环境变量
利用${ROS_PACKAGE_PATH}:在后面新增路径


3. 在ROS中编译时的报错
大致如下:
1 | /usr/bin/ld: warning: libopencv_imgproc.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.2 |
https://github.com/UZ-SLAMLab/ORB_SLAM3/issues/279
ROS 使用的版本和 ORBSLAM3 使用的版本不一样……如果不是从源代码构建 ROS,你就无法控制它使用的 OpenCV 版本……所以构建 ORBSLAM3 使用您的 ROS 使用的 OpenCV 版本…在您的情况下,ROS noetic 使用 Opencv 4.2 并且您已经使用 OpenCV 3.2 构建了 ORBSLAM3 。 尝试将 OpenCV 4.2 与 ORBSLAM3 结合使用。
- 但没用
1 | /usr/bin/ld: warning: libopencv_imgproc.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.2 |
编译orb-slam3的ros的时候,使用的是opencv4.2,但是lib文件夹下的libORB_SLAM3.so是使用opencv3.2编译的,会产生冲突。
此时运行rosrun ORB-SLAM3 Mono ... 依然会报错核心已转储问题
查看build.sh
1 | echo "Configuring and building Thirdparty/DBoW2 ..." |
打开/Thirdparty/DBoW2/CMakeLists.txt
1 | find_package(OpenCV 4.0 QUIET) |
离谱
4. 改上面都不行
1 | /usr/bin/ld: warning: libopencv_imgproc.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgproc.so.3.2 |
最后在师兄帮助下,发现在build.sh的结束时在最后一行有warning,大致意思是cv_bridge有问题,他用的貌似是opencv4.2,我电脑里的是opencv4.5.5
没法解决的时候,不能放过任何一个warning