Authors: Raul Mur-Artal, Juan D. Tardos, J. M. M. Montiel and Dorian Galvez-Lopez (DBoW2)
ORB-SLAM是15年出的比较完备的visual-based SLAM算法, 支持 Monocular, Stereo 和 RGB-D cameras。ORB指的是一种旋转不变性特征,整个算法均是基于ORB特征实现的,不同于基于稠密或半稠密地图的SLAM,ORB-SLAM是一个基于特征点地图的SLAM。最新的ORB-SLAM的进展是基于ORB-SLAM的关键帧做了半稠密场景重建,新的研究成果可持续关注下面的项目主页:http://webdiis.unizar.es/~raulmur/orbslam/
以下为英文介绍:
ORB-SLAM2 is a real-time SLAM library for Monocular, Stereo and RGB-D cameras that computes the camera trajectory and a sparse 3D reconstruction (in the stereo and RGB-D case with true scale). It is able to detect loops and relocalize the camera in real time. We provide examples to run the SLAM system in the KITTI dataset as stereo or monocular, and in the TUM dataset as RGB-D or monocular. We also provide a ROS node to process live monocular or RGB-D streams. The library can be compiled without ROS. ORB-SLAM2 provides a GUI to change between a SLAM Mode and Localization Mode, see section 9 of this document.
使用单目Monocular ORB-SLAM 的小伙伴请注意: 单目ORB-SLAM2 与 单目 ORB-SLAM 是相似的. 但是,在ORB-SLAM2 中 we apply a full bundle adjustment after a loop closure, ORB特征的抽取也稍有不同 (trying to improve the dispersion on the image) 而且跟踪也更加快一点. ORB-SLAM2 的GUI 界面也为你提供了上面所提到的新特色和一个reset按钮。我们推荐你使用新的软件,即ORB-SLAM2)
发表的相关文章:
[1] Raúl Mur-Artal, J. M. M. Montiel and Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System. IEEE Transactions on Robotics, vol. 31, no. 5, pp. 1147-1163, 2015. (2015 IEEE Transactions on Robotics Best Paper Award). 获取PDF.
[2] Dorian Gálvez-López and Juan D. Tardós. Bags of Binary Words for Fast Place Recognition in Image Sequences. IEEE Transactions on Robotics, vol. 28, no. 5, pp. 1188-1197, 2012. 获取 PDF
我们在Ubuntu 12.04 and 14.04上成功测试了ORB-SLAM, 但是在其他的操作系统平台上应该也能够很轻易的成功编译。一台强大的电脑 (e.g. i7) 将能够保证实时运行和更加稳定与精确的结果。
我们使用了C++11的线程和时间控制函数,所以必须要用支持C++ 11.0的编译器才可以。
我们使用 Pangolin 构建可视化用户界面. 下载和安装Pangolin 的方法可以看这儿: https://github.com/stevenlovegrove/Pangolin.
我们使用OpenCVC处理图像以及特征. 下载和安装Pangolin 的方法可以看这儿: http://opencv.org. 至少需要 2.4.3 的版本. 测试用 OpenCV 2.4.11.
Required by g2o (see below). 下载和安装Eigen3的方法可以看这儿: http://eigen.tuxfamily.org. Required at least 3.1.0.
BLAS 和LAPACK 库被 g2o 所使用 . 在Ubuntu 上如下安装:
sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev
我们使用修改版的 DBoW2 库进行位置识别 ,使用 g2o 库进行非线性优化. 这两个修改版的库被放在第三方文件夹内.
我们提供了一些例子去处理单目的camera,双目的camera或者RGB-D camera来使用ROS。 编译这些例子是可选的. 如果你要使用 ROS, a version Hydro or newer is needed.
从Github上拷贝ORB_SLAM2:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
我们提供了一个脚本 build.sh
来编译 第三方库 和 ORB-SLAM2. 请确认你已经按照上面的介绍安装了所有必需的依赖项 . 在命令行执行以下代码:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
这一步将会创建 libORB_SLAM2.so 在lib
文件夹 和可执行文件 mono_tum, mono_kitti, rgbd_tum, stereo_kitti 在 Examples
文件夹.
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE
你需要创建一个配置文件来校正你的摄像机。可以参照我们为TUM 和 KITTI 数据集提供的例子在monocular, stereo and RGB-D cameras情况下. 我们使用OpenCV的摄像机校正模型。 See the examples to learn how to create a program that makes use of the ORB-SLAM2 library and how to pass images to the SLAM system. Stereo input must be synchronized and rectified. RGB-D input must be synchronized and depth registered.
你可以使用GUI在SLAM 和 Localization 模式下自由切换
这是默认模式. 此模式下,系统有三个线程并行工作: Tracking, Local Mapping and Loop Closing. 系统不断定位相机,构建新的地图然后试图闭合环形路径。
当你有一个比较好的地图的时候,你可以使用此模式。在这种模式下,局部地图构建以及环路闭合将不起作用。 系统在你提供的地图上定位相机 (which is no longer updated), using relocalization if needed.