ORB-SLAM-Mono论文要点总结(一)——系统概述

ORB-SLAM论文要点总结

一种基于特征识别的通用且精确单目SLAM系统

一、简介

文章基于PTAM的主要思想、Place recognition、scale-aware loop closing和大场景共视图设计ORB单目SLAM系统。

创新点:

  1. 所有任务均使用相同的特征(ORB):追踪,建图,重定位和回环检测。这使得系统更高效、简单和可靠;
  2. 在大环境可实时运行。基于共视图可聚焦于局部共视区域进行跟踪和建图;
  3. 基于文章所称Essential Graph的位姿图优化进行实时的闭环。其通过旋转树、回路闭合连接、共视图的强边建立;
  4. 实时的相机重定位对可视点和光照具有不变性。跟踪丢失时可基于此恢复,也能增强地图的复用;
  5. 基于所选模型提出一种新的自动且鲁棒的初始化过程,可建立一个初始平面地图和非平面场景地图;
  6. 一个最优的方法进行地图点和关键帧的筛选,其可提高跟踪的鲁棒性,增强系统长期的可工作性。

二、相关工作

A 位置识别

论文13认为图像到图像的匹配,在大环境下,比地图到地图或者图像到地图的方法尺度性更好。论文5第一次使用词袋,其可基于BRIEF描述子和FAST特征检测得到。尽管系统运行效率和鲁棒性比较高,但是由于BRIEF不具有旋转不变性和尺度不变性,所以系统只能在平坦轨迹中运行,且回环检测只能在相似视角中进行。文章重新基于共视图对位置识别方面进行了改进,且检索数据库后返回几个假设而不是像之前一样返回最优结果。

B 地图初始化

  • 跟踪初始已知图像结构;
  • 采用逆深度参数化后的点聚集到真实点;
  • 基于双视角的初始化(本文中采用)。

C 单目SLAM

  • 滤波法

每帧图像都被滤波然后去估计地图点位置和相机位姿。其处理含有极少有用信息的连续帧时浪费资源,且模型的线性化误差会累积。

  • 关键帧+优化

只使用所选择的关键帧进行建图,可采用多余的资源进行BA优化,建图不与帧速率绑定。在相同的计算资源下,优化方法比滤波方法精度更高。

最具代表性的基于关键帧的SLAM是PTAM。其是第一个介绍将跟踪和建图分割开,并在并行的线程里进行并在小环境增强现实中成功验证的系统。地图点与局部校正匹配的FAST角点一致,这使得这些点只用于跟踪而不能用于位置识别(?)。而且,PTAM不检测大的回路,其重定位只是基于关键帧缩略图进行校正,此是为了屈从可视点的低不变性。

论文6提出了一个大尺度的单目SLAM系统,其前端基于GPU上的光流法实现,以及FAST特征点匹配和只有运动的BA优化,后端采用相似约束下的位姿图优化(7DOF),此能够校正单目的尺度漂移。本文在Essential Graph中借鉴了7-DOF优化的思想。

论文7采用PTAM的前端,但是只在基于共视图恢复出的局部地图中进行跟踪。其提出一种双窗口优化后端,小窗连续进行BA,大窗口进行位姿图优化。但是,只有当外窗口能够包含回路时才可进行有效的回路闭合。本文借鉴了基于共视图构建局部地图和位姿图的思路,并将其应用在了重新设计的前端和后端中。本文另一个不同之处是未使用具体的特征点进行回环检测(SURF),而是在相同的跟踪和建图特征点进行位置识别,得到了一个图像帧速率级别的重定位和回环检测。

论文33提出的CD-SLAM,是一个完整的SLAM系统,包含回环、重定位、大尺度工作、适配动态环境。但是,地图初始化未提及。

论文34使用ORB特征进行跟踪,滑动窗口进行BA后端优化。但是未包含全局重定位、回环,也没有复用地图。该系统也使用相机和地面间的已知距离去限制单目尺度漂移。

论文25在我们提交草稿时刚出版,同样使用ORB进行跟踪、建图、以及回环检测。但是选择的BRIEF(不具备旋转不变性,存在旋转时匹配会错误)描述子限制只能在平坦轨迹运动。该系统只跟踪上之前关键帧的特征点,因此再访问的时候不会复用地图,且存在增长无边界的问题。在VIII-E部分和本文进行了对比。

