ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记

摘要

论文介绍了 ORB-SLAM,这是一种基于特征的单目SLAM 系统,可在小型和大型室内外环境中实时运行。该系统对严重的运动噪声具有鲁棒性,允许宽基线循环闭合和重新定位,并包括全自动初始化。基于近年来的优秀算法,从零开始设计了一个新颖的系统,该系统对所有 SLAM 任务使用相同的功能:跟踪、映射、重新定位和闭环。选择重建的点和关键帧的适者生存策略可带来出色的鲁棒性,并生成紧凑且可跟踪的地图,该地图仅在场景内容发生变化时才会增长,从而允许终身操作。对来自最流行数据集的 27 个序列进行了详尽的评估。 ORB-SLAM 相对于其他最先进的单目 SLAM 方法实现了前所未有的性能。开源!

主要贡献

  1. 对所有任务使用相同的功能:跟踪、映射、重新定位和闭环。这使系统更加高效、简单和可靠。使用 ORB 特征 ,它允许在没有 GPU 的情况下实现实时性能,为视角和光照的变化提供良好的不变性。
  2. 大环境下的实时操作。由于使用了covisibility graph,跟踪和映射集中在局部covisible区域,与全局地图大小无关。
  3. 基于称为Essential Graph的位姿图优化的实时闭环。它是由系统维护的生成树、闭环连接和来自covisibility graph的强边构建的。
  4. 实时相机重定位,对视角和照明具有明显不变性。这允许从跟踪失败中恢复并且还增强了地图重用。
  5. 基于模型选择的新的自动和鲁棒初始化程序,允许创建平面和非平面场景的初始地图。
  6. 一种适者生存的地图点和关键帧选择方法,在生成时很宽松,但在剔除时非常严格。由于丢弃了冗余关键帧,该策略提高了跟踪鲁棒性并增强了长期操作。

关键帧之间的Covisibility information 在系统的多个任务中非常有用,表示为无向加权图。每个节点都是一个关键帧,如果两个关键帧共享相同地图点(至少15个)的观测值,则两个关键帧之间存在一条边,即边的权重θ和公共地图点的数量。

为了纠正闭环,执行了位姿图优化,该优化将循环闭合误差沿图分布。为了不包含covisibility graph提供的所有边(共视图可能非常密集),构建一个Essential Graph,该图保留所有节点(关键帧),但保留较少的边,仍然保留产生准确结果的强连接。系统从初始关键帧以增量方式构建生成树,该生成树提供具有最少边数的covisibility graph的连通子图。插入新关键帧时,它将包含在连接到共享大多数点观测的关键帧的树中,并且当通过剔除策略删除关键帧时,系统将更新受该关键帧影响的连接。基本图包含生成树、具有高共视性(θmin=100)的covisibility graph的边子集和循环闭合边,从而形成一个强大的摄像机网络。其中,covisibility graph和Essential Graph的理解也可以参见ORB-SLAM中两种图的理解。

系统框架

ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第1张图片
跟踪负责在每一帧中定位相机并决定何时插入新的关键帧。首先执行与前一帧匹配的初始特征,并使用仅运动 BA 优化姿势。如果跟踪丢失(例如,由于遮挡或突然移动),则使用位置识别模块执行全局重定位。一旦对相机位姿和特征匹配进行了初步估计,就可以使用系统维护的关键帧的covisibility graph检索局部可见地图 [见下图]。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第2张图片
局部地图处理新的关键帧并执行局部 BA,以在相机位姿周围实现最佳重建。在covisibility graph的连接关键帧中搜索新关键帧中未匹配 ORB 的新对应关系,以对新点进行三角测量。创建后的一段时间,根据跟踪期间收集的信息,应用紧急点剔除策略以仅保留高质量点。局部地图还负责剔除冗余关键帧。

环路闭合将搜索具有每个新关键帧的闭环。如果检测到一个闭环,我们计算一个相似性转换,将该转换通知循环中累积的漂移。然后,将回路的两侧对齐,并融合重叠的点。最后,在相似性约束上进行位姿图优化,以实现全局一致性。主要新颖之处在于对 Essential Graph进行了优化。使用g2o中实现的Levenberg–Marquardt算法来执行所有优化。

