ORB-SLAM3
V1.0,2021年12月22日
**作者:**卡洛斯·坎波斯、理查德·埃尔维拉、胡安·J·戈麦斯·罗德里格斯、何塞·MM·蒙蒂尔、胡安·D·塔多斯。
变更日志描述了每个版本的特性。
ORB-SLAM3 是首个能够使用单目、立体和 RGB-D相机执行视觉、视觉惯性和多地图 SLAM 的实时 SLAM 库,支持针孔和鱼眼镜头模型。在所有传感器配置下,ORB-SLAM3 的鲁棒性与文 献中最佳系统相当,并且精度显著提升。
我们提供了在EuRoC 数据集中使用立体或单目(含 IMU 和单目)以及在TUM-VI 数据集中使用鱼眼立体或单目(含 IMU 和单目)运行 ORB-SLAM3 的示例。部分示例执行视频可在ORB-SLAM3 频道找到。
该软件基于Raul Mur-Artal、Juan D. Tardos、JMM Montiel和Dorian Galvez-Lopez ( DBoW2 )开发的ORB-SLAM2。
相关出版物:
[ORB-SLAM3] Carlos Campos、Richard Elvira、Juan J. Gómez Rodríguez、José MM Montiel 和 Juan D. Tardós,ORB-SLAM3:用于视觉、视觉惯性和多地图 SLAM 的精确开源库, IEEE 机器人**学报37(6):1874-1890,2021 年 12 月。PDF 。**
[IMU 初始化] Carlos Campos、JMM Montiel 和 Juan D. Tardós,视觉惯性初始化的纯惯性优化,ICRA 2020 . PDF
[ORBSLAM-Atlas] Richard Elvira、JMM Montiel 和 Juan D. Tardós, ORBSLAM- Atlas****:一个强大而准确的多地图系统,IROS 2019。PDF 。
[ORBSLAM-VI] Raúl Mur-Artal 和 Juan D. Tardós,《可重用地图的视觉惯性单目 SLAM》,IEEE 机器人与自动化快报,第 2 卷,第 2 期,第 796-803 页,2017 年**。PDF**。
[立体和 RGB-D] Raúl Mur-Artal 和 Juan D. Tardós。ORB -SLAM2:适用于单目、立体和 RGB-D 相机的开源 SLAM 系统。IEEE_机器人学报,_第 33 卷,第 5 期,第 1255-1262 页,2017 年**。PDF**。
[单目] Raúl Mur-Artal、José MM Montiel 和 Juan D. Tardós。ORB -SLAM:一种多功能且精确的单目 SLAM 系统。IEEE_机器人学报,_第 31 卷,第 5 期,第 1147-1163 页,2015 年。(2015 年 IEEE 机器人学报最佳论文奖)。PDF。
[DBoW2 位置识别] Dorian Gálvez-López 和 Juan D. Tardós。基于二进制词袋的快速图像序列位置识别方法。_《IEEE 机器人学报》,_第 28 卷,第 5 期,第 1188-1197 页,2012 年**。PDF**
1. 许可证
ORB-SLAM3 采用GPLv3 许可证发布。所有代码/库依赖项(及相关许可证)的列表,请参阅Dependencies.md。
如需用于商业用途的 ORB-SLAM3 闭源版本,请联系作者:orbslam (at) unizar (dot) es。
如果您在学术著作中使用 ORB-SLAM3,请引用:
@article{ORBSLAM3_TRO,
title={{ORB-SLAM3}: An Accurate Open-Source Library for Visual, Visual-Inertial
and Multi-Map {SLAM}},
author={Campos, Carlos AND Elvira, Richard AND G\´omez, Juan J. AND Montiel,
Jos\'e M. M. AND Tard\'os, Juan D.},
journal={IEEE Transactions on Robotics},
volume={37},
number={6},
pages={1874-1890},
year={2021}
}
2. 先决条件
我们已经在Ubuntu 16.04和18.04中测试了该库,但在其他平台上编译应该也很容易。功能强大的计算机(例如 i7)将确保实时性能并提供更稳定、更准确的结果。
C++11 或 C++0x 编译器
我们使用 C++11 的新线程和计时功能。
穿山甲
我们使用Pangolin来实现可视化和用户界面。下载和安装说明请访问:https://github.com/stevenlovegrove/Pangolin。
OpenCV
我们使用OpenCV来处理图像和特征。下载和安装说明可在http://opencv.org找到。至少需要 3.0 版本。已使用 OpenCV 3.2.0 和 4.4.0 进行测试。
特征3
g2o 所需(见下文)。下载和安装说明请访问:http://eigen.tuxfamily.org。至少需要 3.1.0 版本。
DBoW2 和 g2o(包含在第三方文件夹中)
我们使用修改版的DBoW2库进行位置识别,并使用g2o库进行非线性优化。这两个修改版库(均为 BSD 版本)均包含在_Thirdparty_文件夹中。
Python
用于计算轨迹与地面实况的对齐情况。需要 Numpy 模块。
- (win)http://www.python.org/downloads/windows
- (deb)
sudo apt install libpython2.7-dev
- (mac) 预装 osx
ROS(可选)
我们提供了一些使用 ROS 处理单目、单目惯性、立体、立体惯性或 RGB-D 相机输入的示例。这些示例的构建是可选的。这些示例已在 Ubuntu 18.04 系统上使用 ROS Melodic 进行了测试。
3.构建ORB-SLAM3库和 示例
克隆存储库:
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
我们提供了一个脚本build.sh
来构建_第三方_库和_ORB-SLAM3_。请确保您已安装所有必需的依赖项(请参阅第 2 节)。执行以下命令:
cd ORB_SLAM3
chmod +x build.sh
./build.sh
这将 在_lib文件夹中创建_libORB_SLAM3.so ,并在_Examples_文件夹中创建可执行文件。
4. 使用相机运行 ORB-SLAM3
目录Examples
包含几个演示程序和校准文件,用于在所有传感器配置下运行 ORB-SLAM3,并搭载英特尔 Realsense 摄像头 T265 和 D435i。使 用您自己的摄像头所需的步骤如下:
-
校准相机跟随
Calibration_Tutorial.pdf
并写入校准文件your_camera.yaml
-
修改提供的演示之一以适合您的特定相机型号,然后构建它
-
使用 USB3 或适当的接口将相机连接到计算机
-
运行 ORB-SLAM3。例如,对于我们的 D435i 相机,我们将执行:
./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml
5. EuRoC 示例
EuRoC 数据集由两台针孔摄像机和一个惯性传感器记录。我们提供了一个示例脚本,用于在所有传感器配置下启动 EuRoC 序列。
-
从http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets下载序列(ASL 格式)
-
打开项目根目录中的脚本“euroc_examples.sh”。将pathDatasetEuroc变量更改为指向数据集解压后的目录。