视觉SLAMFast Relocalisation and Loop Closing in Keyframe-Based SLAM

Posted 振华OPPO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了视觉SLAMFast Relocalisation and Loop Closing in Keyframe-Based SLAM相关的知识,希望对你有一定的参考价值。

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/263621033

Article in Proceedings - IEEE International Conference on Robotics and Automation · June 2014 DOI: 10.1109/ICRA.2014.6906953

先读Abstract和Introduction,再看Conclusion,觉得文章很好且对自己研究内容有帮助的再看Related Work、Method及Experiment。一篇英文论文/期刊大概2h读完。中文则减半。

摘要

在本文中,我们首次提出了一种基于关键帧的 SLAM 的重定位方法,该方法可以在包含数千个关键帧的地图中以帧速率处理严重的视点变化。由于这种方法依赖于本地特征,它允许相机之间的互操作性,允许相机在由不同相机构建的地图中重新定位。我们还在包含数百个关键帧的循环中以关键帧速率执行闭环(检测+校正)。对于重定位和闭环,我们提出了一个带有 ORB 特征的词袋位置识别器,它能够在包含 10K 图像(没有几何验证)的数据库中识别花费少于 39 毫秒的位置,包括特征提取。我们在四个不同的数据集中评估了这个识别器的性能,实现了高召回率和没有错误匹配,并且比最先进的就地识别获得了更好的结果,快了一个数量级。

🌳一、引言

视觉 SLAM(以相机为唯一传感器的同时定位和建图)在过去十年中得到了大力发展。 如今,最扩展的技术是基于关键帧的。基于关键帧的 SLAM 使用批量优化技术对选定的帧(称为关键帧)执行地图重建,因为建图与帧速率无关,可提供非常精确的结果。最具代表性的基于关键帧的系统可能是并行跟踪和建图 (PTAM) [1]。在这项工作中,我们专注于重定位和闭环,这两个开放性问题对于真正的 SLAM 应用程序至关重要。

重定位包括在机器人姿态未知时在现有地图上定位机器人。如果我们想重用以前的地图,重新定位是必不可少的,否则除了在特定操作期间定位相机之外,地图变得毫无用处。此外,重定位对于跟踪失败后的恢复至关重要,这在视觉 SLAM 中非常常见,原因是遮挡(人在摄像机前移动)、无纹理区域或摄像机快速移动。

闭环是检测机器人何时重新访问先前建图的区域的任务,以纠正探索过程中机器人轨迹中累积的误差。跟踪数据关联能够关闭小循环。在大循环的情况下,相机位置的预测累积了很多误差,以至于数据关联无法建立当前图像和地图之间的对应关系。结果是系统表现得好像图像显示了一个新的地方,因此复制了以前绘制的区域。

在闭环和重新定位的核心是一个地点识别系统,它可以识别重新访问的地点。我们工作的贡献如下:

  • 基于具有 ORB 特征的词袋的地点识别系统,从大的视点差异识别重新访问的地点,在 10K 图像的数据库中识别地点的时间不到 39 毫秒(无需几何验证)。 该系统在四个不同的数据集中进行了验证,实现了高召回率并且没有误报。将这些结果与最先进的就地识别进行比较,得到更好的结果并且速度提高了一个数量级。

  • 一种重新定位方法,允许在具有数千个关键帧的地图中以帧速率从非常不同的视点重新定位相机。 我们通过实验测量我们的重定位能够处理的视点变化。该系统对大约 0.5 到 2.5 之间的比例变化、任何平面内旋转和超过 50 度的视点角度差异具有鲁棒性。由于重新定位是基于基于特征的位置识别器,它允许相机之间的互操作性。我们进行了一个实验,其中相机能够在由不同相机构建的地图中重新定位。

  • 基于关键帧的 SLAM 的闭环程序可以在系统需要向地图插入新的关键帧之前检测和纠正包含数百个关键帧的循环。 该过程明确地融合了重复的点并纠正了相机的定位,以便在闭环后可以顺利地继续跟踪。

🌾二、相关工作

A. 地点识别

