ORB-SLAM: a Versatile and Accurate Monocular SLAM System 翻译

摘要-本文提出了基于特征的可实时运行的单目SLAM系统-ORB-SLAM,在小的,大的,室内和室外环境中运行。本系统对严重的运动杂动是鲁棒的,允许宽基线的回环检测和重定位,包括完全的自动初始化。基于近年的优秀算法,我们从头开始设计一个新颖的系统,该系统对于所有的SLAM任务使用相同的特征算法:这些任务包括:跟踪、建图、重定位和回环检测。已有的最合适的策略是选择点和关键帧的重建来得到优秀的鲁棒性和生成一个紧凑的和可跟踪的地图,该地图只有场景发生变化才会改变,且允许lifelong 操作。本文提出了详尽的评估,在27个序列中,来自于最常用的数据集。ORB-SLAM获得了相对于其他当前的单目系统前所未有的更好的性能。

1、介绍

BA是众所周知的能够提供精确的相机位姿估计和一个稀疏的几何重建,在给定一个强的匹配网络和一个好的初始位姿的前提下。在很长一段时间内,本方法被认为是难以用于实时应用比如视觉SLAM算法中。视觉SLAM目标是在估计相机轨迹的同时对环境进行重建。如今,我们知道获得精确的结果以一个非限制性的计算成本,一个实时的SLAM算法不得不提供具有如下的BA:

a.选定帧(关键帧)子集中场景特征(地图点)的对应观察。

b.随着关键帧的增加,整体复杂度也在增加,关键帧的选择应该避免不必要的冗余。

c.关键帧和特征点的一个强的网络配置会得到一个精确的结果,也就是,一组具有显著视差的关键帧观测点和有大量的闭环匹配。

d.关键帧和点位置的初始估计用于非线性优化。

e.探索中的局部地图,重点是优化以实现可扩展性。

f.能够执行全局优化来实时闭环。

第一个实时的BA应用是视觉里程计,作者为Mouragon et. al。他们也是基于具有开创新的SLAM工作PTAM(parallel Tracking and mapping).本算法,仅限于小规模操作,提供了简单但是有效的算法,用于关键帧选择,特征匹配,三角化点,用于每一帧的相机跟踪,以及跟踪失败后的重定位。不幸的是,许多因素严重限制了他的应用:没有回环检测以及足够的场景处理,重定位视角的低不变性以及地图引导需要人工干预。

本文基于PTAM的主要思想,位置识别工作基于Gálvez-López and Tardós的工作,尺度感知的回环检测Strasdat,用于大规模操作的共视信息的使用,为了从头开始设计ORB-SLAM,一个新颖的单目SLAM系统,整个思想贡献如下:

a、对于所有任务都使用相同的特征:跟踪任务,建图任务,重定位任务和回环检测任务。这使得系统更好的效率,更简单,以及更可靠。我们使用ORB特征在没有GPU的情况下可以实时运行,对视点和照明的变化提供良好的不变性;

b、在大环境中的实时操作。由于共视图的使用,跟踪和建图被聚焦在一个局部的共视区域,独立于全局地图的大小。

c、实时回环检测是基于称为本质图的位姿图优化。它的构建是基于由系统维持的生成树,回环检测链接,强边都来自于共视图。

d、实时相机重定位对视点和光照具有较强的不变性。这使得在跟踪失败后恢复以及增强地图的重用性。

e、一个新的基于模型选择的自动且鲁棒的初始过程,该模型选择允许创建一个平面和非平面场景的初始地图。

f、地图点和关键帧选择的最合适的方法是在加入的时候比较慷慨在剔除的时候比较严格。这一策略改善了跟踪的鲁棒性,增强了liefelong操作,因为冗余关键帧被丢弃。

本文在室内和室外环境中常用的公开数据集进行了广泛的评价,包括手持式的,车上的,机器人等序列。值得注意的是,我们获得的相机定位精度相比于其他任何直接法要好,直接法是对像素强度进行优化而不是重投影误差。在IX-B部分讨论了可以使基于特征的方法比直接法精度更高。

