仅记录遇到的问题以供以后参考,并向参考的博主致谢!
系统:ubuntu20.04
ros版本:noetic
环境及安装流程主要参考:Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装_ubuntu使用slam-CSDN博客大部分遇到的问题及解决参考:
Ubuntu18.04 编译 ORB-SLAM2(./build.sh + ./build_ros.sh)完整流程,各种报错处理(踩坑总结)-CSDN博客ORB_SLAM2安装与编译报错的解决办法_orbslam2 运行报错-CSDN博客
以下记录困扰很久才解决的问题:
1..build.sh和.build_ros编译成功,但运行
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
及双目\RGBD等运行失败,始终报错,如下:
即段错误(核心已转储),网上也有类似的报错的解决办法,但注意,"段错误(核心已转储)"没有打印出一段信息Loading ORB Vocabulary. This could take a while..,
此处感谢博主ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真_视觉slam仿真实验 robot_sim_demo-CSDN博客该文中提出可能是opencv版本冲突,由此给了我启发。
由于我的系统是ubuntu20.04的ros-noetic,所以已经安装了opencv4(使用以下命令可以查看opencv4版本)
pkg-config --modversion opencv4
由于orbslam2与opencv4不太兼容,故我最开始又安装了opencv3,准备使用opencv3,且未对orbslam2中的 CMakeLists.txt修改。前期没有任何问题,都可以顺利编译通过,但是运行ros时会报错如上图。最终参考博客【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造_ubuntu20.04 安装运行orb_slam2算法-CSDN博客
并使用opencv4,在重新编译运行后再次输入
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml
不再报错,问题解决。简而言之,opencv版本冲突了。