系统嵌入了一个基于DBoW2的字袋位置识别模块,用于执行循环检测和重新定位。视觉词汇只是描述空间的离散化,即视觉词汇。词汇表是使用从大量图像中提取的ORB描述符离线创建的。如果图像足够通用,相同的词汇表可以用于不同的环境以获得良好的性能。由于关键帧之间存在视觉重叠,因此在查询数据库时,不会存在唯一的高分关键帧。原始DBoW2考虑了这种重叠,将时间相近的图像的分数相加。这有一个限制,即不包括查看相同位置但在不同时间插入的关键帧。相反,将在covisibility graph中连接的关键帧进行分组。此外,数据库将返回分数高于最佳分数75%的所有关键帧匹配。

自动地图初始化

地图初始化的目标是计算两帧之间的相对位姿以对一组初始地图点进行三角测量。此方法应独立于场景(平面或一般),并且不应需要人工干预来选择良好的双视角配置,即具有明显视差的配置。提出并行计算两个几何模型:假设平面场景的单应矩阵和假设非平面场景的基本矩阵。然后,我们使用启发式方法来选择模型,并尝试使用所选模型的特定方法来恢复相对姿势。仅在确定双视图配置安全时才进行初始化,检测低视差情况和众所周知的双平面模糊性,避免初始化损坏的地图。

  1. 查找初始对应关系:提取当前帧Fc的ORB 特征,与参考帧Fr的ORB特征进行匹配,xc<->xr若匹配数量不足,则重置参考帧。
  2. 两个模型的并行计算:在并行线程中分别使用 DLT 归一化和八点算法,计算单应矩阵和Hcr基本矩阵Fcr
    ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第3张图片

为了使两个模型的过程齐次,两个模型的迭代次数都是相同的,并且在每次迭代中使用的点是相同的:基本矩阵为8,单应性矩阵为4。对每一次迭代,为模型M计算一个分数,表示为SM
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第4张图片这里的 d c r 2 d_{cr}^2 dcr2 d r c 2 d_{rc}^2 drc2是从某一帧到另一帧的转换误差,TM是基于95% χ 2 χ^2 χ2检验的异常值拒绝阈值,其中TH=5.99,TF=3.84,Γ的定义相当于TH , 这样两个模型在其内部区域对于相同的d得分相等,再次使过程同质。保留分数最高的单应性矩阵和基本矩阵。若没有,则从第一步从新开始。

3 . 模型选择:如果场景是平面的,接近平面的,或者有低视差,可以用单应性来解释。然而,也可以找到一个基本矩阵,但问题没有很好地约束,任何试图从基本矩阵恢复运动将产生错误的结果。应该选择单应性矩阵,因为重构方法将正确地从平面初始化,或者它将检测到低视差的情况并拒绝初始化。另一方面,具有足够视差的非平面场景只能用基本矩阵来解释,但当匹配子集位于平面上或视差较低(距离较远)时,也可以用单应性来解释。在这种情况下,我们应该选择基本矩阵。计算RH
在这里插入图片描述
若RH>0.45,选择单应矩阵,能充分捕捉平面视差和低视差的情况。否则,选择基本矩阵。

4.从运动恢复中获得运动和结构:一旦选择了一个模型,我们就恢复相关的运动假设。在单应性的情况下,检索八个运动假设。直接三角测量这八个解决方案,并检查是否有一个解决方案的大多数点视差,在两个摄像机前和低重投影误差。如果没有合适的解决方案,则不初始化并从步骤1继续。这种方法使得初始化在低视差和双重模糊配置下具有鲁棒性,是该方法鲁棒性的关键。在基本矩阵的情况下,使用标定矩阵K将其转换为基本矩阵
在这里插入图片描述
然后用奇异值分解方法恢复四个运动假设。对这四个解进行三角定位,并像对单应性矩阵所做的那样选择重构。

5.BA:最后,执行一个完整的BA来优化初始的重建。