这里提出的回环检测和重定位算法是基于先前的工作。系统的初步版本在ORB-SLAM: Tracking and mapping recognizable features,” in MVIGRO Workshop at Robotics Science and Systems (RSS), Berkeley,USA, July 2014.中提出。当前文章增加了初始化方法,本质图,包含了所有很好的方法。

据我们所知,这是目前最完整,最可靠的单目解决方案。

2、相关工作

A、位置识别

基于Williams的调查,比较了一些位置识别的方法,并总结了基于相似性的技术,图像与图像的匹配,在大环境中相比地图与地图或者图像与地图的匹配更好。在基于相似性的方法中,bags of words技术,比如概率方法FAB-MAP,是较领先的因为他们高效。DBoW2首次被用于二进制字的词袋从BRIEF描述符以及FAST特征检测中获得。这在特征提取上减少了不止一个数量级的时间需求,相比于SURF和SIFT特征用于bags of words方法的话。尽管系统被证明是非常有效和鲁棒的,但是BRIEF的使用,既没有旋转,也没有尺度的不变性,将系统限制在平面内的轨迹,以及回环检测来自于相似的视角。在我们先前的工作中,我们提出了一个bag of words位置识别器基于具有ORB的DBoW2。ORB是二进制特征对旋转和尺度(在一定距离内)不变性,就得到一个非常快的识别器且对视角具有好的不变性。我们在四个不同的数据集中展示了识别器的高召回率和鲁棒性,时间要求小于39ms(包括特征提取)来获得一个回环的候选从一个10K的图像库中获取。在本文中我们使用一个改进的位置识别器版本,使用共视图信息,当询问数据库时,不是返回最佳的匹配而是返回几个假设。

B、地图初始化

单目SLAM要求一个创建一个初始地图的过程,因为深度不能从一个张图像中恢复。解决本问题的一个方法是最初跟踪一个已知的结构。在滤波方法的文章中,点可以被初始化使用逆深度参数化在深度不确定性中,这希望在后面收敛到他们的真实位置。最近的Engel等人的半稠密工作,使用一个相似的方法来初始化像素的深度到一个高协方差的随机值。

从两个视角的初始化方法要么局部假设场景为平面,然后使用Faugera等人的homography方法来恢复相对的相机位姿;或者计算一个本质矩阵,该矩阵模拟了平面和通用场景,使用Nister的五点法,这要求处理多种解决方法。这两种重建方法在低视差下都没有很好的约束,并且如果平面场景的所有点都靠近相机中心之一,则会出现双重模糊性解决方案;另一方面,如果看到具有视差的非平面场景,则可以使用八点算法[2]计算唯一的基本矩阵,并且可以无模糊地恢复相对相机姿态;

在第IV部分,本文提出了一种新的自动方法,基于模型选择,在平面上使用homography,非平面使用fundamental matrix。Torr提出了模型选择的统计方法。基于类似的理由,我们开发出了一种启发式的初始化方法,考虑到了在退化场景中选择了基础矩阵的风险(平面,接近平面以及低视察),也支持homography的选择。在平面例子中,为了安全操作的目的,如果结果有两重不确定性,我们就避免初始化,作为一个失败的解决方案。我们延迟初始化直到方法产生一个唯一的具有大视差的解决方案。

C、单目SLAM

单目SLAM最初是由滤波方法解决的。在该方法中,滤波处理每一帧来联合估计地图特征位置和相机位姿。它的缺点是在处理具有很少新信息的连续帧会浪费计算资源且线性化误差会累计。另一方面,基于关键帧的方法,仅使用选定的帧(关键帧)来估计地图,从而允许执行成本更高但更精确的束调整优化,因为地图与帧速率无关。Strasdat证明了基于关键帧的技术比滤波方法更精确在同样的计算条件下。

