Advertisement

关于ORB-SLAM2算法编译过程中运行./build_ros.sh命令报错问题的解决方法

阅读量:

本文是对关于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)

还没有任何评论哟~