前言
在ORB-SLAM2的基础上的扩充和改进,提出了可搭载更多种类传感器,且准确性和鲁棒性都更好。即使在较严重的抖动相机和较大幅转弯的情况下,ORB-SLAM3的定位跟踪仍可继续,且构建的轨迹也吻合实际情况,效果教原ORB-SLAM2有较大的改进。
一、准备工作
与ORB-SLAM2的相同,需要安装以下依赖:
1. Pangolin
2. OpenCV>=3.0
3. Eigen>=3.1.0
4. Python
sudo apt install libpython2.7-dev
5. ROS(medolic)
6. DBoW2和g2o (已经集成在源码中的第三方库中,不需要自己安装)
二、编译
1. clone到本地
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
2. 编译
cd ORB_SLAM3
chmod +x build.sh
./build.sh
编译时可能出错:
g++: internal compiler error: Killed (program cc1plus)
原因,内存不足 使用交换分区来解决。
sudo dd if=/dev/zero of=/swapfile bs=64M count=128
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=16GB
sudo mkswap /swapfile #把刚才空间格式化成swap格式
sudo swapon /swapfile #使用刚才创建的swap空间
然后,继续编译。编译完毕后,删除交换分区。
sudo swapoff /swapfile
sudo rm /swapfile
三、运行
1.下载数据集
wget http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_01_easy/MH_01_easy.zip
解压数据集,在下载到本地的ORB-SLAM3目录下新建一个空的dataset文件夹,并将解压后的文件夹移动到ORB-SLAM3/dataset文件夹下,也就是ORB-SLAM3/dataset/mav0
2.run
开启终端,进入下载到本地的ORB-SLAM3目录下,运行下面的指令就能成功运行。
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./dataset ./Examples/Monocular/EuRoC_TimeStamps/MH01.txt dataset-MH01_mono
查看ROS的订阅信息
rostopic list