最具代表性的基于关键帧的SLAM系统是PTAM。它是第一篇文章引入了将相机轨迹和地图构建并行线程执行,证明是成功的,用于小型环境中的实时增强现实应用。最初的版本使用具有边特征的方法来改进,在跟踪过程中一个旋转估计步骤和一个更好的重定位方法。PTAM的地图点相对于由块相关匹配的FAST角点。这使得这些点只能用于跟踪而不能用于位置识别。实际上,PTAM没有检测回环检测,重新定位基于关键帧的低分辨率缩略图的相关性.对视点产生低不变性。

Strasdat提出了一个前端基于GPU的光流法的大规模单目SLAM系统,以及一个FAST特征匹配和只有BA的运动,以及一个后端滑动窗口的BA。回环检测由一个相似性约束(7DoF)的位姿图优化来解决,能够纠正在单目SLAM中的尺度漂移。从这篇文章,我们采用具有7DoF的位姿图优化的回环检测,并将它应用到在III-D节的本质图中。

Strasdat等人使用了PTAM的前端,但是执行跟踪只在一个共视图中的局部子图。他们提出双窗口优化的后端,其连续执行BA在内部的窗口中,位姿图在一个有限大小的外部窗口。然而,只有当外部窗口的大小足以包括整个循环时,回环检测才有效,在我们的系统中,我们利用基于共视图的局部地图的优秀思想来从共视图中构建位姿图,将他们应用到重新设计的前端和后端。另外不同是,使用具体的特征用于回环检测(SURF),我们执行位置识别基于相同的跟踪和建图特征,获得鲁棒的帧率重定位和回环检测。

Pirker等人提出了CD-SLAM,一个非常完整的系统包括了回环检测,重定位,大尺度的操作和努力用于动态环境。然而,地图初始化没有提到。缺乏公开的实现,不能让我们执行一个精度,鲁棒性和大规模能力的比较。

Song等人的视觉里程计使用ORB特征用于跟踪和一个临时的滑动窗口BA 后端。与我们系统比较,其不具有一般性,因为没有全局重定位,回环检测和不能重新使用地图。他们使用从相机到地面已知的距离来限制单目尺度的漂移。

Lim等人,在我们提交了初始版本之后,他们发布的工作,也使用了同样的特征用于跟踪,建图和回环检测。然而,BRIEF选择将系统限制在平面轨迹。他们的系统只从上一帧跟踪点,因此地图不能重新使用如果重新访问(类似于视觉里程计),且有无限增长的问题。我们在VIII-E部分将算法进行了比较。

Engel最近的工作,LSD-SLAM,能够构建大规模的半稠密地图,使用直接法而不是使用BA对特征进行优化。他们的结果也非常不错,因为系统能够实时运行,在没有GPU加速的情况下,构建半稠密地图,相比基于特征输出的稀疏 地图更具有潜力在机器人应用领域。然而,他们在回环检测和相机定位上精度相比我们的和PTAM的要低,在实验VIII-B中可见。

在直接法和特征法之间是半直接的SVO视觉里程计,作者Forster。在每一帧中不需要提取特征,他们能够以高频率获得不错的结果。然而,没有回环检测被执行,当前实现主要是下视的相机。

最后,我们想讨论关于关键帧的选择。所有在文献中的视觉SLAM工作都认同运行BA使用所有的点以及所有的帧都是不可行的。Strasdat的工作表明最有效的方法是尽可能保持足够多的点,同时保持非冗余的关键帧。PTAM方法是需要非常仔细插入关键帧来避免过度的计算增长。这个限制的关键帧插入策略让跟踪在这个硬探索条件下容易失败。我们的策略获得了前所未有的鲁棒性在比较困难的场景通过尽可能快速插入关键帧,随后移除荣誉的来避免额外的消耗。

3、系统概览

A、特征选择

