ORB-SLAM1 论文阅读

摘要

这篇论文提出了ORB-SLAM,一个基于特征点的实时单目SLAM系统,可以运行在小型或大型、室内或室外环境。该SLAM系统在剧烈运动时有很好的鲁棒性,允许宽基线的闭环检测和重定位,同时可以全自动的对系统进行初始化。以近年来提出的优秀算法为基础,该系统拥有一个SLAM系统所要求的所有功能:跟踪、建图、重定位和闭环检测。该系统采用了一种优胜劣汰的策略来选择重定位中的地图点和关键帧,这种方法带来了极好的鲁棒性,并且生成了紧凑和可跟踪的地图——当且仅当场景内容改变时才会生长和更新,并且可以一直运作。在测试阶段,作者从最流行的数据集中采取了27个序列对该系统进行了评估,相对于其他单目SLAM方法,ORB-SLAM的表现相当出色,为了便于交流,作者还开源了源代码。

介绍

光束平差法(Bundle Adjustment)是一种广为人知的方法用来精确估计相机定位以及稀疏几何重建,提供了一种强大的匹配网络和良好的初始估计。很长一段时间以来这种方法被认为不能够用到实时应用中,比如视觉SLAM。视觉SLAM的目标是在重建周围环境的同时对相机的轨迹进行估计。如今我们知道要想在一个不大的计算开销中获得精确的结果,一个实时SLAM系统需要提供给BA如下几个方面:

  • 在被选择的帧(关键帧)的子集中选择对应的场景特征(地图点)观测。
  • 随着关键帧数量的增加,计算复杂度也随之增加,因此在选择关键帧时应该避免不必要的冗余。
  • 为了产生准确的结果,需要一个强大的关键帧和地图点的网络配置,这是说,一个良好传播的关键帧观测点集应该有显著的视察和大量的闭环匹配。
  • 用于非线性优化的关键帧位姿和地图点定位的初始估计。
  • 一个在探索过程中运行的局部地图,该地图优化的重点是实现可伸缩性。
  • 能够实行快速的全局优化(比如位姿图)用于实时的闭环操作。

第一个在实时系统中的BA应用是Mouragon提出的视觉里程计,随后Klein和Murray的开创性SLAM工作,也就是广为人知的平行跟踪和建图(PTAM)。这个算法虽然局限性小尺度运算,但是提供了简单而有效的方法用来进行关键帧选择、特征匹配、三角化、对于每一帧的相机定位和在跟踪失败之后的重定位。遗憾的是尺度因素极大的局限了该方法:缺少闭环检测和恰当的遮挡处理,对于重定位的观点不变性低并且需要人为引导地图生成。 在ORB-SLAM中我们以PTAM的主要思想为基础,利用G´alvez-L´opez和Tard´os的位置识别工作,Strasdat的尺度感知闭环技术以及对大规模操作的共视信息利用,从头设计了一种新颖的单目SLAM系统,其主要贡献是:

  • 对所有的任务都是用同样的特征:跟踪、建图、重定位和闭环检测。这让我们的系统更加的有效、简单和可靠。我们使用ORB特征点,该特征点可以在没有GPU的条件下实时运行,在改变的视角和光照条件下都提供了很好的稳定性。
  • 在大型环境下的实时操作。这得益于共视图的使用,跟踪和建图时重点关注局部的共视区域,和全局地图的大小独立。
  • 基于位姿图的优化(我们管这个叫本质图)可以实时闭环。本质图是通过生成树建立的,该生成树基于系统、闭环连接和共视图中较为显著的边组成。
  • 对视角和光照变化不敏感的实时相机重定位.这使得从跟踪失败的情况下恢复位姿和增强地图的复用性称为可能。
  • 一个新的基于模型的自动且鲁棒的初始化过程。该初始化过程可以在平面或非平面的场景中生成初始地图。
  • 一种优胜劣汰的策略对地图点和关键帧进行选择,遵从宽进严出的准则,这种方法增加了跟踪的鲁棒性,并且增强了长生命周期的操作因为冗余关键帧被剔除了。

