您的位置:首页 > 其它

ORB-SLAM-2

2016-06-18 19:15 375 查看

ORB-SLAM算法

ORB-SLAM简介

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

安装ORB-SLAM的准备工作

我们在Ubuntu 12.04 and 14.04上成功测试了ORB-SLAM, 但是在其他的操作系统平台上应该也能够很轻易的成功编译。一台强大的电脑 (e.g. i7) 将能够保证实时运行和更加稳定与精确的结果。

C++11 or C++0x Compiler

我们使用了C++11的线程和时间控制函数,所以必须要用支持C++ 11.0的编译器才可以。

Pangolin

我们使用 Pangolin 构建可视化用户界面. 下载和安装Pangolin 的方法可以看这儿: https://github.com/stevenlovegrove/Pangolin.

OpenCV

我们使用OpenCVC处理图像以及特征. 下载和安装Pangolin 的方法可以看这儿: http://opencv.org. 至少需要 2.4.3 的版本. 测试用 OpenCV 2.4.11.

Eigen3

Required by g2o (see below). 下载和安装Eigen3的方法可以看这儿: http://eigen.tuxfamily.org. Required at least 3.1.0.

BLAS and LAPACK

BLAS 和LAPACK 库被 g2o 所使用 . 在Ubuntu 上如下安装:

sudo apt-get install libblas-dev
sudo apt-get install liblapack-dev


DBoW2 and g2o (Included in Thirdparty folder)

我们使用修改版的 DBoW2 库进行位置识别 ,使用 g2o 库进行非线性优化. 这两个修改版的库被放在第三方文件夹内.

ROS (可选的)

我们提供了一些例子去处理单目的camera,双目的camera或者RGB-D camera来使用ROS。 编译这些例子是可选的. 如果你要使用 ROS, a version Hydro or newer is needed.

编译 ORB-SLAM2 库以及 TUM/KITTI 例子

从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
文件夹.

Monocular 实例

TUM 数据集

Download a sequence from http://vision.in.tum.de/data/datasets/rgbd-dataset/download and uncompress it.

Execute the following command. Change TUMX.yaml to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2 and freiburg3 sequences respectively. Change PATH_TO_SEQUENCE_FOLDERto the uncompressed sequence folder.

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER


KITTI 数据集

Download the dataset (grayscale images) from http://www.cvlibs.net/datasets/kitti/eval_odometry.php

Execute the following command. Change KITTIX.yamlby KITTI00-02.yaml, KITTI03.yaml or KITTI04-12.yaml for sequence 0 to 2, 3, and 4 to 12 respectively. Change PATH_TO_DATASET_FOLDER to the uncompressed dataset folder. Change SEQUENCE_NUMBER to 00, 01, 02,.., 11.

./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER


Stereo 实例

KITTI 数据集

Download the dataset (grayscale images) from http://www.cvlibs.net/datasets/kitti/eval_odometry.php

Execute the following command. Change KITTIX.yamlto KITTI00-02.yaml, KITTI03.yaml or KITTI04-12.yaml for sequence 0 to 2, 3, and 4 to 12 respectively. Change PATH_TO_DATASET_FOLDER to the uncompressed dataset folder. Change SEQUENCE_NUMBER to 00, 01, 02,.., 11.

./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER


RGB-D 实例

TUM 数据集

Download a sequence from http://vision.in.tum.de/data/datasets/rgbd-dataset/download and uncompress it.

Associate RGB images and depth images using the python script associate.py. We already provide associations for some of the sequences in Examples/RGB-D/associations/. You can generate your own associations file executing:

python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt

Execute the following command. Change TUMX.yaml to TUM1.yaml,TUM2.yaml or TUM3.yaml for freiburg1, freiburg2 and freiburg3 sequences respectively. Change PATH_TO_SEQUENCE_FOLDERto the uncompressed sequence folder. Change ASSOCIATIONS_FILE to the path to the corresponding associations file.

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE


ROS 实例

处理你自己的实例

你需要创建一个配置文件来校正你的摄像机。可以参照我们为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.

SLAM 和 Localization 模式

你可以使用GUI在SLAM 和 Localization 模式下自由切换

SLAM 模式

这是默认模式. 此模式下,系统有三个线程并行工作: Tracking, Local Mapping and Loop Closing. 系统不断定位相机,构建新的地图然后试图闭合环形路径。

Localization 模式

当你有一个比较好的地图的时候,你可以使用此模式。在这种模式下,局部地图构建以及环路闭合将不起作用。 系统在你提供的地图上定位相机 (which is no longer updated), using relocalization if needed.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: