ORB-SLAM

来自SlamCN
跳转至: 导航搜索

简介

ORB-SLAM是西班牙Zaragoza大学的Raul Mur-Artal编写的视觉SLAM系统。他的论文“ORB-SLAM: a versatile and accurate monocular SLAM system"发表在2015年的IEEE Trans. on Robotics上。开源代码包括前期的ORB-SLAM[1]和后期的ORB-SLAM2[2]。第一个版本主要用于单目SLAM,而第二个版本支持单目、双目和RGBD三种接口。

特点

ORB-SLAM是一个完整的SLAM系统,包括视觉里程计、跟踪、回环检测。它是一种完全基于稀疏特征点的单目SLAM系统,其核心是使用ORB(Orinted FAST and BRIEF)作为整个视觉SLAM中的核心特征。具体体现在两个方面:

  • 提取和跟踪的特征点使用ORB。ORB特征的提取过程非常快,适合用于实时性强的系统。
  • 回环检测使用词袋模型,其字典是一个大型的ORB字典。
  • 接口丰富,支持单目、双目、RGBD多种传感器输入,编译时ROS可选,使得其应用十分轻便。代价是为了支持各种接口,代码逻辑稍为复杂。
  • 在PC机以30ms/帧的速度进行实时计算,但在嵌入式平台上表现不佳。

原理

ORB-SLAM整体流程如下图所示。

Orbslam-workflow.png

它主要有三个线程组成:跟踪、Local Mapping(又称小图)、Loop Closing(又称大图)。

跟踪

跟踪线程相当于一个视觉里程计,流程如下:

  • 首先,对原始图像提取ORB特征并计算描述子。
  • 根据特征描述,在图像间进行特征匹配。
  • 根据匹配特征点估计相机运动。
  • 根据关键帧判别准则,判断当前帧是否为关键帧。

相比于多数视觉SLAM中利用帧间运动大小来取关键帧的做法,ORB_SLAM的关键帧判别准则较为复杂。

移植和改进

针对ORB-SLAM,目前已有多位研究者进行了移植和改进,包括:

  • 手机平台的ORB-SLAM
  • 二进制字典文件