关于ORB-SLAM2算法编译过程中运行./build_ros.sh命令报错问题的解决方法
本文是对关于ORB-SLAM2算法编译过程中运行./build_ros.sh命令报错问题的解决方法的描述,对解决该报错的过程进行梳理,方便今后使用。1. ORB-SLAM2算法的工作空间搭建参考前面文章Ubuntu 16.04系统下安装Open-CV 3.1.0Ubuntu 16.04系统下安装Eigen3矩阵库(简便法)Ubuntu 16.04系统下使用数据集运行ORB-SLAM2算法2. 运行
本文是对关于ORB-SLAM2算法编译过程中运行./build_ros.sh命令报错问题的解决方法的描述,对解决该报错的过程进行梳理,方便今后使用。
1. ORB-SLAM2算法的工作空间搭建
参考前面文章
Ubuntu 16.04系统下安装Open-CV 3.1.0
Ubuntu 16.04系统下安装Eigen3矩阵库(简便法)
Ubuntu 16.04系统下使用数据集运行ORB-SLAM2算法
2. 运行./build_ros.sh命令报错
(1)运行./build_ros.sh出现如下报错:
Failed to invoke /opt/ros/kinetic/bin/rospack deps-manifests ORB_SLAM2
Error: package 'cv_bridge' depends on non-existent package 'opencv3' and
rosdep claims that it is not a system dependency. Check the ROS_PACKAGE_PATH or try calling 'rosdep update'
可运行如下命令解决:
sudo apt-get install ros-kinetic-cv-bridge
(2)然后继续运行./build_ros.sh出现如下报错:
`/usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/RGBD.dir/build.make:218: recipe for target ‘…/RGBD’ failed
make[2]: *** […/RGBD] Error 1
CMakeFiles/Makefile2:67: recipe for target ‘CMakeFiles/RGBD.dir/all’ failed
make[1]: *** [CMakeFiles/RGBD.dir/all] Error 2
make[1]: *** 正在等待未完成的任务…
/usr/bin/ld: CMakeFiles/Stereo.dir/src/ros_stereo.cc.o: undefined reference to symbol ‘_ZN5boost6system15system_categoryEv’
/usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
CMakeFiles/Stereo.dir/build.make:218: recipe for target ‘…/Stereo’ failed
make[2]: *** […/Stereo] Error 1
CMakeFiles/Makefile2:104: recipe for target ‘CMakeFiles/Stereo.dir/all’ failed
make[1]: *** [CMakeFiles/Stereo.dir/all] Error 2
Makefile:127: recipe for target ‘all’ failed
make: *** [all] Error 2
出错原因为:libboost_system.so 与libboost_filesystem.so找不到链接目录,此时需要把/usr/lib/x86_64-linux-gnu下的libboost_system.so与libboost_filesystem.so复制到ORB_SLAM2/lib下,并且将ORBSLAM2/Examples/ROS/ORBSLAM2下的Cmakelists.txt中加入库目录
${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so
具体为:
set(LIBS ${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so ${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so
然后继续运行./build_ros.sh,会发现依旧报错,此时还要把libboost_system.so.1.58.0和libboost_filesystem.so.1.58.0复制到ORB_SLAM2/lib下,并继续在ORBSLAM2/Examples/ROS/ORBSLAM2下的Cmakelists.txt中添加一行,-lboost_system ,即:
set(LIBS ${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../../../lib/libboost_system.so
-lboost_system
)
最后运行./build_ros.sh,查看编译结果,成功!
参考资料
ORBSLAM2_with_pointcloud_map 编译ros包
ubuntu16.04编译ORBSLAM2问题解决
更多推荐
所有评论(0)