ORB_SLAM2简介
ORB_SLAM2官方给出的简介是Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities。
利用单目,双目和RGB-D深度摄像头的实时SLAM,具有环路检测和重定位功能
ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模的、小规模的、室内室外的环境都可以运行。该系统对剧烈运动也很棒,支持宽基线的闭环检测和重定位,包括全自动初始化。该系统包含了所有SLAM系统共有的模块:跟踪(Tracking)、建图(Mapping)、重定位(Relocalization)、闭环检测(Loop closing)。由于ORB-SLAM系统是基于特征点的SLAM系统,故其能够实时计算出相机的轨线,并生成场景的稀疏三维重建结果。ORB-SLAM2在ORB-SLAM的基础上,还支持标定后的双目相机和RGB-D相机。
安装构建
- ORB_SLAM2源码包下载
mkdir orb_slam2
cd orb_slam2
git clone https://github.com/raulmur/ORB_SLAM2.git
2.安装依赖库
sudo apt-get install libboost-all-dev libblas-dev liblapack-dev
接下来需要安装Eigen3,可以从官网选择下载,也可以直接点击此处给出的源码包链接直接下载。下载后解压源码包并且安装。
tar -xzvf eigen-eigen-b3f3d4950030.tar.gz -C ./
cd eigen-eigen-b3f3d4950030
mkdir build
cd build
cmake .. & make
sudo make install
- 编译g2o
cd ~/orb_slam2/ORB_SLAM2/Thirdparty/g2o
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
- 编译DBoW2
cd ~/orb_slam2/ORB_SLAM2/Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
- 编译Pangolin
mkdir pangolin
cd pangolin
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
- 编译ORB_SLAM2
cd ~/orb_slam2/ORB_SLAM2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
注意在编译过程中可能会遇到图片中的这种错误,大家只要在ORM_SLAM2的源码目录下使用命令grep -rn "usleep",将列出的文件中在头文件的地方加入#include <unistd.h>就不会出现这种问题了
- 编译功能包
export ROS_PACKAGE=${ROS_PACKAGE_PATH}:~/orb_slam2/ORB_SLAM2/Examples/ROS
./build_ros.sh
source Examples/ROS/ORB_SLAM2/build/devel/setup.bash
在编译过程中会出现如下报错
需要我们在Examples/ROS/ORB_SLAM2目录下修改CMakeLists.txt文件,添加依赖库-lboost_system,再次进行编译,就正常了。
ORB_SLAM2功能包使用
- 配置环境变量
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/orb_slam2/ORB_SLAM2/Examples/ROS
source ~/orb_slam2/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build/devel/setup.bash
- 启动功能包
可以通过下载录制好的数据包来进行测试,下载地址。在启动Mono节点时,还应该输入两个必要的参数:
(1)PATH_TO_VOCABULARY:算法参数文件。在ORB_SLAM2/Vocabulary中,将其中的压缩包解压即可。
(2)PATH_TO_SETTINGS_FILE:相机参数设置文件,需要对camera进行标定,或者使用用例的配置文件,
Examples/ROS/ORB_SLAM2/Asus.yaml。
roscore
rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml
rosbag play rgbd_dataset_freiburg1_desk.bag /camera/rgb/image_color:=/camera/image_raw