跟踪线程

跟踪线程在相机的每一帧中执行
1.ORB特征提取
以1.2的比例在8个尺度水平提取快速角点。对于分辨率从512 × 384到752 × 480像素的图像,适合提取1000个角,对于更高的分辨率,如KITTI数据集中的1241 × 376,提取了2000个角。为了保证均匀分布,将每个尺度等级划分在一个网格中,试图在每个单元中提取至少五个角点。然后,在每个单元中检测角点,如果没有找到足够的角点,就调整检测器阈值。如果某些单元格不包含角点(无纹理或低对比度),则每个单元格保留的角的数量也会相应调整。然后在保留的FAST角点上计算方向和ORB描述符。

2.基于前一帧的初始姿态估计
如果最后一帧跟踪成功,使用一个匀速运动模型来预测相机的姿态,并对最后一帧观察到的地图点进行引导搜索。如果没有找到足够的匹配(即明显违反了运动模型),就会在最后一帧的地图点周围进行更广泛的搜索。然后根据所找到的对应关系对姿态进行优化。

3.通过全局重定位的初始姿态估计
如果跟踪丢失,将帧转换为词袋,并在识别数据库中查询关键帧候选以进行全局重定位。计算与每个关键帧中的地图点相关联的 ORB 的对应关系。然后,对每个关键帧交替执行 RANSAC 迭代,并尝试使用 PnP 算法找到相机位姿。如果找到具有足够内点的相机位姿,会优化位姿并使用候选关键帧的地图点执行引导搜索更多匹配项。最后,再次优化相机位姿,如果有足够的内点支持,则继续跟踪过程。

4.局部地图跟踪
一旦估计了相机位姿和一组初始特征匹配,就可以将地图投影到框架中并搜索更多的地图点对应关系。为了限制大地图的复杂性,只投影一个局部地图。此局部地图包含一组关键帧K1,与当前帧共享地图点,和另一组关键帧K2在covisibility graph中相邻。局部地图还有一个参考关键帧 Kref ∈ K1,它与当前帧共享大多数地图点。现在,在当前帧中搜索 K1和 K2 中看到的每个地图点,如下:

(1)计算当前帧中的地图点投影 x。如果它超出图像边界,则丢弃。
(2)计算当前视线 v 与地图点平均观察方向 n 之间的角度。若v · n < cos(60),则丢弃。
(3)计算从地图点到相机中心的距离 d。如果超出地图点的尺度不变区域,则丢弃。
(4)通过比例 d/dmin 计算帧中的比例。
(5)将地图点的代表性描述符 D 与帧中仍不匹配的 ORB 特征进行比较,在预测的比例下,在 x 附近,将地图点与最佳匹配相关联。
最终使用帧中找到的所有地图点优化相机姿势。

5.新的关键帧选择
最后一步是确定当前帧是否作为新的关键帧生成。由于局部地图中存在剔除冗余关键帧的机制,将尝试尽可能快地插入关键帧,因为这使得跟踪对于具有挑战性的相机运动(通常是旋转)更加稳健。要插入新的关键帧,必须满足以下所有条件。
(1)上次全局重定位后必须经过 20 多帧。
(2)局部地图处于空闲状态,或者从上次插入关键帧开始已经超过 20 帧。
(3)当前帧跟踪至少 50 个点。
(4)当前帧跟踪的点少于 Kref 的 90%。
条件 1 确保良好的重新定位,条件 3 确保良好的跟踪。如果在局部地图繁忙时插入关键帧(条件 2 的第二部分),则会发送信号以停止局部 BA,以便它可以尽快处理新的关键帧。

局部地图

描述局部地图对每个新关键帧 Ki 执行的步骤。
1.关键帧插入
首先,更新 covisibility graph,为 Ki 添加一个新节点,并更新由与其他关键帧共享的地图点产生的边。然后,更新将 Ki与具有大多数共同点的关键帧连接的生成树。然后计算关键帧的词袋表示,这将有助于对新点进行三角分解的数据关联。

