ORB-SLAM2
简介
介绍
-
ORB-SLAM是西班牙Zaragoza大学的Raul Mur-Artal编写的视觉SLAM系统。他的论文“ORB-SLAM: a versatile andaccurate monocular SLAM system"发表在2015年的IEEE Trans. on Robotics上。开源代码包括前期的ORB-SLAM和后期的ORB-SLAM2。第一个版本主要用于单目SLAM,而第二个版本支持单目、双目和RGBD三种接口。
特点
-
ORB-SLAM是一个完整的SLAM系统,包括视觉里程计、跟踪、回环检测。它是一种完全基于稀疏特征点的单目SLAM系统,其核心是使用ORB(Orinted FAST and BRIEF)作为整个视觉SLAM中的核心特征。具体体现在几个方面:
- 提取和跟踪的特征点使用ORB。ORB特征的提取过程非常快,适合用于实时性强的系统。
- 回环检测使用词袋模型,其字典是一个大型的ORB字典。
- 接口丰富,支持单目、双目、RGBD多种传感器输入,编译时ROS可选,使得其应用十分轻便。代价是为了支持各种接 口,代码逻辑稍为复杂。
- 在PC机以30ms/帧的速度进行实时计算,但在嵌入式平台上表现不佳。
原理
- 它主要有三个线程组成:跟踪、Local Mapping(又称小图)、Loop Closing(又称大图)。
跟踪
-
跟踪线程相当于一个视觉里程计,流程如下:
- 首先,对原始图像提取ORB特征并计算描述子。
- 根据特征描述,在图像间进行特征匹配。
- 根据匹配特征点估计相机运动。
- 根据关键帧判别准则,判断当前帧是否为关键帧。
- 相比于多数视觉SLAM中利用帧间运动大小来取关键帧的做法,ORB_SLAM的关键帧判别准则较为复杂。
安装[1]
| 库名 | 命令 |
|---|---|
| 依赖 | sudo apt-get update |
| git | sudo apt-get install git |
| cmake | sudo apt-get install cmake |
| Pangolin | sudo apt-get install libglew-dev libpython2.7-devgit clone https://github.com/stevenlovegrove/Pangolin.gitcd Pangolinmkdir build && cd buildcmake .. && make -j4 && sudo make install |
| OpenCV | sudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devcd opencv && mkdir build && cd buildcmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local ..&& make –j8 && sudo make install |
| Eigen3 | sudo apt-get install libeigen3-dev |
| ORB-SLAM2 | git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2$ cd ORB_SLAM2 && chmod +x build.sh && ./build.sh |
-
DBoW2是DBow库的改进版本,DBow库是一个开源的C++库,用于索引图像并将其转换为单词表示形式。
-
g2o是一个开源的C ++框架,用于优化基于图的非线性误差函数。
-
这两个库在ORB-SLAM2项目的第三方文件夹中
数据集[2]
| 数据集 | 介绍 |
|---|---|
| TUM | |
| KITTI | |
| EuRoC |
TUM
-
数据格式
-
associate.py:用于py2
python associate.py rgb.txt depth.txt >associate.txtpython associtate.py associate.txt groundtruth.txt>associate_with_groundtruth.txt
样例
- TUM:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM3.yaml data/rgbd_dataset_freiburg1_desk - KITTI:
./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