论文10是LSD-SLAM,其能够建立大尺度半稠密地图,使用直接法(比如直接基于像素强度进行优化)而不是基于特征点的BA。该方法令人印象深刻之处在于其能够实时工作,且不使用GPU加速,可建立半稠密地图,比基于特征点的SLAM建立的稀疏地图更适合于机器人。然而,该方法仍然需要特征进行回环检测,他们相机的定位精度明显低于本文的系统和PTAM,可见VIII-B。该杰出的方法在IX-B中也进行了讨论。

论文22是SVO,介于直接法和基于特征的方法间的半直接法。不要求每帧图片都提取特征点,其在四旋翼上可以基于较高的帧速率得到较为满意的结果。但是,不包含回环检测,当前的实现主要基于俯瞰相机。

最后,几乎所有较为前沿的视觉SLAM工作都认为在所有图像帧运行所有特征点的BA是不可行的。论文32表明最有效率的方法是在只保持必要关键帧的同时,保留尽可能多的特征点。PTAM在插入关键帧时就非常小心,为了避免计算复杂度的快速增长。这种较为严苛的关键帧插入策略在未知且复杂的环境中容易导致跟踪失败。本文作者提出的适者生存策略,在困难复杂场景下通过尽可能快速的插入关键帧实现空前的鲁棒性,然后移除过去时刻多余的关键帧去避免额外的资源消耗。

三、系统概览

A 特征选择

本文系统设计的主要思想是:为了进行图像帧速率级的重定位和回环检测,建图和跟踪使用的相同的特征点同时被用来进行位置识别。此可令系统更加高效,避免如之前工作[6,7]中插入基于附近SLAM特征点识别的特征点深度。本系统要求每张图像的特征提取时间不超过33ms,基于此可排除约300ms的SIFT,约200ms的SURF, 约100ms的A-KAZE。为了可进行位置识别,系统要求旋转不变性,此排除了BRIEF和LDB描述子。

本文选择ORB,其是旋转多尺度Fast角点检测的256位描述子。对于可视点不仅具有不变性,而且可以很快的进行计算和匹配。这使得在宽基线下可进行匹配,并提高BA的精度。在位置识别中,ORB也表现出了良好的性能[11]。尽管我们使用的是ORB,但是本文提出的技术方案不对特征点的提取和描述子进行限制。

B 三个线程:跟踪、局部建图和回环

系统如上所示,同步运行三个线程:跟踪,局部建图,和回环。
ORB-SLAM-Mono论文要点总结(一)——系统概述_第1张图片
跟踪线程负责相机每帧图像的定位,以及决定何时插入一个新的关键帧。系统首先进行与上一帧图像的初始特征点匹配,然后使用只运动的BA优化位姿。若跟踪丢失(比如:堵塞和剧烈移动),则位置识别模块进行全局重定位。一旦完成相机位姿的初始估计和特征点匹配,则基于系统维持的关键帧得到的共视图可建立一个局部的可视地图。接着,基于重投影搜索局部地图路标点的匹配,而且基于所有的匹配可再次优化相机的位姿。最后,跟踪线程决定是否新的关键帧需要被插入。在第V部分详细介绍了跟踪步骤。创建初始地图的新方法在第IV部分进行介绍。

局部建图线程处理新的关键帧,并进行局部BA实现相机位姿环境的最优重建。在共视图连接的关键帧中搜索新关键帧里未匹配ORB特征的新对应关系,然后基于此三角化新的路标点。建立新的路标点后,基于跟踪过程中收集的信息,应用一个筛选策略去保持高质量的路标点。此局部地图也负责筛选多余的关键帧。在第VI部分中详细介绍所有的局部地图步骤。
回环线程在对每个新的关键帧均进行回路搜索。若一个回路被检测到,则计算回路里表示累计漂移的相似变换。接着,对齐回路两边,而且融合重复点。最后,基于相似性约束进行位姿图优化,以实现全局一致性。主要创新之处在于基于Essential Graph的优化,这是一个共视图的稀疏子图,在第III-D进行详细介绍。回路检测和校正步骤在第VII详细说明。

作者使用g2o中的L-M算法进行所有的优化。在附录里,作者列出了误差项,代价函数,以及每个优化过程涉及的变量。

C 路标点, 关键帧,及其他部分

每个路标点 p i p_i pi都按照下面格式存储:

  1. 路标点在世界坐标系下的3-D位置坐标 X ω , i X_{\omega,i} Xω,i
  2. 视线方向向量 n i n_i ni,其是所有视线方向向量的平均单位向量(射线连接路标点和观测它的关键帧光心);
  3. 代表ORB描述子的向量 D i D_i Di,其是相对可视关键帧里的其他所有相关描述子汉明距离最小的ORB描述子;
  4. 根据ORB特征的尺度不变性约束,可观测路标点最大距离 d m a x d_{max} dmax和最小距离 d m i n d_{min} dmin;