2.最近的地图点剔除
地图点为了保留在地图中,必须在创建后的前三个关键帧期间通过限制性测试,以确保它们是可跟踪的并且不会被错误地三角分解。地图点必须满足这两个条件:
(1)跟踪必须在预测可见超过25%的帧中找到该点。
(2)如果从地图点创建开始经过了多个关键帧,则必须从至少三个关键帧开始观察。
一旦地图点通过该测试,只有在任何时候从少于三个关键帧中观察到它时,才能将其移除。当关键帧被剔除时,以及当局部BA丢弃异常观察值时,就会发生这种情况。这个策略使得地图包含非常少的异常值。

3.新地图点创建
新的地图点是通过从covisibility graph中连接的关键帧Kc对ORB特征点进行三角化来创建的。对于Ki中每个不匹配的ORB特征点,搜索与其他关键帧中其他不匹配点之间的一个匹配。ORB特征点对被三角化,为了接受新的点,检查两个相机中的正深度、视差、重投影误差和比例一致性。最初,从两个关键帧中观察到一个地图点,但它可以在其他关键帧中匹配;因此,它会投影到其余的连接关键帧中。

4.局部BA优化
局部BA优化当前处理的关键帧Ki、在covisibility graph中与其连接的所有关键帧Kc,以及这些关键帧看到的所有地图点。看到这些点但未连接到当前处理的关键帧的所有其他关键帧都包括在优化中,但保持固定。标记为异常值的观察值在优化的中间和末尾被丢弃。

5.局部关键帧剔除
为了保持紧凑的地图重建,局部地图尝试检测冗余关键帧并删除它们。因为 BA 复杂性随着关键帧的数量而增长,而且因为它可以在相同的环境中进行终生操作,因为关键帧的数量不会无限增长,除非场景中的视觉内容发生变化。若选择丢弃 Kc 中的所有关键帧,其 90% 的地图点至少在其他三个相同或更精细比例的关键帧中出现过。比例条件确保地图点保持最准确测量它们的关键帧。

闭环

闭环线程获取局部地图处理的最后一个关键帧 Ki,并尝试检测和关闭循环。

1.闭环候选检测
首先,计算 Ki 的词袋向量与其在covisibility graph中所有邻居之间的相似度(θmin = 30),并保留最低分数 Smin。然后,查询识别数据库并丢弃所有分数低于 Smin 的关键帧。这是与 DBoW2 中的归一化分数类似的获得鲁棒性的操作,该分数是根据前一个图像计算的,但这里使用covisibility信息。此外,所有与 Ki 直接相关的关键帧都会从结果中丢弃。要接受一个闭环候选,必须连续检测三个一致的闭环候选(在covisibility graph 中连接的关键帧)。如果有多个与 Ki 外观相似的地方,则可以有多个候选闭环。

2.计算相似度变换
在单目 SLAM 中,地图可以在七个自由度中漂移:三个平移、三个旋转和一个比例因子。因此,要关闭循环,需要计算从当前关键帧 Ki 到循环关键帧 Kl 的相似性变换,以告知我们循环中累积的误差。这种相似性的计算也将作为循环的几何验证。

首先计算与当前关键帧中的地图点相关联的 ORB特征 和闭环候选关键帧之间的对应关系。在这一点上,对每个候选闭环都有 3D 到 3D 的对应关系。交替地对每个候选者执行 RANSAC 迭代,找到相似变换。如果找到具有足够内点的相似性 Sil,对其进行优化并执行更多对应的引导搜索。再次对其进行优化,如果有足够多的内点支持Sil,则接受带有 Kl 的闭环。

3.闭环融合
环路校正的第一步是融合重复的地图点,并在将附加环路闭合的covisibility graph 中插入新边。首先,当前关键帧位姿 Tiw 用相似变换 Sil 进行校正,并将这种校正传播到 Ki 的所有邻居,连接变换,从而使循环的两侧对齐。闭环关键帧及其邻居看到的所有地图点都投影到 Ki 中,并且在投影周围的狭窄区域中搜索其邻居和匹配项。所有匹配的地图点和 Sil 计算中的内点都被融合了。融合中涉及的所有关键帧都将更新它们在covisibility graph中的边,从而有效地创建连接闭环的边。