我们对室内和室外环境的流行公共数据集进行了广泛的评估,包括手持场景、汽车驾驶场景和机器人场景中的图片序列。值得一提的是,我们用该方法实现了比现有技术更好的相机定位精度,该方法直接对像素的灰度进行优化,而不是特征重投影误差。我们在IX-B节中讨论了基于特征匹配的方法比直接法更加准确的原因。 闭环检测和重定位的方法在我们之前的工作中就已经提出,该系统的初步版本在论文【12】中已经给出。我们正家里初始化和本质图,并对所有的方法进行了完善,我们还详细描述了所有构建模块,并进行了详细的实验验证。 据我们所知,这是单目SLAM最完整,最可靠的解决方案,为了社区的利益,我们开源了源代码。演示视频和代码可以在我们的项目网页中找到。

相关工作

位置识别

在Williams的研究工作中,对比了几种位置识别的方法并且基于表现得出了结论,那就是图像到图像的匹配在大型环境中的规模更好,相较于图像到地图的匹配以及地图到地图的匹配。在这些方法的表现中,词袋技术,例如概率方法FAB-MAP,由于其高效率排在前面。DBoW2第一次使用由二进制单词组成的词袋,其中二进制单词由BRIEF描述子和非常高效的FAST特征检测组成。这减少了超过一个数量级的特征提取时间消耗,相较于SURF和SIFT特征检测,词袋方法快了太多。尽管这个系统被证实是非常高效和鲁棒的,但由于BRIEF没有旋转和尺度不变性,限制了系统在平面上的跟踪以及相似视角下的闭环检测。在我们先前的工作中,我们提出了一种基于DBoW2和ORB的词袋位置检测方法。ORB是一种二进制特征并且具有尺度和旋转不变性(在一个确定的范围内),带来了非常快速地检测以及很好的变视角情况下的鲁棒性。我们在四种不同的数据集中证明了这种检测方法的高召回率和鲁棒性,从10K图像的数据集中循环检索图像的时间小于39ms(包括特征提取的时间)。在这项工作中我们使用了一种改进的版本,使用共视信息并且返回几个可能的假设而不是只返回一个最佳匹配。

地图初始化

单目SLAM需要有一个创建初始地图的过程,因为单目图像中并不能恢复深度信息。一个解决这种问题的方法是最初跟踪一个已知的结构,在基于滤波的方法中,点的初始化可以通过逆深度参数化的方式在高度不确定的深度情况下完成,这种方法有希望在之后的过程中将地图点收敛到他们真实的位置。Engel等人最近的半稠密工作中,采用了一种类似的方法将像素的深度信息初始化为一个高方差的随机值。 来自两个视图的初始化方法要么假设局部场景是平面的,然后利用Faugeras等人的方法通过单应矩阵恢复相关的相机位姿,或者计算本质矩阵,在非平面或平面的场景中都可以,利用Nister提出的五点法,该方法需要处理多个解决方案。两种重建方法在低视差的情况时都没有很好的约束并且如果视景中的地图点都特别靠近相机的中心时会产生双重模糊解。另一方面如果一个非平面的场景出现视差时,可以通过八点法计算出一个唯一的基础矩阵,并且相关的相机位姿可以在没有模糊的条件下恢复。 我们在第四节展示了一个新的基于模型在平面场景下通过单应矩阵以及非平面场景下通过基础矩阵两种方法自动选择的方案。Torr等人提出了一种基于统计的方法去选择模型。在类似的原理下我们开发了一种启发式初始化算法,该算法将在接近退化条件时选择基础矩阵的风险考虑其中(平面、接近平面和低视差),当风险过高时我们选择单应矩阵。在平面情况下,从安全性考虑,如果最终的解有双重模糊性,我们就不初始化,因为可能选择一个错误的解。我们延迟初始化直到该方法在显著视差的情况下计算出一个唯一的解。