一、创建ROS工作空间
二、下载ORB_SLAM2开源代码
三、添加环境变量
四、编译ORB_SLAM2
1.usleep配置
2.编译ORB_SLAM2 - build.sh
3.配置lib文件
4.编译ORB_SLAM2 - build_ros.sh
5.运行./build_ros.sh时出现的错误
错误1:
解决方法:
错误2:
解决方法:
声明:系统配置为 ubuntu-18.04、ROS-melodic
依次运行以下命令(在主目录下):
mkdir -p catkin_ws/src
cd catkin_ws
catkin_make
工作空间编译完成后进行下一步
依次运行以下命令(在catkin_ws/src目录下)
cd catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
Note:如果因为翻不了墙,可以在我的百度网盘中下载,地址为链接:https://pan.baidu.com/s/1szAxDUTvIMlOvJVTbJPXHw 提取码:w5dg
cd ORB_SLAM2
在文件管理界面的主目录中使用“ctrl+h”查看隐藏文件,打开.bashrc,在其中的最后一行添加ORB_SLAM2中的ROS文件的路径,
即export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/你的用户名/工作空间名/src/ORB_SLAM2/Examples/ROS
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/shaoyingjie/catkin_ws/src/ORB_SLAM2/Examples/ROS
依次运行以下命令(什么路径都可以):
source ~/.bashrc
echo $ROS_PACKAGE_PATH
显示/opt/ros/melodic/share,即可以接着进行
echo $ROS_ROOT
显示/opt/ros/melodic/share/ros,即可以接着进行
找到对应的System.cc添加头文件 #include
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
ViewerAR.cc
依次运行以下命令(在catkin_ws/src/ORB_SLAM2中)
chmod +x build.sh
./build.sh
在catkin_ws/src/ORB_SLAM2/lib中添加 libboost_system.so,libboost_filesystem.so
目录如下:
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
复制后粘贴到catkin_ws/src/ORB_SLAM2/lib中,
接着进入到catkin_ws/src/ORB_SLAM2/Examples/ROS中的CMakeLists.txt文件,将对应位置的代码修改为:
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_system.so
-lboost_system
)
修改完成后,保存,退出
在完成以上操作后更新一下环境变量(在工作空间catkin_ws中):
source ./devel/setup.bash
依次运行以下命令(在catkin_ws/src/ORB_SLAM2中)
cd catkin_ws/src/ORB_SLAM2
chmod +x build_ros.sh
./build_ros.sh
出现: 未找到目标文件makefile
在主目录下运行:
rosdep update
成功后,删掉catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2 中的build文件夹,接着再次运行以下命令:
chmod +x build_ros.sh
./build_ros.sh
出现:usleep错误时
提示哪个文件错误,就在哪个文件中添加头文件 #include
成功后,删掉catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2 中的build文件夹,接着再次运行以下命令:
chmod +x build_ros.sh
./build_ros.sh
Notes:
1)在解决每个错误后,必须更新环境变量:在工作空间中运行命令source ./devel/setup.bash
2)我目前只遇到了这些问题,如果有其他问题可以在评论区交流