在我们系统中主要的设计思想之一就是,建图和跟踪使用相同的特征,以及在位置识别执行帧率快的重定位以及回环检测。这使得系统有效且避免了像以前的工作中那样,从附近SLAM的特征中插入识别特征的深度。我们要求特征提取至少小于33ms每张图像,这就排除了SIFT(~300ms),SURF(~300ms)或者最近的A-KAZE(~100ms).为了获得通用的位置识别能力,我们要求旋转不变性,这就排除了BRIEF和LDB。

我们选择ORB,其是具有方向的多尺度的FAST角点具有一个256位的描述字。其非常快地计算和匹配,其有较好的视点不变性。这就允许从宽的基线来匹配他们,提高BA的精确性。我们已经表明ORB在位置识别中的优良性能。尽管我们当前实现使用ORB,但是被提出的技术不限于这些特征。

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

如图一,系统概览:

融合了三个线程,并行运行:跟踪,局部建图和回环检测。跟踪线程负责定位每一帧的相机位姿然后决定何时插入关键帧。首先我们执行一个与先前帧的初始特征匹配,然后使用只有运动的BA来优化位姿。如果跟踪丢失(例如,由于震荡或者急速的运动),位置识别模块用于执行一个全局重定位。一旦有特征匹配和相机位姿的初始估计,一个局部的视觉地图被获得通过系统维护的由关键帧组成的共视图,如下图

然后通过重投影误差搜索与地图点的匹配,相机位姿再与所有的匹配一起优化。最后,跟踪线程决定是否一个新的关键帧被插入。所有的跟踪步骤在V部分解释。新颖的过程去创建初始地图在IV部分解释。

局部建图处理新的关键帧和执行局部的BA来获得相机位姿周围环境的最优重建。在新的关键帧中未匹配的新的correspoondences在共视图中的连接的关键帧中搜索来三角化新的点。在创建之后一些时间,紧急点淘汰政策被应用于为了获得高质量的点。局部建图主要负责剔除冗余的关键帧。在VI部分解释局部建图。

回环检测用于每一个新帧的回环搜索。如果一个回环被检测到,我们就计算相似变换,其通知在回环中累计的误差。然后对其回环检测的两侧,并融合重复的点。最后,对相似性约束的位姿图优化被执行来获得全局一致性。新颖之处在于我们对本质图执行优化,本质图是共视图的一个稀疏子图在III-D解释。回环检测以及纠正步骤在VII解释。

我们使用LM算法在g2o中实现的来实施所有的优化。在附录中我们描述了误差项,代价函数和每一个优化中所包含的变量。

C、地图点,关键帧和他们的选择

每一个地图点pi存储:

a、它的3D位置X在世界坐标系下。

b、视角方向ni,它是所有它的视角的一个平均单位向量,(将该点与观察该点的关键帧的光学中心连接的光线)。

c、一个有代表性的ORB描述子Di,该相关的ORB描述子,其汉明距离相对于观察该点的关键帧中的所有其他相关描述符是最小的。

d、根据ORB特征的尺度不变性极限,可以观察到点的最大d max和最小d min距离。 

每一个关键帧Ki存储:

a、相机位姿Tiw,其是一个刚体变换,该变换将世界坐标系中的点转换到相机坐标系中。

b、相机内参,包括焦距和主点。

c、在帧中提取的与地图点相关或不相关的所有ORB特征,其坐标在提供失真模型的情况下不失真;

地图点和关键帧以比较慷慨的方式创建,之后通过检测冗余关键帧和错误的匹配或者不可跟踪的地图点的一种较严格的剔除机制。这使得一个比较灵活的地图扩展机制在探索期间,这提高了在恶劣条件下的跟踪鲁棒性(旋转或者快速移动),而它的大小在不断地重新访问同一环境中受到限制,例如,lifelong 操作。另外本算法的地图相对于PTAM包含更少的外点,以包含较少点为代价。地图点和关键帧的剔除步骤在VI-B和VI-E分别解释。

D、共视图和本征图

在关键帧之间的共视信息是非常有用的在系统的多个任务中,共视信息用一个无向的带权重图来表示。每个节点是一个关键帧,两个关键帧之间是一条边如果这两个关键帧看到有大于15个相同的地图点的话,权重th为公共地图点的数量。