每个关键帧 K i K_i Ki存储下面信息:

  1. 相机位姿矩阵 T i w T_{iw} Tiw,表示世界系到相机系的变换;
  2. 相机内参,包括焦距和主点坐标;
  3. 关键帧里提取的所有ORB特征,不管与路标点是否关联。若提供了相机的畸变模型,则ORB特征的坐标是无畸变的。

路标点和关键帧的创建过程较为宽松,与此同时一个较为亟需的筛选策略负责检测冗余的关键帧、错误的匹配以及未跟踪到的路标点。尽管长期工作时对同一环境的持续访问下地图的大小是有限的,但是这使得探索过程中的地图扩展更加灵活,且能够促进恶劣环境(比如:旋转和快速移动)下的跟踪鲁棒性。此外,本文的地图与PTAM相比,由于包含的路标点更少,所以地图包含的外点也很少。路标点和关键帧的筛选步骤在第VI-B和VI-E中详细叙述。

D 共视图和重要图

如论文[7]中的间接权重图,关键帧间的共视信息对于系统中的几个任务都非常有用。每个节点都是一个关键帧,若两个关键帧存在共享的路标点超过15个,则两帧间存在一条边,令该边上的共视路标点数量为边的权重 θ \theta θ

为了对一个回路进行校正,需要进行位姿图优化,将回路闭合的误差沿着图分散。为了不包含共视图提供的可能非常稠密的所有边,作者建立了一个保持所有节点(关键帧),但是包含更少的边,同时为了保持精度仍旧保留了一个较强的网络的重要图(Essential Graph)。该系统增量式的建立起始于初始关键帧的旋转树,其提供了一个连接起来的包含最少数量边共视图的子图。当一个新的关键帧插入时,其被包含于旋转树中,并和与其共享观测的路标点数量最多的帧相连接。当关键帧被筛选策略删除时,同时系统更新受此关键帧影响的连接。重要图包含旋转树,源于高共视的共视图边子序列( θ m i n \theta_{min} θmin=100),回路闭合边,一起组成了一个相机的强大网络。共视图、旋转树和连接的重要图如下所示。
ORB-SLAM-Mono论文要点总结(一)——系统概述_第2张图片
如第VIII-E中的实验所见,进行此重要位姿图优化时,结果要好于额外只做全局BA优化提升的结果精度。重要图的效率和权重 θ m i n \theta_{min} θmin的影响见第VIII-E的末尾。
实验中结果表明:

  • 全局BA优化收敛慢,迭代100次后的精度依然较差;
  • 重要图优化收敛速度快,且精度更高;
  • 共视路标点数量/权重 θ m i n \theta_{min} θmin增大对结果的精度影响不大,但是减小了边的数量,有助于减小耗费的时间;
  • 在位姿图优化之后再进行一次额外的BA可稍微提高结果精度,当然也会耗费了些资源和时间。
    ORB-SLAM-Mono论文要点总结(一)——系统概述_第3张图片

E 词袋位置识别

系统包含一个基于DBoW2的词袋位置识别模块,进行回环检测和重定位。视觉单词就是描述子空间的离散,也就是视觉词典。该词典基于大量图像中的ORB描述子离线创建。如果图像足够多,相同的词典可以在不同环境中使用,并可以得到较好的性能[11]。系统建立的视觉词典中的单词数据库随着可视关键帧的增加而增加,因此数据库查询效率比较高。筛选步骤中剔除关键帧时同时对数据库进行更新。

在数据库查询时,由于在关键帧间存在视觉重叠部分,因此不存在一个评分很高的单独关键帧。原始的DBoW2将重叠考虑在内了,其会将短期闭合的图像的评分加起来?。这不包括哪些不同时间插入的同一位置的可视关键帧。相反,将哪些在共视图里连接的关键帧分组。另外,数据库返回评分高于75%最好评分的所有关键帧匹配。

另一个对特征匹配基于词袋进行表示的优点见论文[5]。当需要对两组ORB特征的间的对应性进行计算时,可以将暴力匹配约束在那些在一个确定的水平(选择2/6?)上词典树里的相同节点的那些特征,从而提高搜索速度。在三角化新点搜索匹配点、回环检测和重定位时,使用该策略。也可以基于方位一致性改进对应性(细节见[11]),这能够剔除外点并保证所有匹配对应位置的连续选择。

你可能感兴趣的:(SLAM)