Williams 等人的调查 [2] 比较了几种地点识别方法,并得出结论,基于外观、图像到图像匹配的技术在大型环境中的缩放比地图到地图或图像到地图方法似乎更好。在基于外观的方法中,词袋技术 [3] 因其高效率而脱颖而出。一个很好的例子是 FAB-MAP [4],但是由于它依赖于 SURF [5],它花费了 400 毫秒来进行特征提取。 Gálvez-Lopez 和 Tardós [6] 的工作,第一次使用从简要描述符 [7] 获得的二进制词袋以及非常有效的 FAST 特征检测器 [8],将特征提取的时间减少了一个数量级以上。然而,BRIEF 的使用,既不是旋转也不是尺度不变的,将系统限制在平面内轨迹和具有相似观点的循环事件。在这里,我们使用 ORB [9]、旋转不变、尺度感知特征扩展了这项工作。

B. 闭环和重定位

威廉姆斯等人[10] 基于过滤器方法在 SLAM 系统上执行重定位和闭环。他们使用二进制测试分类器的随机列表来查找图像特征和先前训练的地图特征之间的对应关系。分类器在许多不同的合成扭曲补丁和进一步的特征观察(特征收集)下进行训练,产生一个对视点变化具有鲁棒性的重定位系统。主要的可扩展性限制是内存,因为每个地图点类需要 1.25 Mb

Eade 和 Drummond [11] 在局部过滤子图的图形 SLAM 中统一重定位和闭环。他们使用词袋方法逐步构建 16 维 SIFT 描述符的词汇表,不断搜索重新访问的地方。一旦找到候选节点,他们就会使用局部地标外观模型来查找特征之间的对应关系,以计算相似度变换。当跟踪丢失时创建新的图形组件时,重新定位包括在不同图形组件之间添加链接并在同一图形组件内闭环。

斯特拉斯达特等人。 [12] 和 Lim 等人。 [13] 在基于关键帧的 SLAM 系统上执行闭环,该系统维护一个共可见图。他们使用带有 SURF 描述符树词汇的词袋方法来检测循环,然后将新链接添加到由他们的优化器处理的图中。

皮尔克等人[14] 在考虑长期运行的单目 SLAM 系统中使用 FAB-MAP 执行重定位和闭环。 Tan 等人最近的工作[15],也在动态环境中的单目 SLAM 上,使用 SIFT 执行全局定位,使用 GPU 加速,并在 KD-Tree 中安排地图点。同样关于长期操作,Johannsson 等人 [16] 使用带有 SURF 或 Brief 的词袋方法来检测其简化姿势图中的循环。 [17] 中提出的改进 PTAM 版本通过小分辨率模糊图像的平方和差来比较当前帧和以前的关键帧进行重定位。它仅限于从非常相似的角度重新定位,尽管这对于他们的增强现实目标应用程序来说不是问题。

我们的系统类似于 [11]、[12]、[13] 和 [16],因为我们使用词袋方法来检测循环,但是虽然它们不提供识别器性能的结果,但我们验证了高效率我们的位置识别器在几个数据集中的可靠性。该结果还显示出比 [14] 中使用的 FAB-MAP 更好的性能,快一个数量级。我们的重定位系统是通过相同的位置识别器实现的,与 [17] 相比,允许高视点变化,并允许相机之间的互操作性。我们没有像 [15] 中那样使用 SIFT 和 KD-Trees 的 GPU 实现,而是通过使用 ORB 和二进制词袋方法来实现实时性能。

💐三、基于外观的位置识别

为了执行重定位和闭环,我们首先需要一个位置识别方法。我们想要一个尽可能通用的识别器,从某种意义上说,它允许从非常不同的角度识别一个地方,而且速度也很快。我们建立在非常高效的 DBoW2 识别器 [18] 之上,具有二进制旋转不变、尺度感知的 ORB 特征 [9​​]。为了完整起见,我们接下来回顾 DBoW2 的工作原理。

A. 回顾 DBoW2 [6]

为了检测图像是否对应于重新访问的地方,词袋技术通过图像包含的视觉词来总结图像的内容。这些视觉词对应于描述符空间的离散化,称为视觉词汇表。 DBoW2 在从训练图像数据集中提取的大量描述符的离线步骤中创建了一个结构为树的词汇表。处理新图像包括提取关键点及其描述符,它们被分配给遍历词汇树的视觉单词。由于描述符是二进制的,因此距离由汉明距离计算。结果是一词袋向量,其中包含图像中每个词的词频逆文档频率 (tf-idf) 得分。这个分数越高,因为图像中的单词频率越高,训练数据集中的频率越低。然后使用反向索引将这个词向量包与数据库中图像的词向量包进行比较,该索引为每个词存储它出现在哪些图像中。