为了纠正回环,我们执行一个位姿图优化,该优化将回环错误沿着图进行分布。为了不包括由共视图提供的所有边,因为共视图特别稠密,我们提出一个本质图,该图保留所有的节点,但是更少的边,但仍然保存一个更强的网络来得到精确的结果。系统递增的构建一个生成树从初始关键帧开始,它提供了一个具有最小数量边的连接的共视图的子图。当一个新关键帧被插入时,它与树中关键帧观测到共同的对多的点的帧相连,当一个关键帧被剔除策略删除时,系统更新由该剔除的关键帧影响的链接。本质图包含了生成树,它是具有最高共视性(th最小100)的共视图的子集,具有回环检测边,生成一个强的相机网络。图2展示了一个共视图,生成树以及相关的本质图的例子。

在VIII-E实验部分,当执行位姿图优化时,得到的结果是很精确的以至于另外的完全BA优化很难进一步提升结果。本质图的有效性和th的最小值的影响在VIII-E部分结束给出。

E、位置识别的单词词袋模型

本系统嵌入一个位置识别的单词词袋模块,基于DBoW2,为了执行回环检测和重定位功能。视觉单词是一个描述符空间的离散化,称之为视觉词典。该词典用ORB描述符离线创建,这些描述符从大量的图像ORB描述符中提取。如果图像是足够的话,同样的词汇可以用于不同的环境得到一个更好的性能,如之前的工作。系统递增构建一个数据库,该数据库包含一个反向索引,该索引存储词典中的每一个视觉单词,该单词在关键帧中可见,以便查询数据库可以有效完成。这个数据库当剔除策略删除关键帧时也被更新。

由于关键帧之间存在的视觉重叠,当查询数据库的时候,不会存在一个唯一的具有高得分的关键帧。最初的DBoW2将这种重叠情况考虑了进去,且将在时间上相近的 图片得分累加。有一个缺点就是不会包含在同一地点不同时间插入的关键帧。相反,在共视图中我们将这些关键帧连接起来。除此之外,我们的数据库返回所有关键帧匹配得分高于最佳得分75%的。

单词词典表示的好处用于特征匹配在论文[5]中描述。当我们想计算两个ORB特征集之间的关系时,我们将暴力匹配限制在那些数据词典树中同一节点,以某种方式(从六个中选择两个)来加速搜索。当在搜索匹配点用于三角化新点、回环检测、重定位的时候,我们使用这个技巧。我们也用一个具有方向一致性测试来优化匹配,论文[11]看细节,这丢弃掉外点来保证所有匹配的一致性旋转。

IV 自动的地图初始化

地图初始化的目标是去计算两帧之间相对位姿来三角化一个初始的地图点集合。这种方法应当独立于场景(平面或者一般场景),不应该要求人为干预来选择一个好的双视图配置,例如,具有显著视差的配置。我们提出并行计算两个几何模型,一个单应性假设一个平面场景和一个基础矩阵假设非平面场景。然后我们使用一个启发式的方法来选择一个模型,试着去用一种具体的方法来恢复相对位姿用选择的模型。我们的方法仅在确定双视图配置安全时进行初始化,检测低视差情况和众所周知的双重平面模糊[27],避免初始化损坏的地图。我们算法的步骤是:

1)寻找初始匹配:

在当前帧Fc中提取ORB特征(只在最好的尺度下),搜索参考帧中Xr与当前帧中Xc的匹配。如果匹配不够多的话,重置参考帧。

2)两个模型的并行计算:

并行计算线程单应性Hcr和一个基础矩阵Fcr:

Xc = Hcr Xr     XcT FcrXr = 0;分别用归一化的DLT和8点算法在论文[2]中解释,且还使用了RANSAC方法。为了使这两种模型的过程均匀,迭代的数量被预先固定,两个模型都一样,在每一个迭代中被用的点也一样,基础矩阵用8个点,单应矩阵用8个中的4个点。在每一次迭代中我们计算一个得分Sm用于每一个模型M(H为单应性,F为基础矩阵):

dcr和drc各自的平方是对称输出误差,从一个坐标系到另一个坐标系。Tm时基于X2测试在95%的外点拒绝阈值(TH = 5.99,TF=3.84,假设测量误差的标准偏差为1像素)。T定义为与Th相等以便于两个模型得分在他们的内部区域相同的d得分相等,再次使过程均匀化。

我们使得单应性矩阵和基础矩阵有最高的得分。如果没有模型被发现(没有足够的内点),我们重新从第一步开始这个过程。

3)模型选择:

如果场景是平面的,近似平面或者有一个低视差,可以用单应性来解释。然而,一个基础矩阵被发现,但是这个问题没有得到很好的约束,任何尝试从基础矩阵来恢复运动将会得到错误的结果。我们选择单应性作为重建的方法会纠正从一个平面初始化或者它会检测到低视差的例子,然后拒绝初始化。另一方面,具有足够视差的非平面场景只会由基础矩阵来解释,而单应性被找到如果在一个平面或者这些匹配具有低视差(相隔较远)。这种情况下,我们选择基础矩阵。我们找到一个鲁棒的启发式函数,如下:

然后,如果RH>0.45,则选择单应性,这充分捕捉平面和低视差情况。否则,选择基础矩阵。

4)运动和从运动恢复结构:

一旦模型被选择,我们检索相关联的运动假设。在单应性的情况下,我们使用以下方法Faugeras et. al [23]检索8个运动假设:该方法提出cheriality测试来选择有效的结果。然而,这些测试失败,如果有低视差,因为点很容易进入摄像机的前面或后面,这就产生错误结果的选择。我们直接提出了三角化八个结果,检查是否有一个解决方案,其中大多数点都可以看到视差,在相机前面且有低的重投影误差。如果没有明显的优胜结果,我们不进行初始化,继续从第一步开始。这种消除解决方案歧义的技术使得我们的初始化在低视差和双重模糊配置下具有鲁棒性,可以被认为时我们算法鲁棒的关键所在。

在基础矩阵的情况下,我们使用标定矩阵K来将它转换为一个本质矩阵:

然后检索4个运动假设用SVD分解算法[2].我们对四种解决方案进行三角化,选择单应性的重建。

5)BA

最后,我们执行完全BA,看附录细节,来优化初始的重构。

一个具有挑战的室外的NewCollege机器人序列的初始化图3所示,

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以看出PTAM和LSD-SLAM在一个平面上初始哈u所有的点,然而我们的方法会等到由足够的视差才会从基础矩阵中初始化。

V、跟踪

本部分描述了跟踪线程,其每一帧都会执行。相机位姿优化,在几个步骤中会提到,组成了只有运动的BA,在附录中描述。

A、ORB 提取

我们提取FAST角点用一个尺度因子为1.2的8尺度。图像分辨率从512*384到752*480像素,我们找到合适的来提取1000个角点,对于更高的分辨率,正如在KITTI数据集中的1241*376,我们提取2000个角点。为了确保均匀分布,我们在网格中划分每个比例级别,尝试每个单元至少提取5个角点。然后在每个单元检测角点,如果没有足够的角点被检测到,就调整检测器阈值。如果某些单元格不包含角点(无纹理或低对比度),则每个单元格保留的角的数量也会进行调整。对保留的FAST角点进行方向和ORB描述符进行计算。ORB描述符应用于所有的特征匹配中,与PTAM中块相关搜索形成对比。

B、从上一帧得到初始位姿估计

如果对于上一帧跟踪成功,我们使用一个常数运动模型来预测相机运动,并执行一个指导性的搜索在上一帧中观测到的地图点。如果没有足够的匹配被找到(运动模型明显违背),我们使用在上一帧中他们位置周围的地图点更宽范围搜索。位姿用找到的匹配来优化。

C、通过全局重定位来得到初始位姿估计

如果跟踪丢失,我们将帧转换为单词词袋,查询识别数据库用于全局重定位的关键帧候选。我们计算每个关键帧中与地图相关的ORB匹配,在III-E部分解释。然后我们对每一帧执行RANSAC迭代,试着找到相机的位姿用PnP算法。如果我们找到具有足够内点的相机位姿,我们优化位姿,执行与候选关键帧的地图点的更多匹配的引导搜索,最后相机位姿被再次优化,如果有足够多的内点,跟踪步骤继续。

D、跟踪局部地图

一旦我们有了相机姿态的估计和一组初始的特征匹配,我们就可以将地图投影到帧中,并搜索更多的地图点对应关系。为了限制大型地图的复杂性,我们只投影局部地图。局部地图包含关键帧k1的集合,与当前帧共享地图点,与关键帧k1相邻的k2集合在共视图中。这个局部地图也有一个参考帧Kref属于k1,它与当前帧有最多的共享地图点。现在在k1和k2中被看到的地图点在当前帧中搜索如下:

1)在当前帧中计算地图点映射x,如果不在图像范围内则丢弃。

2)计算当前视角射线V和地图点平均视角方向n之间的角度。丢弃如果V*n <cos(60).

3)计算地图点到相机中心的距离d。如果它在地图点尺度不变性区域之外则丢弃d不等于[dmin,dmax]。

4)通过比例d/dmin来计算帧中的尺度。

5)将地图点的代表性描述符D与帧中仍无匹配的ORB特征进行比较,在预测的尺度上,x附近,将地图点与最佳匹配关联。

相机位姿最后在帧中与所有找到的地图点进行优化。

E、新的关键帧决策

上一步是决定是否当前帧作为新的关键帧。正如局部建图中的机制来剔除冗余的关键帧,我们仍尝试尽可能快的插入关键帧,因为这使得跟踪更鲁棒对于具有挑战的相机运动,比如旋转。为了插入一个新的关键帧,以下条件必须满足:

1)离上一次全局定位必须经过20帧以上。

2)局部mapping时空闲的,离上一次关键帧插入经过了至少20帧。

3)当前帧跟踪至少50个点。

4)当前帧跟踪小于参考Kref的90%的点。

与PTAM用距离作为关键帧标准不一样,我们提出一个最小的视角变化(上面条件4)。条件1保证一个好的全局定位,条件3一个好的跟踪。当局部建图较忙时,如果一个关键帧插入,那就要使局部BA停止,以便它可以尽可能的处理新的关键帧。

VI、局部建图

 本部分描述了,对每一个新的关键帧Ki执行一个局部建图。

A、关键帧插入

首先更新共视图,为Ki添加一个新的节点,更新与其他关键帧共享的地图点产生的边。然后,我们更新生成树,将K i与具有大多数共同点的关键帧链接起来。然后我们计算与关键帧的单词词袋表示,这会有助于在三角化新点时的数据融合。

B、最近地图点的剔除

为了在地图中保留下来,地图点必须在创建后的前三个关键帧期间通过限制性测试,这保证了他们可跟踪以及不会错误的三角化,例如由于虚假的数据融合。一个点必须完成以下两个条件:

1)跟踪必须在预测可见的25%以上的帧中找到该点。

2)如果从地图点创建不止经过了一个关键帧,必须从至少三个关键帧观察它。

一旦地图点通过了测试,如果任何时候它被观测小于了至少3个关键帧,则将被移除。这会发生当关键帧被剔除以及当局部BA丢弃外点观测时。这一方针让我们的地图包含更好的外点。

C、新地图点的创建

新的地图点是通过从共视性图中连接的关键帧Kc三角化ORB来创建的。为了Ki中每一个未匹配的ORB,我们搜索在其他帧中其他的未匹配的点的一个匹配。这一匹配在III-E部分解释了,然后丢弃那些不满足极限约束的匹配。ORB对被三角化,为了去接受新的点,在两个相机中是正的深度值,视差,重投影误差和尺度一致性都被检查。最初,从两个关键帧观察到一个地图点,但它可以在其他关键帧中匹配,因此它被映射到剩下的连接的关键帧中,其匹配的搜索,细节在V-D中。

D、局部BA

局部BA优化当前处理的关键帧Ki,在共视图中所有与它连接的关键帧Kc,被那些关键帧所看到的所有地图点。所有其他的关键帧也看到了那些点但是不与当前处理的关键帧相连接也包含在优化中,但保持固定不动。在优化中和在优化后被标记为外点的观测被丢弃。这个优化细节看附录。

E、局部关键帧的剔除

为了维持一个紧凑的重构,局部建图尝试去检测冗余的关键帧,然后删除他们。这是有益的,因为BA的复杂性会所着关键帧数量增加,而且这也使得lifelong操作在相同的环境中,关键帧数量不会无休止的增加,除非环境发生变化。我们丢弃K c中的所有关键帧,这些关键帧90%的地图点至少在相同或更精细比例的其他三个关键帧中可见。尺度条件可确保地图点保持关键帧,从这些关键帧可以最准确地测量它们。这一策略有文章[24]的提出所激发,其中在变化检测过程之后丢弃关键帧。

VII、回环检测

回环检测线程获得Ki,在局部建图中最后一个关键帧,其尝试检测并关闭回环。这一步下面描述。

A、回环候选检测

首先,我们计算Ki的词典词袋与共视图中它的邻居的相似性,然后保留最低得分smin。然后我们询问识别数据库,丢弃所有的关键帧得分小于smin的。这是一个类似的操作在DBoW2中归一化得分来增加鲁棒性,这从上一副图像中计算,但是这里我们使用共视图信息。除了所有与Ki直接相连的关键帧被排除之外。为了接受一个回环候选,我们必须连续检测三个回环候选,这些候选是连续的(在共视图中关键帧相连。)。有一些回环候选,如果有多个场景与ki相似的话。

B、计算相似性变换

在单目SLAM中,有7自由度,地图可能会漂移,三个位移,三个旋转,以及一个尺度因子。因此为了关闭回环,我们需要计算一个相似性变换从当前关键帧Ki到回环关键帧Kl,来告知我们在回环中累计的误差。相似性的计算作为回环的几何验证。

首先,我们计算在当前帧中ORB相关的地图点与回环帧中的匹配,参考III-E中的解释。到此为止,对于每一个回环候选,我们有3D到3D的匹配。对于每一个候选者,我们交替执行RANSAC迭代,试着找到一个相似性变换用Horn方法。如果我们找到一个相似性Sil具有足够的内点,我们就优化它,然后执行一个有更多匹配的导引搜索。在一次优化它,如果Sil有足够的内点,那回环Kl被接受。

C、回环融合

回环纠正的第一步是去融合重复的地图点,在共视图中插入新的边,该边会连接回环检测。首先,当前关键帧位姿Tiw用相似变换Sil来纠正,然后这个纠正被传递到Ki的所有邻居,级联变换,以便环的两边能够对齐。回环关键帧及其邻居看到的所有地图点被投影到K i及其邻居中,匹配在一个比较小的映射区域搜索,在V-D中完成了。所有匹配的地图点以及在Sil中计算的内点被融合。融合中涉及的所有关键帧将更新其在共视图中的边,有效地创建附加回环的边。

D、本质图的优化

为了有效的闭环,我们执行一个对本质图的位姿图的优化,在III-D节描述了,其会将误差均匀分布在图上。在相似性变换上执行优化以校正尺度漂移。误差项和代价函数细节在附录中。在优化之后,每一个地图点被变换根据观察它的关键帧之一来校正。

VIII-实验

跳过

IXX 总结和探讨

A、总结

 

posted on   gary_123  阅读(210)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2019-01-09 Gazebo: Could not find parameter robot_description on parameter server
2016-01-09 2、数据、变量和计算

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示