ORB-SLAM 论文阅读笔记

一、原文简译

摘要

本文介绍了一种基于特征的单目SLAM系统ORB-SLAM,该系统可在小型和大型、室内和室外环境中实时运行。该系统对严重的运动杂波具有鲁棒性,允许宽基线环路关闭和重新定位,并包括全自动初始化。基于近年来的优秀算法,我们从零开始设计了一个新颖的系统,它对所有SLAM任务使用相同的功能:跟踪、映射、重新定位和循环关闭。适者生存策略,选择重建的点和关键帧,导致优秀的鲁棒性,并生成一个紧凑和可跟踪的地图,只有在场景内容发生变化时才会增长,允许终身操作。我们从最流行的数据集中对27个序列进行了详尽的评估。与其他最先进的单目SLAM方法相比,ORB-SLAM取得了前所未有的性能。为了社区的利益,我们公开源代码。
关键词:终身映射,定位,单目视觉,识别,SLAM

BA译作光束平差法、捆集调整等,指从视觉重建中提炼出最优的3D模型和相机参数(内参和外参)。从每个特征点反射出来的几束光线(bundles of light rays),在我们把相机姿态和特征点的位置做出最优调整后收束到光心的过程,简称BA

I. INTRODUCTION 介绍

光束平差法(BA) 是已知可以提供精确的 像机定位估计 以及 稀疏几何重建 的方法,前提是提供了强大的匹配网络和良好的初始猜测。很长一段时间以来,这种方法被认为是无法负担的实时应用程序,如可视化同步定位和映射(Visual SLAM)。Visual SLAM的目标是在重建环境的同时估计像机轨迹。为了在低计算成本下获得更准确的结果,实时SLAM算法必须为BA提供:
• 在选定帧 (关键帧) 的子集中,观察相应的场景特征(地图点);
• 关键帧的选择应该避免不必要的冗余(随着关键帧数量的增加,复杂度也在增加);
• 一个强大的关键帧和点的网络配置,以产生准确的结果。即一个良好分布的关键帧集合,观察具有显著视差的点和大量的循环闭合匹配;
• 用于非线性优化的关键帧姿态和点位置的初始估计;
• 探索中的局部地图,其中优化的重点是实现可扩展性;
• 能够执行快速全局优化(例如姿态图)实时闭环

BA的第一个实时应用是Mouragon等人的视觉里程计,随后是Klein和Murray的并行跟踪和映射(PTAM)。该算法在规模较小的情况下,为关键帧选择、特征匹配、点三角剖分、帧相机定位以及跟踪失败后的重定位提供了简单有效的方法。但也有几个因素限制了它的应用:缺乏循环关闭和适当的闭塞处理,对重新定位的视点的低不变性,需要人为干预地图引导等。

在本工作中,我们以PTAM的主要思想,Gálvez-López和Tardós的位置识别工作,Strasdat等的标度感知环路关闭和大规模操作的共视信息的使用为基础,从头设计了一个新颖的单目SLAM系统ORB-SLAM,其主要贡献是:
• 对所有任务使用相同的功能:跟踪,映射,重新定位循环关闭。使系统更加高效、简单、可靠。ORB特性允许没有gpu的情况下实现实时性能,对视点和照明的变化提供良好的不变性。
• 大型环境下的实时操作。由于使用了共视图,跟踪和绘图集中在局部共视区域,而不受全局地图大小的影响。
• 基于姿态图(基本图)优化的实时循环关闭。它是由系统维护的生成树、环路闭合链接和来自共视图的强边构建的。
• 实时像机重定位,对视点和照明具有显著的不变性。这允许从跟踪失败中恢复,还增强了地图的复用。
• 基于模型选择的新的自动和健壮的初始化过程,允许创建平面和非平面场景的初始地图。
• 在地图点和关键帧的选择上采用适者生存的方法,在生成上很慷慨,但在剔除方面非常严格。由于丢弃了冗余关键帧,该策略提高了跟踪的鲁棒性,并增强了终身操作。

我们对室内外环境的流行公共数据集进行了广泛评估,包括手持、汽车和机器人序列。值得注意的是,我们在直接法中实现了比现有技术更好的相机定位精度,该方法直接优化像素强度,而不是特征重投影误差。我们在第IX-B节讨论了基于特征的方法比直接法更准确的可能原因。

本文提出的闭环和重定位方法是基于先前的工作。此外,我们增加了初始化方法——基本图,并完善了所有相关的方法。我们还详细描述了所有的构建块,并进行了实验验证。据我们所知,这是单目SLAM最完整可靠的解决方案,为了社区的利益,我们将源代码公之于众。演示视频和代码
http://webdiis.unizar.es/~raulmur/orbslam/

II. RELATED WORK 相关工作

a. 地点识别

Williams等人比较了几种位置识别方法并得出结论,基于外观的技术(图像到图像匹配)在大型环境中比 地图到地图 或 图像到地图 的方法更好。该方法中的词袋技术,如概率方法FAB-MAP非常高效。DBoW2首次使用了从BRIEF描述符以及高效的FAST特征检测器中获得二进制词袋,与目前在词袋方法中使用的SURF和SIFT特征相比,将特征提取所需的时间减少了不止一个数量级。虽然该系统被证明是非常有效和鲁棒的,使用BRIEF,既不是旋转也不是尺度不变,限制了系统的平面内轨迹和环检测从相似的观点。
ORB 是在一定范围内对旋转和缩放不变性的二进制特征,以获得对视点具有良好不变性的快速识别器。
在之前的工作中,我们提出了一个用ORB在DBoW2上构建的 词袋位置识别器。我们在四个不同的数据集中展示了识别器的 高召回率 和 鲁棒性,从10K图像数据库中检索循环候选对象所需时间小于39ms(包括特征提取)。在这项工作中,我们使用了位置识别器的改进版本,在查询数据库时使用共视性信息并返回几个假设,in stead of 最佳匹配。

b. 地图初始化

单目SLAM需要一个创建初始地图的过程,因为深度不能从单个图像中恢复。一种解决方法是最初跟踪一个已知结构。在滤波方法的背景下,使用深度逆参数化来初始化高度不确定的点,并期望稍后收敛到它们的真实位置。Engel等人最近的半密集工作遵循类似的方法,将像素的深度初始化为具有高方差的随机值。

初始化方法从两个视图分别假设 局部场景平面 和 恢复相对相机姿态,Faugeras等人的方法是从单应性出发,而Nister的五点法计算平面和一般场景的基本矩阵需要处理多个解。这两种重建方法在 低视差条件下都没有很好的约束,如果平面场景内的所有点都更接近像机的一个中心,则会出现双重模糊解。另一方面,采用 八点法 计算出视差下的非平面场景的唯一基本矩阵,可以无模糊地恢复相对相机位姿。

在第四节中,我们提出了一种新的基于 平面场景单应性非平面场景基本矩阵模型选择 的自动方法。Torr等人提出了一种 模型选择 的统计方法,基于类似的原理我们开发了一种 启发式初始化算法,考虑了在接近简并的情况下(即平面,近平面和低视差)选择基本矩阵的风险,有利于单应性的选择。如果平面下的解具有双重模糊性,就可能导致选择坏的解。为了安全起见,我们延迟初始化,直到该方法产生一个具有显著视差的唯一解。

c. 单目SLAM

单目SLAM最初是通过滤波来解决的,每一帧都由滤波器处理,共同估计地图特征位置和相机姿态。缺点是计算量大,处理连续帧时新信息少,线性化误差大。另一方面,基于关键帧的方法只使用选定帧(关键帧)来估计映射,允许执行更昂贵但更准确的BA优化,因为 映射与帧速率无关。在相同的计算成本下,基于关键帧的技术比滤波更准确。

最具代表性的基于关键帧的SLAM系统当属Klein和Murray的PTAM。这是第一个 在并行线程中引入分割相机跟踪和映射 想法的工作,并被证明在小环境中的实时增强现实应用中是成功的。
后来PTAM进行了改进,增加了 边缘特征、跟踪时的 旋转估计更好的重定位方法。PTAM的映射点对应patch相关匹配的FAST角,这使得这些点只能用于跟踪而不能用于位置识别。事实上,PTAM并没有检测到大的循环,它的重定位是基于关键帧的低分辨率缩略图的相关性,对视点的不变性较低。

Strasdat等提出了一种大型单目SLAM系统,前端基于GPU上的光流、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 能够建立 大尺度稠密地图,使用 直接法(即直接优化图像像素强度),而不是对特征进行束调整。他们的结果能够 实时运行,无需GPU加速就能构建 半稠密地图,比基于特征的SLAM生成的稀疏输出具有更多的机器人应用潜力,令人印象深刻。但他们仍需要用于环路检测的特征,且它们的像机定位精度明显低于我们的系统和PTAM。

Forster等的 半直接视觉测程SVO 介于直接法和特征法之间。不需要在每一帧中提取特征,能够在高帧率下操作,在四轴飞行器中获得令人印象深刻的结果。缺点是没有执行循环检测,目前的实现主要是考虑向下看的相机。

对于关键帧的选择,文献中所有的视觉SLAM作品都认为 运行BA所有的点和坐标系是不可行的。Strasdat等人的工作表明,最好的方法是 保留尽可能多的点,同时只保留非冗余的关键帧。PTAM方法是谨慎地 插入关键帧 以避免计算复杂度的过度增长,但这种限制性的关键帧插入策略使跟踪在艰难的探测条件下失败。我们的 适者生存策略 能够尽可能快地插入关键帧、删除冗余帧,以避免额外的成本,在困难的情况下实现了前所未有的稳健性。

III. SYSTEM OVERVIEW 系统概述

a. 特征选择

我们系统的主要设计 思想 之一是 将映射和跟踪所使用的相同特征用于位置识别,以执行帧速率重新定位和环路检测。这使得我们的系统高效,并且避免了像之前那样需要从SLAM附近的特征中插值识别特征的深度。我们要求每幅图像提取特征的时间远小于33ms,那么流行的SIFT(300ms) 、SURF(300ms)或最近的A-KAZE(100ms)就不适用了。为了获得一般的位置识别能力,需要旋转不变性,其中不包括BRIEFLDB

ORB面向多尺度的FAST角,与256位描述符相关联计算和匹配速度极快,同时对视点具有良好的不变性。这允许从宽基线匹配它们,提高BA的准确性。我们已经展示了ORB在位置识别的良好性能。虽然我们当前的实现使用了ORB,但所提出的技术并不局限于这些特性。

b. 三大线程:跟踪、本地映射、循环关闭

我们的系统包含了三个并行线程:跟踪、本地映射和循环关闭。
跟踪 负责对相机的每一帧进行本地化,并决定何时插入新的关键帧。先执行与前一帧匹配的初始特征,使用运动BA来优化姿态。如果跟踪丢失(例如由于遮挡或突然移动),使用位置识别模块执行全局重新定位。一旦有了相机姿态和特征匹配的初始估计,使用由系统维护的关键帧的共视图检索本地可见地图(如图ab所示),然后通过重投影搜索与局部地图点的匹配,并对所有匹配再次优化相机姿态。最后,跟踪线程决定是否插入新的关键帧。
在这里插入图片描述

本地映射 处理新的关键帧并进行局部BA,以实现相机姿态周围环境的最优重建。在共视图的连接关键帧中搜索新关键帧中未匹配ORB的新对应关系,以三角剖分新的点。创建一段时间后,基于跟踪过程中收集到的信息,应用 紧急点剔除 策略,以便只保留高质量的点。本地映射还负责剔除冗余的关键帧
我们将在第VI节详细介绍本地映射的步骤。

循环关闭 搜索每个新的关键帧的循环。如果检测到一个循环,我们计算一个相似度变换,告知在循环中累积的漂移。然后对环路两侧进行对齐,并将重复点融合最后对相似度约束进行位姿图优化,实现全局一致性。我们在基本图(III- d节中解释的共可见图的稀疏子图)上进行了优化,我们使用g2o中实现的Levenberg-Marquardt算法来进行所有优化。附录中描述了每次优化中涉及的错误术语、代价函数和变量。

c. 映射点和关键帧的选择

• 它在世界坐标系中的3D位置 Xw,i
观看方向 ni,它是其所有观看方向的平均单位矢量(将该点与观察它的关键帧的光学中心连接的射线)
• 代表的ORB描述符Di,其汉明距离相对于观察到该点的关键帧中的所有其他相关描述符是最小的
• 根据 ORB特征的尺度不变性,可观察到的点的最大dmax和最小dmin距离
相机姿态Tiw,这是一个刚体转换,将点从世界坐标系转换到相机坐标系
• 相机的本质,包括 焦距主点
帧中提取的所有ORB特征,关联或不关联到一个映射点,如提供了失真模型,其坐标是未失真的

地图点和关键帧是用一个慷慨策略创建的,而后来紧急剔除机制负责检测冗余关键帧、错误匹配和不可跟踪的地图点。这允许在探索过程中灵活地扩展地图,从而 提高在艰难条件下(如旋转,快速移动)的跟踪鲁棒性,虽然它的大小在不断重新访问同一环境时受到限制。此外,与PTAM相比,我们的地图包含很少的异常值,代价是包含更少的点。

d. 共视图和基本图

关键帧之间的共视信息在几个任务中很有用,并表示为一个无向加权图。每个节点都是一个关键帧,如果它们共享对同一地图点的观测数据(至少15个),那么两个关键帧之间存在一条边,边的权值θ表示公共地图点的数量。

为了纠正循环,我们执行了一个姿态图优化,沿着图分布循环关闭错误。为了不包括共视图提供的所有边(这可能非常密集),我们建议构建一个保留所有节点(关键帧)和较少的边的基本图,这样仍保留了一个强大的网络以产生准确的结果。

该系统从初始关键帧开始逐步构建 生成树,生成树提供了具有最少边数的共视图的连通子图。当插入新关键帧时,它将被包含在与该关键帧链接的共享最多点观测值的树中。当关键帧被剔除策略删除时,系统将更新受该关键帧影响的链接。

基本图包含生成树、高共可见度(θmin=100)的共视图边的子集环闭边,从而形成一个强大的像机网络。图2显示了共视图、生成树和相关基本图的示例。如Section VIII-E的实验所示,在进行位姿图优化时,解是如此精确,以至于额外的全束调整优化几乎没有改善解。

e. 词袋位置识别

系统中嵌入了一个基于DBoW2的词袋位置识别模块,实现环路检测和重新定位。可视词汇只是描述符空间的离散化,称为可视词汇表。词汇表是使用从大量图像中提取的ORB描述符离线创建的。如果图像足够通用,则可以将相同的词汇表用于不同环境,从而获得良好的性能。该系统逐步建立一个包含倒序索引的数据库,存储了关键帧中出现的词汇表中的每个可视化单词,从而可以高效地查询数据库。当剔除过程删除关键帧时,数据库也会更新。

由于关键帧之间存在视觉上的重叠,在查询数据库时不会存在唯一的高分关键帧。最初的DBoW2考虑了这种重叠,将时间接近的图像分数加在一起。这有一个限制,即不包括在不同时间插入而查看同一位置的关键帧。相反,我们将那些在共视图中连接的关键帧分组。此外,数据库返回所有得分高于最佳分数75%的关键帧匹配。

词袋用于特征匹配的另一个好处:当我们希望计算两组ORB特征之间的对应关系时,可以将暴力匹配限制在词汇表树中某个级别上属于同一节点的那些特征(我们选择六个中的第二个),从而加快搜索速度。我们使用这个技巧来搜索匹配三角定位的新点,以及回环检测和重新定位。我们还使用方向一致性测试来细化对应,该测试丢弃了异常值,确保所有对应关系间的旋转一致性。

IV. AUTOMATIC MAP INITIALIZATION 自动地图初始化

地图初始化的目标是计算两帧之间的相对姿态,以三角化初始地图点集。这种方法应该独立于场景(平面或一般),不需要人为干预来选择一个好的双视图配置(具有显著视差的配置)。我们提出并行计算两个几何模型,一个是 平面场景下的单应性,另一个是 非平面场景下的基矩阵。然后,我们使用启发式方法选择一个模型,并尝试使用所选模型的特定方法恢复相对姿态。我们的方法只在确定两视图配置是安全的情况下初始化,检测低视差情况和众所周知的双平面模糊度,避免初始化损坏的地图。算法的步骤如下:
(1) 查找初始对应在当前帧Fc中提取ORB特征(仅在最细的尺度上),在参考帧Fr中查找xc↔xr的匹配项。如果没有找到足够的匹配项,则重置参考系。
(2) 两模型并行计算并行线程计算单应性矩阵Hcr 和 基本矩阵Fcr
在这里插入图片描述

在RANSAC方案内分别使用归一化DLT和8点算法。为了使两个模型的过程都是齐次的 和 迭代次数相同,每次迭代中使用点的个数基本矩阵为8,单应性为4。在每次迭代中,我们为每个模型M计算一个分数 (H为单应性,F为基本矩阵):
在这里插入图片描述
d2cr和d2rc是从一帧到另一帧的对称传输误差。TM是95%时基于χ2检验的异常值排除阈值(TH=5.99, TF=3.84,假设测量误差的标准偏差为1像素)。Γ 被定义为等于TH,这样两个模型在其较近区域内对于相同的d得分也相同,这是为了使过程同构。
我们保留了分数最高的单应性矩阵和基本矩阵。如果没有找到模型(没有足够的内线),我们从第1步重新启动过程。
(3) 模型选择:如果场景是平面的、接近平面的或视差较低的,可以用单应性来解释。当然也可以找到一个基本矩阵,但这个问题没有太好的约束,任何试图从基本矩阵中恢复运动的尝试都会产生错误的结果。我们应该选择单应性作为重建方法,从一个平面正确地初始化,或者当它检测到低视差的情况拒绝初始化。

另一方面,具有足够视差的非平面场景只能用基本矩阵来解释,但如果它们位于平面或视差较低(距离较远),也可以建立单应性来解释匹配的子集。这种情况下我们应该选择基本矩阵,我们建立了一个鲁棒的启发式计算,当RH>0.45时选择单应性,充分捕捉平面和低视差情况;否则就选择基本矩阵。
在这里插入图片描述

(4) 运动恢复中的运动和结构:一旦选择了一个模型,我们检索相关的运动假设。

在单应性的情况下,我们利用Faugeras等的方法得到了8个运动假设,该方法通过cheriality检验来选择有效解。然而,如果视差很低,这些测试就会失败,因为点很容易在相机的前面或后面,这可能会导致选择错误的解决方案。我们直接对8个解进行三角剖分,并检查是否有一个解在视差下看到的点最多,在两个像机前的重投影误差低。如果没有明确的相对较好的解决方案,则不初始化并从步骤1继续。这种消除解歧义的技术使我们的初始化在低视差和双重歧义配置下具有鲁棒性,可以认为是我们方法鲁棒性的关键。

在基本矩阵的情况下,我们使用校准矩阵K将其转换为基本矩阵,然后用[2]中解释的奇异值分解方法检索4个运动假设。我们对四个解进行三角测量,并选择重建为单应性。
在这里插入图片描述

(5) Bundle调整:最后我们执行一个完整的BA,以完善初始重建。
室外NewCollege机器人序列具有挑战性的初始化示例如图3所示。可以看到PTAM和LSD-SLAM如何初始化平面上的所有点,而我们的方法一直等到有足够的视差,从基本矩阵正确初始化。
在这里插入图片描述

V. TRACKING 跟踪

本节我们将描述跟踪线程的步骤,这些步骤是对来自相机的每一帧执行的。

FAST特征点:FAST是一种角点,主要检测局部像素灰度变化明显的地方,以速度快著称。它的思想是:如果一个像素与它领域的像素差别较大,那它更可能是角点。相比于其他角点检测算法,FAST只需比较像素亮度,十分快捷。检测过程如下:
(1)在图像中选取像素p,假设它的亮度为Ip
(2)设置一个阈值T
(3)以像素p为中心,选取半径为3的圆上的16个像素点
(4)如选取的圆上,有连续N个点的亮度大于Ip+T或小于Ip-T,那么像素p可以被认为是特征点(一般N取9或12)
(5)循环以上四步,对每一个像素执行相同的操作。
此外,原始的FAST角点经常出现“扎堆”的现象。所以在第一遍检测之后,还需要用非极大值抑制(Non-Maximum Suppression,NMS),在一定区域内仅保留响应极大值的角点,避免角点集中的问题。
角点属于特征点,而特征点包括了角点以及其他点。

ORB特征点
ORB特征点是由 Oriented FAST(特征点) 和 Rotated BRIEF(特征描述) 组成。Fast角点本不具有方向,由于特征点匹配需要,ORB对FAST角点进行了改进,改进后的 FAST 被称为 Oriented FAST,具有旋转不变性尺度不变性
Oriented FAST获得尺度不变性的方式如下:
(1)对图像做不同尺度的高斯模糊
(2)对图像做降采样(隔点采样)
(3)对每层金字塔做FAST特征点
(4)检测n幅不同比例的图像提取特征点总和作为这幅图像的Oriented FAST特征点
Oriented FAST获得旋转不变性的操作如下:
在这里插入图片描述
通过以上方法,FAST角点便具有了尺度与旋转的描述,大大提升了它们在不同图像之间表述的鲁棒性。
————————————————
FAST特征点及ORB特征点参考原文

a. ORB提取

我们以1.2的比例因子提取8个尺度级别的FAST角。对于 512×384 到 752×480 像素的图像分辨率,适合提取1000个角;更高的分辨率,如KITTI数据集中的 1241×376,我们取2000个角。
为了确保均匀分布,我们在网格中划分每个刻度级别,尝试每个单元格提取至少5个角。如果检测有单元格中角的数量不够,则调整检测器阈值。如果一些单元格不包含角(无纹理或低对比度),则每个单元格保留的角的数量也会调整。
最后在保留的FAST角上计算方向和ORB描述符。所有特征匹配都使用ORB描述符,在PTAM中通过补丁相关性进行搜索。

b. 据前一帧进行初始姿态估计

如果最后一帧跟踪成功,我们使用恒定速度运动模型来预测像机姿态,并对最后一帧观察到的地图点进行引导搜索。如果没有找到足够的匹配(违反了运动模型),在最后一帧的位置周围更广泛地搜索地图点,用找到的对应对姿态进行优化。

c. 基于全局重定位的初始姿态估计

如果跟踪丢失,我们将帧转换为词袋,并查询识别数据库中的候选关键帧以进行全局重定位。我们计算ORB与每个关键帧中的映射点的关系。然后,我们对每个关键帧选择性地执行RANSAC迭代,并尝试用PnP算法寻找相机姿态。如果找到一个有足够内线的相机姿态,先对姿态进行优化,然后引导搜索候选关键帧上的更多的地图点匹配。最后,再次优化相机姿态,如果支持有足够的内线支持,继续跟踪。

d. 跟踪局部地图

一旦有了相机姿态估计和初始的特征匹配集,我们就可以将地图投影到框架中并搜索更多的地图点对应关系。为了约束大型地图的复杂性,我们只 project 一个局部映射。这个局部映射包含一组与当前帧共享映射点的关键帧K1,以及共视图中与关键帧K1相邻的K2。局部映射还有一个参考关键帧 Krf ∈ K1,它与当前帧共用大部分映射点。在当前帧中搜索K1和K2中都看到的地图点,如下所示:
(1) 计算映射点在当前帧中的投影 x,如果它超出图像边界,则丢弃
(2) 计算当前查看射线v与地图点平均查看方向n的夹角,如果 v · n < cos(60◦)则丢弃
(3) 计算地图点到像机中心的距离 d,如果不在映射点的尺度不变性范围内( d /∈ [dmin,dmax] ),则丢弃
(4) 按比例 d/dmin 计算帧内的尺度
(5) 将映射点的代表性 描述符D 与 帧中仍 未匹配的ORB特征 进行比较,在 4)中计算的预测尺度和 x附近,关联映射点和最佳匹配

最后,通过帧中找到的所有映射点进行最终的相机姿态优化。

e. 新的关键帧决策

最后一步是决定当前帧是否被派生为一个新关键帧。由于在本地映射中有一种机制来剔除冗余的关键帧,我们将尝试尽可能快地插入关键帧,这对相机运动更加鲁棒,一般是旋转的方法。插入新关键帧必须满足以下所有条件:
(1) 从上次全局重定位开始必须传递超过20帧
(2) 本地映射处于 idle,或者从上次插入关键帧到现在已经超过20帧
(3) 当前帧至少跟踪 50个点
(4) 当前帧比参考帧 Kref 跟踪的点少 90%
我们利用了一个最小视觉变化(条件4),而不是像PTAM那样 使用与其他关键帧的距离标准。条件1确保良好的重定位,条件3确保良好的跟踪。如果在本地映射 busy 时插入关键帧(条件2 part2),则发送信号停止本地BA,以便尽快处理新关键帧。

VI. LOCAL MAPPING 局部映射

在本节中,我们将描述用所有新关键帧Ki 执行本地映射的步骤。

a. 关键帧插入

先更新共视图,为 Ki 添加一个新节点,并更新与其他关键帧共享地图点产生的 edge。然后更新生成树,将 Ki 与 具有最多共同点的关键帧 连接。最后计算关键帧的词袋表示,这将有助于三角化新点的数据关联。

b. 最近地图点剔除

为了保留在地图中,地图点必须在创建后的前三个关键帧中通过限制性测试,以确保它们是可跟踪的,不会因为虚假数据关联而被错误地三角化。一个点必须满足以下两个条件:
(1) 跟踪必须在预测可见的25%以上的帧中找到这个点
(2) 如果不只一个关键帧从地图点创建传递,它必须从至少三个关键帧观察
一旦一个映射点通过了这个测试,它就只能在 任何时候都被少于三个关键帧观察到 的情况下被删除。这可能发生在 关键帧被剔除 和 本地BA丢弃异常观测值 时,这一策略使我们的地图包含很少的异常值。

c. 创建新地图点

通过 在共视图中连接的关键帧Kc 对ORB进行三角测量 来创建新的地图点。对于 新关键帧Ki 中的每一个未匹配的ORB,我们用其他关键帧中未匹配的点进行搜索匹配,并丢弃那些不满足极坐标约束的匹配项。三角化ORB对,且为了接受新的点,需要检查视差、重投影误差、刻度一致性以及两个像机的正深度。
最初,从两个关键帧种观察到的一个映射点也可以在其他关键帧中得到匹配,所以把它投射到其他相连接的关键帧中,并详细搜索对应的关系。

d. 局部BA (BA 捆集调整/光束平差)

局部BA优化当前处理的关键帧Ki,在共视图Kc中连接所有的关键帧 以及这些关键帧所看到的所有地图点。其他所有看到这些点 但没有连接到当前处理的这个关键帧的关键帧们 都在优化中保持固定。标记异常的观测值在优化中或优化结束后被丢弃。

e. 局部关键帧剔除

为了保持紧凑的重建,局部映射尝试检测和删除冗余的关键帧。因为BA的复杂性随关键帧数量的增加而增加,还有它允许相同环境下的终生操作(因为关键帧数量不会无限制地增长,除非场景中的可视内容发生变化)。我们丢弃Kc中 有90%地图点至少在其他三个相同或更小比例关键帧中出现过的所有关键帧。缩放条件确保了关键帧是由测量最精确的地图点所保持的。该灵感来自Tan等提出的 在更改检测过程后丢弃关键帧。

VII. LOOP CLOSING 回环闭合

循环关闭线程接受本地映射处理的最后一个关键帧Ki,并尝试检测和关闭循环。

a. 循环候选检测

首先,我们计算Ki 的词袋向量 与 共视图中所有相邻向量的相似度(θmin = 30),并保留最低分数 Smin。然后查询识别数据库,丢弃分数低于Smin的所有关键帧。这类似于DBoW2中 通过归一化得分(由前面图像中计算的)获得鲁棒性性操作,但这里我们使用了共视性信息。此外,所有直连Ki 的关键帧都将被丢弃。
为了接受一个循环候选,我们必须连续检测三个一致的循环候选(在共视图中连接的关键帧)。如果有几个与Ki 外观相似的地方,则可以有多个循环候选。

b. 计算相似度变换

单目SLAM有7个可导致地图漂移的自由度,3个平移量,3个旋转量和 1个比例因子。
因此,关闭循环需要计算从 当前关键帧Ki循环关键帧Kl 的相似度转换。该相似度计算不仅告诉我们循环中累积的误差,也可作为回环的几何验证。
先计算 当前关键帧中与映射点有关的ORB 与 循环候选关键帧 之间的对应关系,过程遵循III-E。这样一来,就有了每个循环候选之间的3D对应关系。
可以选择对所有候选对象执行RANSAC迭代,尝试用Horn等的方法找到相似度变换。如果发现一个有足够内嵌的相似度Sil,优化 并引导搜索更多的对应关系。如再次优化后Sil 仍有足够的内线支持,则接受带有Kl的循环。

c. 循环融合

循环校正的第一步是融合重复的地图点,并在共视图中插入新的边缘,将附加循环闭合。
首先,当前关键帧姿态Tiw 用相似变换Sil 进行修正,这个修正被传播到Ki 的所有相邻关键帧,连接变换,这样循环的两边就对齐了。
循环关键帧看到的所有映射点及其相邻关键帧都被投影到Ki 中,它的相邻关键帧和匹配点在投影周围的窄区域内搜索。
对Sil 计算中匹配的所有映射点和内嵌点进行融合。
融合中涉及的所有关键帧将在共视图中更新它们的边,有效地创建 附加回环闭合的边。

c. 基本图优化

为了有效地关闭循环,我们在基本图上执行一个姿态图优化,它沿图分配循环关闭的误差。
优化是在相似度变换上进行的,以纠正尺度漂移。误差项和代价函数在附录中有详细说明。
优化后,每个映射点根据 观察它的关键帧之一的修正 进行转换。

VIII. EXPERIMENTS 实验

我们在NewCollege的大型机器人序列中对系统进行了广泛的实验验证,评估了系统的总体性能。在TUM RGB-D基准的16个手持室内序列中,评估了定位精度、重定位和终身能力,并在KITTI数据集的10个汽车室外序列中,评估了实时大规模操作、定位精度和姿态图优化的效率。
我们的系统实时运行,并准确地以获取的帧速率处理图像。我们使用英特尔酷睿i7-4700MQ(4核@ 2.40GHz)和8Gb RAM进行了所有实验。
ORB-SLAM有三个主线程,它们与来自ROS和操作系统的其他任务并行运行,这对结果产生了一些随机性。因此,在一些实验中,我们报告了几次运行的中位数。

a. NewCollege数据集中的系统总体性能

NewCollege数据集包含一个2.2公里长的序列,该序列来自一个机器人穿越校园和临近公园。该序列由立体声像机以20fps帧率和512×382分辨率记录,包含几个循环和快速旋转,对单目视觉相当有挑战性。
据我们所知,文献中还没有其他单目系统能够处理整个序列。如Strasdat等,尽管能够关闭循环 和 在大规模环境下工作,只显示了该序列一小部分的单目结果。

我们在图4中展示了一个循环关闭程序的例子,用支持相似度变换的内嵌 进行回环检测。
在这里插入图片描述

图5为闭环前后的重构。红色显示的是局部映射,在回环关闭后沿回环关闭的两侧延伸。
在这里插入图片描述

在实际帧率下处理的完整序列的整个映射见图6。右边的大循环没有完全对齐,因为它是在相反的方向上遍历的,位置识别器无法找到循环闭包。
在这里插入图片描述

我们提取了该实验中每个线程的时间数据,表 I 显示了跟踪和本地映射的结果。跟踪工作在约25-30Hz的 帧率 下,这是跟踪局部映射最艰巨的任务。如果有必要,这个时间还可以减少,以限制包含在局部映射中的关键帧数量。在局部映射的线程中,难度最大的任务是 局部BA。如果机器人 正在探索 或 已在一个映射好的区域,本地BA的时间也会不同。因为在探索的过程中,如果跟踪插入了一个新的关键帧,BA就会被中断。在不需要新关键帧的情况下,局部BA会执行大量的 前缀迭代。
在这里插入图片描述

表 II 显示了所找到的6个循环闭包的结果,可以看出循环检测是如何随关键帧数量增加而次线性增加的。这是因为 高效的数据库查询 只比较图像子集 和 公共单词,这体现了词袋在位置识别中的潜力。我们的基本图包含了大约等于 关键帧数量5倍 的边,这是一个相当稀疏的图。
在这里插入图片描述

b. TUM RGB-D基准中的定位精度

TUM RGB-D基准常被用于评估 相机定位的准确性,因为它提供了几个由 外部运动捕捉系统获得的精确地面真相 序列。我们忽视了其中不适合纯单目SLAM系统的序列,因为它们包含强烈的旋转,没有纹理和运动。

为了方便比较,我们还在基准测试中执行了新颖的、直接的、半密集 LSD-SLAM 和 PTAM。我们还与 RGBD-SLAM 的生成轨迹进行了比较,RGBD-SLAM 是为基准网站中的一些序列提供的。

为了比较 ORB-SLAM,LSD-SLAM 和 PTAM 与地面真相,在尺度未知的情况下,我们用 相似度变换对齐关键帧轨迹,并测量 绝对轨迹误差(ATE)。
在 RGBD-SLAM 中,我们将轨迹与刚体变换对齐,同时通过相似度来检查尺度是否恢复良好。
LSD-SLAM 从随机深度值初始化需要时间收敛,因此在与地面真值比较时丢弃了前10个关键帧。
对于 PTAM,我们手动选择了两个帧,初始化良好。

表 III 显示了16个序列 执行5次以上的中位数结果。
在这里插入图片描述
显然,ORB-SLAM能够处理 除了fr3_nostructure _texture_far (fr3_nstr_tex_far) 以外的 所有序列。fr3 是一个平面场景,由于像机轨迹对于平面有两种可能的解释,即 双重模糊性。我们的初始化方法检测了这种歧义,为了安全起见拒绝初始化。
PTAM 初始化有时会选择正确的解,也有时会选择损坏的解,这种情况下坏解是不可接受的。
我们没有注意到 LSD-SLAM 两个不同的重建,但这个序列的误差非常高。
在其余序列中,PTAM 和 LSD-SLAM 的鲁棒性不如ORB-SLAM,前两者分别在8个和3个序列中失去轨道。

在精度方面,ORB-SLAM 和 PTAM 在开放轨迹上差不多,而 ORB-SLAM 在检测大循环时具有更高的精度(如序列 fr3_nostructure_texture_near_withloop (fr3_nstr_tex_near))。
最令人惊讶的结果是,PTAM 和 ORB-SLAM 都明显比 LSD-SLAM 和 RGBD-SLAM 更加准确。一个可能的原因是,当传感器测量丢失时,他们 将地图优化简化为姿态图优化,而我们则是 执行BA、联合优化相机和传感器测量地图,这是求解运动[2]结构的黄金标准算法。我们将在第IX-B节进一步讨论这一结果。
LSD-SLAM 对动态对象 (如 fr2_desk_with_person 和 fr3_walking_xyz) 的鲁棒性似乎不如我们的系统。

注意到 RGBD-SLAM 在 fr2 序列的尺度上存在偏差,因为将轨迹与 7DoF 对齐可以显著降低误差。
Engel等报道了 PTAM 在 fr2_xyz 序列中的精度低于 LSD-SLAM (RMSE=24.28cm)。然而,这篇论文没有提供太多细节来说明这些结果是如何获得的,我们也无法重现它们。

c. TUM RGB-D基准中的重新定位

我们在 TUM RGB-D 基准中进行了两次重定位实验。
在第一个实验中,我们用序列 fr2_xyz 的前30秒构建了一个地图,并对每个连续帧执行全局重新定位,评估恢复姿势的准确性。我们用 PTAM 做了同样的实验进行比较。
图7 展示了用于创建初始地图的关键帧、重定位的帧的位姿及地面真值。可以看出,PTAM 由于重定位方法的不变性很小,只能对靠近关键帧的帧进行重定位。
在这里插入图片描述

表 VI 显示了相对地面真值的召回和误差。ORB-SLAM 比 PTAM 精确地重新定位了多两倍的帧。
在这里插入图片描述
在第二个实验中,我们用序列 fr3_sitting_xyz创建了一个初始映射,并尝试从 fr3_sitting_xyz 重新定位所有帧。这是一个很有挑战性的实验,因为人在场景中的移动造成了很大的遮挡。在此,PTAM 没有发现重定位,而我们的系统重定位了78%的帧,如表IV所示。
图8显示了我们的系统在这些实验中执行的具有挑战性的重新定位的一些例子。
在这里插入图片描述

d. TUM RGB-D基准终身实验

先前的重定位实验表明,ORB-SLAM 能够从非常不同的视点在地图上进行定位,并对适度的动态变化具有鲁棒性。这一性质与关键帧剔除程序相结合,就允许了在相同环境中不同视点或动态变化下的终身操作。

在完全静态的场景下,ORB-SLAM 能够保持关键帧的数量,即使像机从不同视点观察场景。我们在一个自定义序列中演示,像机在93秒内看着同一张桌子,但执行了一个轨迹,因此视点总是在变化的。图9 比较了 ORB-SLAM 和 PTAM 方法中地图中关键帧数量的变化。可以看到PTAM一直在插入关键帧,而我们删除冗余关键帧的机制使其数量趋于饱和。
在这里插入图片描述

虽然静态场景中的终身操作应该是SLAM系统的基本要求,但更有趣的是发生动态更改的情况。我们通过连续运行 fr3 中动态序列分析系统在这种情况下的表现(sitting_xyz, sitting_halfsphere, sitting_rpy, walking_xyz, walking_halfspehere, walking_rpy)
所有镜头都聚焦在同一张桌子,只是轨迹不同,同时人们在移动和改变物体的位置,如椅子。
图10a 显示了地图中关键帧总数的变化。图10b 显示了每个关键帧的创建销毁,以及在地图中的持续时间。
在前两个序列中可以看到,地图尺寸会随着 场景中所有视图的首次出现 而增加。从图10b 可以看到有几个关键帧 自前两个序列创建后 一直维持了整个实验过程。在 sitting_rpy 和 walking_xyz 两个序列中地图并不会变大,因为到目前为止创建的地图已经很好地解释了场景。相比之下,后两个序列中插入了更多的关键帧,以表明场景中尚有一些 可能由于动态变化 而未体现的新事物。
图10c 直方图 显示了 关键帧存活时间 与 序列当前剩余时间的关系。可以看到,大多数关键帧在创建后不久就被剔除程序破坏了,只有一小部分关键帧存活到实验结束。一方面表明系统有一个慷慨的关键帧生成策略,这在探索中执行突然的动作时非常有用。另一方面,系统最终能从这些关键帧中选择出一个具有代表性的子集。
在这里插入图片描述
通过这些终生的实验可以证明,我们的地图随场景内容复杂度而增长 instead of 时间,并能够存储场景的动态变化,这可能有助于通过环境中的经验积累来执行一些场景理解。

e. KITTI数据集的大尺度和大循环闭合

KITTI 数据集的里程计基准包含11个序列,这些序列来自一辆在居民区周围行驶的汽车,具有来自 GPS 和 Velodyne 激光扫描仪的精确地面真值。对于单目视觉来说,这是一个非常具有挑战性的数据集,因为 快速旋转 和 众多树植区域 使得数据关联更加困难,并且车速相对较高,以10帧/秒的速度记录序列。

我们以实时帧率播放序列,ORB-SLAM 能够处理除了01 外的所有序列,这是一条几乎没有近距离可跟踪物体的高速公路。系统正确检测和关闭了序列00 02 05 06 07 09 所包含的回环。序列09包含了一个只能在末尾几帧中检测到的回环,系统并不总是能检测到它 (提供的结果检测到它的执行)。

ORB-SLAM 生成轨迹与地面真相的定性比较 见图11&12。
在这里插入图片描述
在这里插入图片描述

在TUM RGB-D基准测试中,我们使用相似度变换将系统的关键帧轨迹和地面真相对齐。将图11&12的结果 与最近 Lim等人的单目SLAM方法处理的序列00 05 06 07 08结果 定性比较,显然 ORB-SLAM 为所有序列生成了更精确的轨迹(除了序列08,它们似乎受到更少的漂移)。
表 V 显示了所有序列5次执行的关键帧轨迹的均方根误差(RMSE)中值,还提供了地图尺寸以便将误差放在上下文中。结果表明,系统具有较高的轨迹精度,其典型误差约为尺寸的1%。有时小 如序列03为0.3%,有时大 如序列08为5%。序列08没有回环,漂移不能被纠正,这表明需要闭环来实现精确的重建。
在这里插入图片描述

在这个实验中,我们还检查了 在每个序列的末尾执行20次完整的BA迭代 可以改善多少重建。我们注意到,一定的完整BA迭代略微提高了带环路轨迹的精度,但在开放轨迹上的效果可以忽略不计,这意味着系统的输出已经非常准确了。在任何情况下,如果需要最准确的结果,我们的算法提供了一组匹配,它定义了一个强大的像机网络初始猜测,以便于全BA在很少次的迭代中收敛。

最后,我们想展示闭环方法的有效性,以及在基本图中用于包含边的θmin的影响。我们选择了序列09(一个长序列,末尾有一个循环关闭),在同一次执行中评估了不同的闭环策略。
表 VI 显示了不同情况下关键帧轨迹的均方根误差(RMSE) 和 优化时间:没有循环关闭,直接应用全BA(20或100次迭代);只应用位姿图优化(10次迭代,具有不同数量的边);先应用位姿图优化再应用全BA。
在这里插入图片描述
在这里插入图片描述

结果表明,在环路关闭之前,当前解比最优解还差很多,BA存在收敛问题。即便迭代100次之后,误差仍然很高。而基本图优化收敛速度快,结果也更准确。可以看出,θmin 的选择对精度没有明显的影响,但减少边的数量却可以显著降低时间。在位姿图优化之后执行额外的BA,能略微提高精度,但同时也增加了时间。

IX. CONCLUSIONS 结论与讨论

a. 结论

在这项工作中,我们提出了一个新的单目SLAM系统,详细描述了其构建模块,并在公共数据集中进行了详尽的评估。我们的系统已经证明了它可以处理室内和室外场景以及汽车、机器人和手持动作的序列。

该系统在小型室内场景下的精度通常低于1厘米,在大型室外场景下的精度通常为几米(一旦我们将刻度与地面真实情况对齐)。

目前Klein和Murray[4]的PTAM被认为是最准确的单目视频实时SLAM方法。这并不是巧合,PTAM的后端是束调整,这是众所周知的离线结构从运动问题[2]的金标准方法。

PTAM的主要成功之一,以及Mouragnon[3]的早期工作,是将这些知识带入机器人SLAM社区,并演示其实时性能。

我们工作的主要贡献是将PTAM的多功能性扩展到该系统难以处理的环境。

为此,我们从头开始设计了一个新的单目SLAM系统,采用了一些新的思想和算法,并结合了过去几年的优秀成果,如Gálvez-López和Tardós的环路检测,Strasdat等人[6]、[7]的环路关闭过程和共视图,Kuemmerle等人[37]的优化框架g2o和Rubble等人的ORB特征。

据我们所知,还没有其他系统能在如此多的不同场景中如此准确地工作。因此,我们的系统是目前最可靠和完整的单目SLAM解决方案。我们的新策略是生成和剔除关键帧,允许每隔几帧创建关键帧,最终当被认为是冗余时删除。这种灵活的地图扩展在条件较差的 探索轨迹 中非常有用。

接近纯粹的旋转或快速运动。当在相同的环境中重复操作时,只有当场景的视觉内容发生变化时,地图才会增长,并存储其不同视觉外观的历史。对这段历史进行分析,可以得到长期测绘的有趣结果。

最后,我们还证明了ORB特征具有足够的识别能力,能够在严重的视点变化中进行位置识别。此外,它们的提取和匹配速度非常快(不需要多线程或GPU加速),可以实现实时准确的跟踪和映射。

b. 稀疏/基于特征 vs 稠密/直接法

最近的实时单目SLAM算法,如DTAM[44]和LSD-SLAM[10]能够执行环境的密集或半密集重建,而相机是通过直接优化图像像素强度进行本地化。这些直接的方法不需要特征提取,因此避免了相应的工件。它们对模糊、低纹理环境和沥青[45]等高频纹理也更鲁棒。与我们的系统或PTAM的稀疏点图相比,它们更密集的重建可能对其他任务更有用,而不仅仅是相机定位。

然而,直接法有其局限性。首先,这些方法假设一个表面反射率模型,在真实场景中产生自己的伪影。光度一致性限制了匹配的基线,通常比特征允许的基线更窄。这对重建精度有很大影响,这需要宽基线观测来减少深度不确定性。如果建模不正确,直接方法会受到卷帘快门、自动增益和自动曝光工件(如TUM RGB-D基准)的很大影响。

最后,由于直接方法通常对计算量要求很高,所以地图只是像DTAM中那样逐步扩展,或者像LSD-SLAM中那样将地图优化简化为姿态图,丢弃所有传感器测量。

相比之下,基于特征的方法能够匹配具有宽基线的特征,这得益于其对视点和光照变化的良好不变性。束调整联合优化相机姿势和点超过传感器测量。
在结构和运动估计方面,Torr和Zisserman[46]已经指出了特征法对于直接法的好处。在这项工作中,我们提供了特征法在实时SLAM中的卓越准确性的实验证据(见第VIII-B节)。我们认为单目SLAM的未来应该结合这两种方法的优点。

c. 未来的工作

在跟踪过程中加入无穷远点的情况下,系统的精度仍有提高的空间。这些点没有足够的视差,我们的系统也没有包含在地图中,这是相机[21]旋转的非常有用的信息。

另一种开放的方式是将我们系统的稀疏映射升级为更密集、更有用的重建。多亏了我们的关键帧选择,关键帧包含了环境的紧凑摘要,具有非常高的姿态精度和丰富的共视信息。因此,ORB-SLAM稀疏地图可以是一个很好的初始猜测和框架,在此基础上可以构建一个密集而准确的场景地图。[47]给出了这一行的第一个尝试。

APPENDIX. NON-LINEAR OPTIMIZATIONS 非线性优化

a. 捆集调整 /光束平差 (BA)

对映射点3D位置Xw,j∈R3和关键帧姿态Tiw∈SE(3)(其中w代表世界参考)进行了优化,使其相对于匹配关键点xi,j∈R2的重投影误差最小化。

关键帧i中一个图点j的观测误差项为:
在这里插入图片描述
其中πi是投影函数
在这里插入图片描述
其中Riw∈SO(3)和tiw∈R3分别为tiw的旋转部分和平动部分,(fi,u, fi,v)和(ci,u, ci,v)分别为摄像机i相关的焦距和主点。

待最小化代价函数为:
在这里插入图片描述

其中ρh是Huber鲁棒代价函数,Ωi,j = σ2i,jI2×2是与检测到关键点的尺度相关的协方差矩阵。在全BA的情况下(在第IV节解释的地图初始化和第VIII-E节的实验中使用),我们优化所有的点和关键帧,除了第一个关键帧,它保持固定的原点。在局部BA(参见VI-D部分)中,局部区域中的所有点都被优化,而关键帧的子集是固定的。在姿态优化或仅运动BA中,(见第五节)所有点都是固定的,只有相机姿态被优化。

b. Sim(3)约束下的姿态图优化

给定一个二进制边的姿态图(参见第VII-D节),我们将边中的误差定义为:
在这里插入图片描述
其中Sij是在姿态图优化和将比例因子设置为1之前,从SE(3)姿态计算的两个关键帧之间的相对Sim(3)转换。在环路闭合边的情况下,这种相对变换是用Horn[42]的方法计算的。logSim3[48]变换为切线空间,因此误差是R7中的一个向量。目标是优化Sim(3)关键帧姿态,使代价函数最小化:
在这里插入图片描述
其中Λi,j是边的信息矩阵,与[48]一样,我们将边设为恒等式。我们修复了闭环关键帧来修复7度的测量自由度。虽然这种方法是完全BA的粗略近似,但我们在第VIII-E节中实验证明,它比BA具有明显更快和更好的收敛性。

c. 相关Sim(3)优化:

给定关键帧1和关键帧2之间的n个匹配i⇒j(关键点及其相关的3D映射点),我们希望优化相对Sim(3)变换S12(见节VII-B),使两幅图像中的重投影误差最小化:
在这里插入图片描述
最小化的代价函数是:
在这里插入图片描述
其中Ω1,i和Ω2,i是与图像1和图像2中关键点被检测到的尺度相关联的协方差矩阵。在这种优化中,点是固定的。

二、代码复现

相比之下,ORB-SLAM2和3更具有实践意义,故本人未复现ORB-SLAM1的成果。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大胜s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值