两个词向量包 v1 和 v2 之间的相似度是 L1-score:


这个分数被归一化为一个显示相同地点的图像所期望的分数。这与之前处理的图像近似,假设我们正在处理具有特定场景重叠的图像序列。

数据库中关闭时间的图像可能具有相似的分数。 DBoW2 充分利用了这一点,将时间上接近的图像分组,并且只为该组计算一个分数,即各个分数的总和。个人分数必须高于要考虑的阈值α。搜索完数据库后,选择得分最高的组,并将具有最大个人得分的图像视为查询图像的循环候选。

为了不被拒绝的循环候选必须与之前的 k 个查询一致。这意味着最后 k 图像得分最高的组必须形成重叠序列。这种时间一致性检查在有足够证据之前不接受循环,从而提高系统的鲁棒性。

最后,如果一个循环候选通过了几何检查,它就会被接受。 DBoW2 最初应用于原始视频序列(无 3D 信息)并使用 RANSAC 计算基本矩阵。对初始对应的搜索是详尽的,但仅在属于词汇树级别 l 的同一节点的那些特征之间进行。数据库使用一个直接索引,为图像中的每个特征存储它所属的级别 l 的节点。

B. 我们的方法:使用 ORB 进行地点识别

我们在 DBoW2 的基础上构建了 ORB 特征,这些特征是旋转不变的并且可以处理尺度变化,因此我们的位置识别器可以从非常不同的角度识别位置。我们依赖 OpenCV 库中的 ORB 实现。此实现的默认参数是提取 500 个关键点,以 8 个不同的比例,比例因子为 1.2。由于没有应用非极大值抑制,并且针对同一图像位置在多个尺度上提取了关键点,因此关键点在图像上的分布很差。我们发现应用非极大值抑制有效地改善了关键点分布,但大大降低了描述符匹配性能。相反,我们提取了 1000 个关键点,这改善了关键点分布和识别器的召回率,但代价是略微增加了 ORB 提取时间。

我们使用数据集 Bovisa 2008-09-01 [19] 在离线步骤中创建视觉词汇表。该数据集是一个包含室外和室内区域的序列,产生的词汇表将在两种情况下都提供良好的结果。我们从数据集中提取 10K 图像中的 ORB 特征,并构建一个 6 个级别和每个级别 10 个集群的词汇表,得到 100 万个单词。 [6] 中建议使用如此大的词汇表来有效地识别大型图像数据库。

我们的几何验证将取决于我们应用识别器的场景。在处理原始视频序列(识别器评估)时,没有 3D 信息,我们计算匹配图像之间的基本矩阵。在重定位的情况下,我们在关键帧候选中有 3D 信息,但在当前帧中没有,因此我们解决了 Perspective-n-Point (PnP) [20] 问题。在循环关闭中,我们在当前和匹配的关键帧中都有 3D 信息,然后我们计算 3D 到 3D 相似性变换 [21]。在所有三种情况下,我们都使用 RANSAC 方案。 ORB 特征之间的初始对应关系是通过在词汇树中属于第 4 层的相同节点的那些特征之间的详尽描述符比较来计算的(从叶子向上计数),并应用最近邻比率 0.6。我们还建议使用方向一致性测试来过滤掉错误的对应关系,提高鲁棒性并加快几何验证。对于每个初始匹配,我们计算两个图像中 ORB 关键点之间的旋转增量,以 2π/60 的离散化方式对旋转进行投票,我们在实验中发现它足以丢弃大部分异常值。只有这三个人的对应关系大多数投票的轮换将被接受。我们考虑不止一次旋转,因为不同深度的对象使旋转增量沿图像不均匀。我们的地点识别器的设置如表一所示。


C. 实验评估