4.Essential Graph 优化
为了有效地闭合环路,对Essential Graph执行姿势图优化,它沿图分布环路闭合误差。优化是在相似变换上进行的,以校正尺度漂移。优化后,每个地图点根据观察到它的一个关键帧的校正进行变换。

实验

在NewCollege的大型机器人序列中对系统进行了广泛的实验验证,评估了系统的总体性能,在TUM RGB-D基准的16个手持室内序列中,评估了定位精度、重定位和执行时常,以及在来自Kitti数据集的10个汽车室外序列中,评估了实时大规模操作、定位精度和姿势图优化的效率。

系统实时运行,并以获得的帧率精确处理图像。使用Intel Core i7-4700MQ(四核@2.40 GHz)和8 GB RAM进行了所有实验。ORB-SLAM有三个主线程,它们与ROS和操作系统的其他任务并行运行,这在结果中引入了一些随机性。出于这个原因,在一些实验中,报告了几次运行的中位数。

1.NewCollege数据集中的系统性能
NewCollege数据集包含一个2.2公里长的序列,该序列来自穿过校园和邻近公园的机器人。该序列由双目摄像机以20帧/秒的速度记录,分辨率为512×382。它包含多个闭环和快速旋转,这使得序列对于单目视觉非常具有挑战性。

作为循环关闭过程的一个示例,在图4中显示了使用支持相似性转换的内部检测循环模块。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第5张图片
图5显示了环路闭合前后的重建。以红色显示局部地图,该地图在循环闭合之后沿循环闭合的两侧延伸 。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第6张图片
以实际帧速率处理完整序列后的整个地图如图6所示。右侧的大循环没有完全对齐,因为它以相反的方向遍历,并且位置识别器无法找到循环闭包。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第7张图片
在实验中,提取了每个线程花费的时间统计数据。表I显示了跟踪和局部建图的结果。跟踪以大约25-30 Hz的帧频工作,这是跟踪局部地图要求最高的任务。如果需要,可以减少此时间,以限制包含在局部地图中的关键帧数。在局部地图线程中,要求最高的任务是局部BA。如果机器人正在探索或在地图绘制良好的区域,则当地的BA时间会有所不同,因为在探索期间,如果跟踪插入新的关键帧,则BA会中断。在不需要新关键帧的情况下,局部BA执行大量的前缀迭代。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第8张图片
表II显示了找到的六个闭环中每一个的结果。可以看出闭环检测是如何随着关键帧的数量而亚线性增加的。这是因为对数据库的有效查询只将图像子集与共同的单词进行比较,这显示了词袋用于位置识别的潜力。Essential Graph包括大约五倍于关键帧数量的边,这是一个相当稀疏的图。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第9张图片
2.TUM RGB-D基准中的定位精度
TUM RGB-D基准是评估摄像机定位准确性的优秀数据集,因为它提供了几个序列,其中包含通过外部运动捕捉系统获得的精确地面真实信息。

为了进行比较,还在基准测试中执行了新颖的、直接的、半语义的LSD-SLAM和PTAM。还与RGBD-SLAM生成的轨迹进行了比较。为了将ORB-SLAM、LSD-SLAM和PTAM与地面真实情况进行比较,在尺度未知的情况下,使用相似变换对齐关键帧轨迹,并测量绝对轨迹误差。在RGBD-SLAM的情况下,将轨迹与刚体变换对齐,但也对齐了相似性,以检查尺度是否被很好地恢复。LSD-SLAM从随机的深度值初始化,需要时间来收敛;因此,当与地面真实情况进行比较时,丢弃了前十个关键帧。对于PTAM,手动选择了两个帧,从这两个帧中可以获得良好的初始化。表III显示了所选16个序列中每一个的五次执行结果的中位数。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第10张图片
X表示跟踪在某个点丢失,并且序列的很大一部分未被系统处理。

