这篇文章提出了 ORB-SLAM,一个基于特征的单目SLAM系统,这个系统在室内和室外同样适用。该系统对严重的运动杂波(motion clutter)很稳健,允许宽基线闭环和重定位,并且包含了全自动的初始化。基于近些年的优秀的算法,我们重新设计了一个新的系统:他对所有的任务都使用了相同的特征包括跟踪、映射、重定位和循环闭环。一种选取重建过程中点和关键帧的策略有着出色的稳健性,并且生成紧凑和可以跟踪的地图。我们对最流行的27个数据集进行了详尽的评估,ORB-SLAM在单目方法中达到了史无前例的性能。
Bundle adjustment(BA) 是提供精确相机位置估计和稀疏几何重建的的著名方法,在很长时间内,这个方法对即时的系统来说是不可行的。视觉SLAM的目标是在重建环境的时候估计相机的轨迹。现在,我们知道要以非禁止的计算成本获得准确的结果,实时的SLAM算法必须为BA提供一下的条件:
PATM 技术能够在小规模的操作上提供对每个帧简单但高效的关键帧选取,特征匹配,三角点测量和相机定位,以及跟踪失败之后的重定位。然鹅,有几个因素限制了它的应用:缺少闭环和对遮挡的充分处理,对重定位的观点具有低不变性,以及需要人工干预地图。
文中提出的单目SLAM系统有如下的主要贡献:
文中方法的相机定位精度比目前直接用像素强度的方法更加精确。
由图片到图片的匹配在大环境中比地图到地图的匹配更容易扩展,DBoW~2~ 的用到了 BRIEF 描述符和 FAST 特征值,虽然它们的速度相比较很快,但是没有旋转和尺度不变性。作者提出了 ORB 特征,一种具有旋转和尺度不变性的二元特征,来做图片匹配和闭环检测。
单目SLAM需要一个地图初始化的过程,因为深度信息不能从一张图片中获取。一个方法是在已知的结构中做初始化,在这种滤波的方法中,初始化的点的精度特别低,但是在后续的操作中会变高。一些半稠密的方法就是先用高方差的随机值来初始化这些像素点的深度。还有一种方案是假设初始化的场景是平面的,使用 homography 或 five-point algorithm 计算 essential matrix。这两种方案在低视差下约束性不好,并且当平面中所有的点更靠近摄像机中心时,就会遇到 twofold ambiguity solution。在非平面的场景中,可以通过 eight-point algorithm计算基本矩阵。
文中提出了一种启发式(heuristic)方法来选择模型,会对平面场景采用 homography 和对非平面的场景采用 fundamental matrix 。
单目SLAM由两种方案,一种是对全部的帧进行估计特征位置和相机姿态,这个方案计算量大,冗余度高还容易累计误差。还有一个方案是 keyframe-based 方法,仅使用关键帧可以允许使用开销大但是精确的BA优化,因为映射过程和帧率没有关系。
一个主要的思想就是映射和跟踪使用的特征会用于地点识别来实现帧速率重定位和闭环检测(frame-rate relocalization and loop detection)。这个方案要求提取每张图片的时间小于33ms,并且为了获取普适的位置识别能力,要求位置不变性(rotation invariance)。
ORB 特征可以进行快速计算和匹配,同时具有视点不变性。利用ORB特征可以提升BA的精度。
tracking, local mapping, and loop closing 这三个进程是并行的。
Tracking 负责定位每个帧的相机位置和决定何时插入新的关键帧,首先对上一帧进行特征匹配同时使用BA估计相机的位姿。如果 tracking 丢失,位置识别模块将进行全局的重定位。一旦对相机位姿和特征匹配有了初始的估计,就会使用由系统维护的关键帧的 covisibility graph 来检索局部可见地图(local visible map)。然后,与局部地图点的匹配将使用重投影(reprojection)来检索,相机位姿也会针对所有的匹配来重新优化。最后,跟踪线程还需要决定是否需要插入新的关键帧。
Local mapping 产生新的关键帧和执行局部 BA 来在相机位姿周围实现最佳重建。通过covisibility graph 已建立连接的关键帧来检索在每个新的关键帧内未匹配的ORB,以对新点进行三角测量。在创建之后,通过结合之前tracking中的信息,会剔除一些低质量的点。Local mapping 也负责剔除的冗余的关键帧。
Loop closing 检测新的关键帧的环, 如果检测到了环,会计算一个相似变换?,然后,环的两侧会被对齐然后复制的点被融合,最后执行相似性约束的位姿估计实现全局一致性。
每个点云(map point)\(p_i\)包括:
每个关键帧 \(K_i\) 包括:
点云和关键帧的产生较为宽松,但是剔除冗余的机制将会很严格。
Covisibility Graph:顶点是一个关键帧,顶点之间的权重就是两个帧中相同点的数目,权重的大小反映了关键帧之间的相似度。
Essential Graph:Covisibility Graph 中的边可能十分密集,Essential Graph 保留了所有的顶点,但是削减了edges。
系统嵌入了a bags of words place recognition 模块 ,执行闭环检测和重定位的任务。
首先离线创建了 vocabulary (字典),系统会逐步构建一个包括反转索引的数据库,这个反转索引包含了字典中的每个 visual word ,其中包含已经检查过的关键帧,这样数据库的查询变得十分高效。
使用 covisibility graph 对相邻帧进行组合。
计算两个集合ORB特征关联性的时候,通过字典树进行了暴力匹配。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System 笔记(一)
原文:https://www.cnblogs.com/punnpkin/p/10142958.html