为了评估我们的地点识别器的性能,我们在四个图像序列中运行系统,NewCollege [22]、Bicocca25b [19]、Malaga6L [23] 和 CityCentre [24]。我们测量检测到的循环的召回率和精度,以与 [6] 中相同的频率和相同的几何检查(使用 RANSAC 的基本矩阵)处理序列以进行比较。在几何验证中,我们包括旋转一致性检查。实验在 Intel Core i5 @ 2.30 GHz 计算机中进行。表 II 显示了我们的结果以及 [6] 中提供的 DBoW2 与 Brief 和 FAB-MAP 2.0 的结果(仅适用于两个数据集)。

如表 II 所示,我们的位置识别器在所有数据集中实现了高召回率,没有误报(100% 精度)。它在所有序列中都比BRIEF好,除了Bicocca25b,这是一个室内序列,其中循环具有非常相似的观点。另一方面,NewCollege、Malaga6L 和 CityCentre 是户外序列,在循环事件中存在较大的视点差异,因此 ORB、旋转不变和尺度感知性能更好。我们的方法在 Malaga6L 和 CityCentre 中的召回率也高于 FAB-MAP 2.0。图 1 显示了我们的识别器在每个数据集中检测到的循环。

D. 执行时间

为了完成我们提出的地点识别系统的性能分析,我们在 NewCollege 的 10K 图像序列中运行该系统,并测量了 ORB 提取和闭环检测的执行时间。我们对 RANSAC 计算基本矩阵所花费的时间不感兴趣,因为我们使用另一个几何检查来进行闭环和重新定位。时间如图 2 所示。ORB 提取平均在 13.3 毫秒内执行,对于包含 10K 图像的数据库,闭环检测在不到 25 毫秒内完成。这些时间远非 SURF 提取所需的 400 ms [4]。

✨四、基于关键帧的 SLAM 中的闭环

在本节中,我们将介绍如何检测和纠正 PTAM 中的循环。我们在建图线程中实现我们的方法,因为它足够快以关闭中等大小的循环,而不会延迟映射任务。接下来我们描述我们方法的不同步骤。

A. 关键帧数据库

当一个新的关键帧到达时,我们提取 ORB 特征并将一个视觉词关联到每个描述符,遍历词汇树。然后我们组成词袋向量并将其插入到关键帧数据库中。为了保证识别器性能,我们提取 ORB 特征,如第三节中所做的那样,而不是使用 PTAM 跟踪的特征。使用 ORB 描述 PTAM 特征会产生非常差的结果,这是因为 PTAM 使用比例金字塔来提取其特征,比例因子为 2。 ORB 需要低得多的比例因子(我们使用 1.2)来提供良好的匹配性能。一旦新的关键帧被插入到数据库中,它就会被添加到循环队列中。

B. 搜索循环候选

在映射线程完成处理新关键帧并执行局部束调整后,它会提取循环队列中最旧的关键帧,理想情况下,它应该只包含最后插入的关键帧。然后地点识别器将在关键帧数据库中搜索循环候选,该循环候选必须与之前的 3 个关键帧匹配一致。如果找到候选,我们检查循环是否已经被 PTAM 关闭,搜索当前和循环候选关键帧之间共有的地图点测量值,在这种情况下不需要额外的计算。

C. 几何验证:相似变换

纠正循环的第一步是计算从当前关键帧相机坐标系到循环候选坐标系的变换。这种转换是了解探索过程中累积的漂移的唯一方法,在单目 SLAM 中,漂移可以发生在七个自由度:三个平移、三个旋转和缩放 [25]。因此,我们计算从当前关键帧 k 到循环候选 l 的相似变换 Sim(3) [25]:

其中s∈R+是比例因子,R∈SO(3)是一个旋转矩阵,t∈R3是一个平移向量。这种变换的计算为我们提供了几何验证,如果成功,我们继续纠正循环,否则我们拒绝循环候选。

为了计算转换,首先我们需要在当前和循环候选关键帧中找到一组 ORB 特征之间的初始对应关系。我们使用第 III-B 节末尾解释的程序。


用于识别的 ORB 特征不同于 PTAM 用于映射的特征。为了恢复 ORB 特征的 3D 坐标,我们用三个最近的 PTAM 跟踪特征对每个特征的深度进行插值。我们只对 z 坐标(沿光轴)进行插值,并将此信息与图像中的 x 和 y 坐标一起使用,以恢复相机坐标系中的 3D 坐标。所有距离跟踪特征超过 10 像素的特征都将被丢弃,因为插值可能很差。