3.TUM RGB-D基准中的重定位
在TUM RGBD基准中执行了两个重新定位实验。在第一个实验中,用序列fr2_xyz的前30秒构建一个地图,并对每个连续帧执行全局重新定位,并评估恢复位姿的准确性。
对PTAM进行了相同的实验以进行比较。图7显示了用于创建初始地图的关键帧、重新定位帧的姿势以及这些帧的地面真值。可以看出,PTAM仅能够重新定位帧,由于其重新定位方法几乎没有不变性,因此帧靠近关键帧。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第11张图片
表四显示了与真值相关的召回率和错误率。ORB-SLAM比PTAM精确地重新定位两倍以上的帧。在第二个实验中,使用序列fr3_Sitation_xyz创建一个初始地图,并尝试重新定位fr3_walking_xyz中的所有帧。这是一个具有挑战性的实验,因为在场景中移动的人会造成很大的遮挡。在这里,PTAM没有发现重新定位,而ORB-SLAM重新定位了78%的帧,如表IV所示。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第12张图片
图8显示了ORB-SLAM在这些实验中执行的挑战性重新定位的一些示例。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第13张图片
4.TUM RGB-D基准中的长期实验
在完全静态的场景中,即使摄影机从不同的视点观看场景,ORB-SLAM也能够保持有界关键帧的数量。图9中可以看出PTAM总是插入关键帧,而ORB-SLAM修剪冗余关键帧的机制使其数量饱和。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第14张图片
图10(a)显示了地图中关键帧总数的演变,图10(b)显示了每个关键帧的创建和删除,显示了关键帧在地图中存活的时间。可以看出,在前两个序列中,随着第一次看到场景的所有地图,地图大小会增加。ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第15张图片

在图10(b)中,我们可以看到在这两个第一序列中创建的几个关键帧在整个实验期间都保持在地图中。在“sitting_rpy ”和“walking_xyz”的序列中,地图不会增长,因为迄今为止创建的地图很好地解释了场景。相反,在最后两个序列中,插入了更多的关键帧,表明场景中存在一些尚未呈现的新奇事物,这可能是由于动态变化造成的。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第16张图片
最后,图10(c)显示了关键帧的柱状图,该柱状图根据关键帧相对于序列的剩余时间(从其创建时刻开始)存活的时间。可以看出,大多数关键帧在创建后不久就被剔除,只有一小部分关键帧存活到实验结束。一方面,这表明系统有一个慷慨的关键帧生成策略,这在探索中执行突然运动时非常有用。另一方面,系统最终能够选择这些关键帧的一小部分具有代表性。在这些实验中,已经证明地图随着场景内容而增长,但不随时间而增长,并且能够存储场景的动态变化,这有助于通过在环境中积累经验来执行一些场景理解。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第17张图片
5.KITTI数据集
ORB-SLAM能够处理除序列01之外的所有序列,序列01是一条几乎没有可追踪近距离物体的高速公路。序列00、02、05、06、07和09包含ORB-SLAM正确检测和关闭的回路。序列09包含一个循环,该循环只能在序列末尾的几个帧中检测到,ORB-SLAM并不总是检测到它(提供的结果用于检测到它的执行)。
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第18张图片
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第19张图片
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第20张图片
最后,展示了闭环方法的有效性以及用于在essential graph中包含边的 θmin 的影响。选择了序列 09(一个非常长的序列,末尾有一个闭环),并且在同一次执行中,评估了不同的闭环策略。在表 VI 中,展示了不同情况下的关键帧轨迹 RMSE 和优化所花费的时间:
ORB-SLAM: A Versatile and Accurate Monocular SLAM System阅读笔记_第21张图片
结果清楚地表明,在闭环之前,解决方案与最优解相去甚远,以至于 BA 存在收敛问题。即使经过 100 次迭代,误差仍然很高。另一方面,基本图优化显示出快速收敛和更准确的结果。可以看出,θmin 的选择对精度影响不大,但是减少边缘的数量,可以显着减少时间。在位姿图优化之后执行额外的 BA 会稍微提高准确性,同时显着增加时间。

你可能感兴趣的:(ORB_SLAM系列,自动驾驶,机器学习,算法)