ORB-SLAM2编译运行
源码地址
源码链接:git clone https://github.com/raulmur/ORB_SLAM2.git
电脑配置
Ubuntu 18.04 + ROS Melodic + GTSAM 4.0.2 + CERES 1.14.0
pcl1.8+vtk8.2.0+opencv3.2.0
环境配置
之前已经配置过VINS-MOON的环境(可参考之前的博客)
编译
cd ~/catkin_ws/src
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
将build.sh文件和build_ros.sh中的make -j改为make
ORB_SLAM2文件夹下的下列文件加入头文件代码
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
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
Examples/Stereo/ORB_SLAM2/src/AR/ViewerAR.cc
Examples/Ros/stereo_kitti.cc
Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc
src/Converter.cc
src/Frame.cc
src/FrameDrawer.cc
src/Initializer.cc
src/KeyFrame.cc
src/KeyFrameDatabase.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/Map.cc
src/MapDrawer.cc
src/MapPoint.cc
src/Optimizer.cc
src/ORBextractor.cc
src/ORBmatcher.cc
src/PnPsolver.cc
src/Sim3Solver.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
添加原因:
(遇到同样的错误,可以添加头文件)
参考链接:https://blog.csdn.net/Robert_Q/article/details/121592896
修改ORB_SLAM2/Examples/ROS/ORB_SLAM2/文件夹下的CMakeLists.txt文件,在set(LIBS xxxxx 的后面加上
-lboost_system
/ORB_SLAM2/CMakeLists.txt文件,将find_package(OpenCV …)中的opencv版本号改成自己安装的opencv版本号
版本号查看:
pkg-config --modversion opencv
参考链接:https://blog.csdn.net/qin_liang/article/details/127419612
./build.sh
删除build文件夹,再次编译
mkdir build
cd build
cmake ..
make -j2
编译ROS
cd ~/catkin_ws2/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
mkdir build
cd build
cmake ..
make -j2
修改.bashrc文件
sudo gedit ~/.bashrc
在文件尾添加
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws2/src/ORB_SLAM2/Examples/ROS
修改后在终端输入
source ~/.bashrc
适配Kitti数据集
运行结果
tum数据集
下载地址:https://cvg.cit.tum.de/data/datasets/rgbd-dataset/download
运行
在ORB_SLAM2文件夹下
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /path/to/dataset/rgbd_dataset_freiburg1_xyz
对保存在ORB_SLAM2文件夹下的KeyFrameTrajectory.txt通过evo绘制
evo_traj tum KeyFrameTrajectory.txt -p --plot_mode=xyz
kitti数据集生成
参考之前的VINSMOON运行博客
kitti数据集
3个终端
roscore
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml
ORB_SLAM2用于接受相机数据的topic话题为 /camera/image_raw
rosbag play kitti_2011_10_03_drive_0034_synced.bag /kitti/camera_gray_left/image_raw:=/camera/image_raw
对保存在ORB_SLAM2文件夹下的KeyFrameTrajectory.txt通过evo绘制(单目无法恢复尺度)
evo_traj tum KeyFrameTrajectory.txt -p --plot_mode=xyz
evo_traj tum KeyFrameTrajectory.txt 02_gt_tum.txt --ref=02_gt_tum.txt -a -p --plot_mode=xyz
参考链接:
1.https://blog.csdn.net/qq_37417682/article/details/104130666?spm=1001.2101.3001.6650.16&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-104130666-blog-128161032.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-16-104130666-blog-128161032.235%5Ev43%5Econtrol&utm_relevant_index=17
2.https://blog.csdn.net/weixin_56337147/article/details/130344059?spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-130344059-blog-128161032.235%5Ev43%5Econtrol&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-12-130344059-blog-128161032.235%5Ev43%5Econtrol&utm_relevant_index=13