在这一步之后,我们有一组 3D 到 3D 点的对应关系。现在我们尝试使用 RANSAC 方案找到由足够多的对应关系支持的相似变换。在每次迭代中,我们选择三个对应关系并计算使用我们自己实现的 [26] 的封闭形式解决方案的相似性变换。然后我们计算有多少对应关系支持这种转换,检查两幅图像中 3D 点的重投影误差。如果当前图像和循环候选图像中的重投影误差之和小于 6 个像素,则将对应计算为非内点。如果 RANSAC 在不到 70 次迭代(成功概率为 0.99)中找到了 40% 的初始对应所支持的变换,则几何验证被认为是成功的。我们用所有的内点重新计算转换,如果发现更多内点,则再次重新计算。

D. 循环优化
为了有效地闭合循环,后端的捆绑调整会优化整个地图的点和位姿。然而,由于累积的漂移,地图的当前状态与解决方案和优化器相去甚远,特别是在使用稳健的代价函数时不会收敛。因此,我们计算一个初始解决方案,优化从当前到循环关键帧姿势形成的姿势图。我们遵循[25]的方法。

首先,我们将所有姿势的 SE(3) 绝对变换 Ti,w 转换为相似性 Sim(3) Si,w,保持旋转和平移并将比例设置为 1。然后我们计算相对变换ΔSi ,j, 在一个姿势和下一个姿势之间,使用当前关键帧和循环关键帧 Sk,l 之间计算的相似度变换来关闭循环。然后,我们希望最小化姿势 Si,w 和 Sj,w 之间的残差 ri,j 相对于切线空间 sim(3) 中的约束 ΔSi,j 和最小表示:

其中 logSim(3) : Sim(3)→ sim(3) 从过度参数化的表示中映射变换到切线空间和 (·)∨sim(3) : sim(3) → R7 是从切线空间映射到最小表示的 veeoperator,其元素与变换的自由度相同 [21 ]。

最初所有的残差都是零,除了循环。然后,我们优化姿势以沿图分布此错误。要最小化的成本函数定义如下:

其中 Λi,j 是残差 ri,j 的逆协方差,并设置为恒等式。我们从优化中排除循环关键帧姿势,以固定解决方案的七个自由度。我们使用在图优化器 g2o [27] 中实现的 Levenberg-Marquadt 方法,并通过使用基于 Cholesky 分解的求解器 CHOLMOD 来利用问题的稀疏结构。

优化姿势后,我们需要校正与其关联的 3D 点。对于每个点 xj,我们选择一个源关键帧 Ti,w 并使用优化后的 Scori,w 映射点,如下所示:


最后一步是将校正后的相似变换 Scori,w 转换回 3D 刚体变换 Tcori,w。地图点的比例在(6)中已经被修正,所以我们只是去掉了相似度中的比例因子并保持旋转,因为它不受比例的影响。然而,平移是针对相似度的比例因子计算的,我们需要重新缩放它。


下次 PTAM 执行全局捆绑调整时,将使用此种子联合优化姿势和点。

E. 融合点
当 PTAM 本身没有闭合环路时,会在显示先前重建区域的关键帧中创建地图点,从而复制地图点(多个点对应于空间中的同一物理点)。因此,在纠正了位姿图之后,我们必须处理闭环处的重复点。

我们从当前关键帧 Tk,w 开始并在其上投影循环关键帧 Tl,w 中看到的点,擦除当前关键帧中与重新投影点的距离小于 20 像素的所有点。之后我们做同样的事情,但将点从 Tl−δ,w 和 Tl+δ,w forδ 从 1 投影到没有点被擦除。这个过程也适用于 Tk-δ0,w for δ0 从 1 直到没有点被擦除。一旦我们摆脱了重复的点,我们需要在所有被删除点的关键帧中执行新的数据关联。我们使用较大的搜索半径,因为姿势和点仍未联合优化。这种数据关联非常重要,因为它是附加闭环的唯一方式,当捆绑调整稍后由 PTAM 的后端执行时。

F. 跟踪校正
闭环的最后一步是通知前端有关闭环的信息并更正相机位置和速度。首先,我们计算从当前相机位姿 Tc,w 到当前关键帧 Tk,w 的未校正位姿的相对变换:

然后,我们必须根据在第 IV-C 节中计算的相似性变换的比例因子 sk,l 来缩放 ΔTc,k 的平移:

我们现在将 ΔTcorc,k 应用于校正后的当前关键帧姿态 Tcork,w 以恢复相机姿态:

最后,我们需要修正衰减速度运动模型,将线速度除以 sk,l。

🍉五. 基于关键帧的 SLAM 中的重定位

我们的重新定位系统在任何时候都会启动轨道丢失或作为在先前地图中定位的初始化。接下来我们描述我们的重定位过程的步骤。

首先,我们从相机中提取输入帧中的 ORB 特征,参数见第 III-B 节(1000 个关键点,8 个比例级别,比例因子为 1.2)。然后 ORB 描述符与一个视觉词相关联,我们为当前帧组成词包向量。然后我们的地点识别器将在数据库中搜索关键帧候选者。我们假设存在一个关键帧数据库,该数据库可能是为闭环创建的,也可能是另一个创建的,例如在离线步骤中创建的。在这里,我们希望尽快获得候选者,因此,我们既不使用最小阈值α,也不使用时间一致性检查。尽管这降低了鲁棒性,但进一步的几何验证和系统在重新定位后能够跟踪地图的要求,减轻了这种鲁棒性的损失。

如果地点识别器找到一个关键帧候选者,我们接下来使用第 III-B 节末尾解释的过程计算当前帧中的 ORB 特征和关键帧候选者之间的一组初始对应关系。

一旦我们有了一组初始对应关系,我们就需要检索关键帧候选中 ORB 特征的 3D 坐标。这是通过在关键帧候选中使用三个最近的跟踪特征进行插值来完成的。正如在闭环(第 IV-C 节)中所做的那样,我们不会对那些距离跟踪特征超过 10 个像素的 ORB 特征进行插值,因为插值会很差。在这一步之后,我们有一组 2D-3D 点对应关系(从当前帧到关键帧候选)。

在这一点上,我们试图找到一个与 2D-3D 对应一致的相机姿势。我们使用 RANSAC 方案,在每次迭代中选择四个对应关系来解决 Perspective-n-Point 问题,该问题返回一个相机位姿。我们使用 [20] 的 C++ 实现。我们在每次迭代中计算内点的数量,即支持相机位姿的对应关系,检查重投影误差。如果 RANSAC 能够在少于 178 次迭代(如果存在解决方案的情况下成功率为 99%)中找到支持超过 40% 的初始对应(但少于 20 个)的相机姿势,则认为它是成功的。相机位姿经过改进,使用所有内点进行计算,如果发现更多内点,则再次重新计算。

最后,使用计算出的相机位姿,跟踪线程必须能够跟踪地图中的相机。它必须能够跟踪相机超过 20 帧,才能让映射线程再次插入新的关键帧。如果相机姿势错误,跟踪线程将无法跟踪相机,并且重新定位过程将再次启动。

🌃六、实验

我们使用建议的重定位和闭环模块评估我们的 PTAM 版本的性能,在几个实验。我们在与第 III-C 部分相同的 Intel Core i5 @ 2.30 GHz 计算机上进行实验。

A. 闭合循环
在本实验中,序列包括手持摄像机在卧室内横向移动,面向墙壁并完成循环轨迹。相机是 Unibrain Fire-iTM,分辨率为 640×480,帧率为 30。图 3 显示了第一次和第二次看到相同位置的图像序列。

PTAM 本身无法关闭环路,如图 4 所示。当我们在激活环路关闭模块的情况下运行系统时,会检测到并关闭环路。

图 5 显示了我们的循环检测器匹配的两个关键帧。

图 6 显示了环路闭合后的瞬间。

图 7 显示了 PTAM 在没有和启用闭环模块的情况下对房间进行的最终重建。原始 PTAM 无法关闭环并复制地图,从而导致重建效果不佳。

使用我们的循环闭合方法,循环在运行时闭合,极大地改进了重构。我们测量了 3 次执行的时间,发现系统平均花费 98.2 毫秒来检测和关闭包含 55 个关键帧的循环。表 III 显示了每个步骤所花费的时间。

B. 重定位限制

这个实验的目的是找到我们的重定位系统能够处理的观点变化。具体来说,我们测量尺度的变化、平面内旋转和视点角度的变化。我们从重建一面墙开始,然后相机被遮挡并移动到另一个地方,让系统尝试重新定位。图 8 显示了实验结果。我们的系统可以处理 0.36 和 2.93 之间的比例变化、任何平面内旋转,并且相机可以重新定位到具有光轴角度差可达 59 度。这个结果只是指示性的,因为它们会随着场景属性(纹理、对象分布等)而变化。

C. 互操作性:更换相机

在这个实验中,我们展示了我们的系统,它依赖于本地特征和 PnP,允许相机之间的互操作性。我们使用 Unibrain 相机从第 VI-A 节中描述的实验中构建的卧室地图分开。然后我们运行一个序列,其中一个带有 Kinect 的机器人在房间内导航。我们停用映射线程并查看 PTAM 是否能够仅使用先前的地图执行定位。虽然 Kinect 和 Unibrain 相机具有相同的分辨率,但 Unibrain 的视场角约为 80°,而 Kinect 为 60°。我们的重新定位系统最初能够重新定位摄像机,并且 PTAM 在机器人移动时跟踪摄像机。当 PTAM 由于机器人面临的地图特征不足的区域而丢失轨道时,执行了更多的重新定位。图 9 显示了一些执行的重定位,表 IV 显示了实验中的平均重定位时间,其中初始地图包含 76 个关键帧。

尽管序列是在不同的时间点记录的,但场景基本保持不变,因此可以执行重新定位和 PTAM 跟踪。有一个错误的重定位是针对一张不完全在同一个地方的大海报,见图 9 中的右下角图像。

最近的研究如 [14]、[15] 显示了动态环境中 SLAM 的有希望的结果。随附的视频显示了闭环的实时执行和互操作性实验。

🚀七、结论

我们基于来自 ORB 特征的词袋的位置识别器已被证明是一种非常有效且强大的通用相机轨迹识别器。据我们所知,没有更快的系统可以从如此大的不同角度识别地点。

我们证明了我们的重定位系统可以从严重的视点变化中恢复相机姿态。实验表明,在包含 76 个关键帧的地图中,它可以在不到 36 毫秒的时间内重新定位。系统仅花费 6.4 毫秒来寻找关键帧候选,这是唯一取决于地图大小的步骤。地点识别器在包含数千张图像的数据库中可以很好地扩展,只需不到 10 毫秒即可找到图像候选(如图 2(b) 所示)。因此,我们声明我们的重定位系统可以在包含数千个关键帧的地图中以帧速率(~ 25 Hz)工作。此外,我们已经证明,我们的重定位系统能够在以前由另一个相机构建的地图中重新定位相机。因此,它允许相机之间的互操作性。

我们的闭环方法平均花费 98.2 毫秒来关闭包含 55 个关键帧的闭环,只花了 9.7 毫秒检测闭环, 花了18.9 毫秒来优化位姿图,这是唯一取决于地图大小的时间。关键帧之间的时间间隔约为 670 毫秒。根据大量空闲时间,我们的系统可以在新的关键帧到达之前轻松关闭数百个关键帧的闭环。

进一步的研究可以集中在将提出的重定位和闭环程序集成到大规模 SLAM 系统中。我们还计划研究如何扩展系统以在动态环境中长期工作,作为最近一些有前途的工作 [14]、[15]。

还有你错过的往期精彩
Bags of Binary Words for Fast Place Recognition in Image Sequences
ORB-SLAM: Tracking and Mapping Recognizable Features
Incremental Dense Semantic Stereo Fusion for Large-Scale Semantic Scene Reconstruction

以上是关于视觉SLAMFast Relocalisation and Loop Closing in Keyframe-Based SLAM的主要内容,如果未能解决你的问题,请参考以下文章

如何选择机器视觉软件

如何做视觉实验?

如何开展一个机器视觉检测项目?

视觉暂留:视觉暂留

机器视觉做啥用的?

机器视觉的应用领域