【视觉SLAM】ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking

Citations: Y. Diao, R. Cen, F. Xue.ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking[C].2021 13th International Conference on Advanced Computational Intelligence (ICACI). Wanzhou,China.2021:160-165.
Keywords: Visualization,Simultaneous localization and mapping,Cameras,Real-time systems,Aircraft navigation,Central Processing Unit,Trajectory

摘要

本文介绍了ORB-SLAM2S,这是一种基于ORB-SLAM2的快速完整的SLAM系统,适用于单目、立体和RGB-D相机。该系统在小型和大型室内和室外环境中以更快的速度在CPU上同时确保准确性。该系统包括一个轻量级前端,这是一种用于非关键帧的稀疏光流方法,以避免提取关键点和描述符,从而实现高速实时性能。 对于关键帧,使用基于特征的方法确保与ORB-SLAM2几乎相同的准确轨迹估计。对著名公共序列的评估表明,我们的方法实现了与ORB-SLAM2几乎相同的精度和更快的速度性能,是ORB-SLAM2的3~5倍,在大多数情况下是更快的SLAM解决方案。实验证明,该系统提供了快速轻量级的视觉SLAM,同时确保了低成本移动设备的准确性。

一、介绍

SLAM最早是在机器人领域提出的[1] –[3]。它意味着机器人从未知环境的未知位置出发,通过反复观察运动过程中的环境特征来定位其位置和姿态,然后根据其位置构建周围环境的增量地图。 与其他传感器相比,该相机具有硬件成本低、视觉信息丰富等优点,吸引了众多学者和公司。仅使用摄像头作为外部传感器的SLAM系统称为视觉SLAM(VSLAM)[3],它为移动机器人提供实时姿势。

近年来,随着机器人、无人机、无人驾驶、虚拟现实(VR)和增强现实(AR)的快速发展,VSLAM已成为学术和应用领域的热门研究课题,被认为是实现自主移动机器人、VR和AR的关键技术[4]。 将VSLAM商业化到AR,VR和其他移动设备需要大量的计算能力,甚至是昂贵的GPU。因此,轻量级、快速、实时、准确的系统仍然是VSLAM的关键问题。实时是VSLAM技术的关键性能指标,用于在移动机器人AR和VR动态运行时提供更快的实时最佳姿势,并重点关注实时操作。

大多数基于特征的VSLAM系统[5]可以使用单目,立体或RGB-D相机在大约10~30 HZ的标准CPU上实时执行,并包括基于描述符的环路检测和重新定位功能。然而,基于特征的方法需要花费大量时间来提取每帧的不变角和鲁棒描述符,这成为限制实时性能的主要因素。直接法[6]和光流法[7]避免了提取和匹配描述符,从而获得了更快的速度性能。但是,它们失去了基于描述符的循环检测和重新定位功能。

因此,本研究提出了基于ORB-SLAM2的ORB-SLAM2S[8]。通过结合基于特征的光流方法和稀疏光流方法,解决了所有这些问题,不仅可以保持基于特征的方法的轨迹精度,还可以获得稀疏光流方法更快的实时性能。 本文的主要贡献如下:

  • 完整、轻量、准确且快速的 VSLAM 系统,适用于单目、立体和 RGB-D 相机,包括闭环和重新定位;

  • 通过使用轻量级前端结合基于特征和稀疏光流的方法,实现了比ORB-SLAM2更快的实时性能,同时保证了精度;

  • 立体、RGB-D和单目结果表明,ORB-SLAM2S在确保精度的同时实现了更快的速度性能。

本文的组织结构如下:第二节介绍相关工作,第三节介绍系统,第四节介绍评价结果,第五节最后得出结论。

言外之意,本文的工作就是在ORB-SLAM2上将ORB特征点提取法替换为稀疏光流法,速度更快,按道理精度是跟不上的,那么如何保持精度能和ORB-SLAM2齐平就是看点了。

二、相关工作

轨迹精度和实时性能是VSLAM的两个重要指标。根据特征点和描述符的需要,目前的VSLAM系统分为基于特征的方法,直接方法和光流方法。在这一部分中,将讨论不同方法的轨迹精度和实时性能。

A. 特征点法

基于特征的SLAM的一般方法是从每帧中提取一系列稀疏稳定的边[9],块[10]或角[11] –[13],然后一些方案提取与特征对应的不变描述符,并使用描述符来匹配特征。通过这些匹配的关键点,摄像机的运动和结构可以通过多视图几何体恢复。在这种SLAM算法中,由于存在关键点的鲁棒描述子,基于特征的方法可以建立更长时间的公共视图关系,并添加更多的约束关系,如公视图[14]、重定位和环路检测,从而使该方法获得更好的鲁棒性和轨迹精度。然而,关键点和不变描述符的提取非常耗时,这是基于特征的方法的常见缺陷。 ORB-SLAM [8], [11] 是现代 SLAM 系统中最完善、最易于使用的系统之一,代表了主流基于特征的方法的巅峰。ORB-SLAM2 系统提取每个帧的特征点和描述符,但仅保留和用于关键帧中的位置、地图和优化。对于非关键帧,关键点和描述符在求解姿势后将被丢弃,这对地图和轨迹精度没有贡献。因此,仅使用关键帧的关键点和描述符几乎可以保证基于特征的方法的所有优点。对于非关键帧,无需提取耗时成本较高的关键点和描述符。

在ORB-SLAM2S中,仅提取选定关键帧的特征,保证了闭环和重定位的能力,并显著缩短了计算时间。因此,ORB-SLAM2S实现了与ORB-SLAM2几乎相同的精度。

B. 直接法

直接法不提取关键点和描述符。它仅使用G2O [15]等非线性优化工具来最小化光度误差并在构建半密集地图[6]时获得姿势。但是,这种方法受照明的影响很大。灰色梯度的非凸性使得直接法容易陷入局部极值,无法得到最优解。直接法的实时性能由跟踪点的数量决定。当跟踪点数量少时,速度是如此之快。例如,在稀疏直接(如DSO[16])中,当跟踪点数量较大时,实时性能会下降。同时,轨迹精度受到跟踪点数量的限制。为了获得更高的精度,只能使用数量校正质量。在某些方法中,他们使用半直接的方式来跟踪表观纹理特征,以保持稀疏性和轨迹精度之间的平衡,例如 SVO [17]。总之,由于缺乏关键点和描述符,直接方法缺乏循环检测的能力,这使得我们最终的地图结果不能全局一致。

C. 光流法

稀疏光流法在SLAM领域的光流法中更为成熟。此方法仅在必要时提取稳定的关键点(例如 FAST [18]),而不提取描述符。在灰度值不变的假设下,通过最小化光度误差得到对应的匹配点,通过匹配点对求解位姿。 这种方法的优点是不需要提取描述符,只提取少量的稳定关键点,这是速度和准确性之间的权衡。但是,由于缺少描述符,此方法缺少环路闭合和重新定位。

在ORB-SLAM2S中,稀疏光流法用于以亚像素精度从帧到帧进行非关键帧跟踪,以避免提取描述符,从而实现高速实时性能。因此,我们的方法是轻量级的,并且可以更快地与标准中央处理器(CPU)配合使用。

这是读过的最清晰易懂的相关工作介绍,就是主流的三个帧匹配方法:特征点法、直接法和光流法。

三、ORB-SLAM2S

Orb-Slam2s系统的总体概述如图1所示。Orb-Slam2s 建立在基于功能的 ORB-SLAM2 之上,为了方便读者,这里总结了其主要内容。三个主要并行线程的工作方式如下:

  1. 跟踪:跟踪线程结合稀疏光流法(图1中的光流跟踪模块)和基于特征的方法(图1中基于特征的跟踪模块)来查找与本地地图的匹配,并应用仅运动束调整(BA)以最小化重投影误差,从而跟踪每一帧;

  2. 局部建图:局部建图线程管理和优化局部共能图和关键帧,实现本地BA;

  3. 闭环:闭环线程检测大循环,并通过执行姿势优化来纠正累积漂移。优化姿态图后,线程使第四个线程能够执行完整的BA,并计算最佳运动和稀疏点云解决方案。

请注意,我们的系统仅在跟踪线程中与 ORB-SLAM2 不同。 在本节的其余部分,我们将介绍如何将稀疏光流与基于特征的方法相结合,以加快跟踪线程的速度并确保准确性。有关其他系统块的详细说明,请参阅 ORB-SLAM2 的出版物 [8] [11]。

A. 系统引导

当系统启动时,基于特征方法的地图初始化将起作用。它使用第一帧创建第一个关键帧,将其姿势设置为原点,并从所有关键点创建初始地图。对于地图和关键帧,光流跟踪用于通过间接跟踪关键帧来仅求解每个帧的姿势,而无需提取关键点和描述符。当跟踪的特征点数量较少时,该帧被视为关键帧,基于特征的跟踪模块将起作用。

跟踪线程示意图如图2所示,其中地图点由关键帧生成,然后通过光流方法间接跟踪。

在这里插入图片描述
图1. Orb-Slam2s系统采用跟踪、局部建图和闭环三种主线程并行结构开发,可以在闭环后创建第四个线程来执行完整的BA。我们的跟踪线程(绿色块)对非关键帧采用稀疏光流方法,如红色块所示;在关键帧中,使用基于特征的方法,如紫色块所示。

对于非关键帧,光流用于跟踪关键帧,以建立与关键帧的映射点的匹配。在跟踪过程中(如图 2 中的箭头所示),第一帧中跟踪的地图点通过光流从帧传递到帧以间接跟踪关键帧。在此过程中,不会提取新的键点和描述符。此策略的优点如下:

  1. 由于共视图和闭环的存在,基于特征的关键帧的精度更高。因此,对关键帧进行间接跟踪,而不是直接求解帧与帧之间的运动增量,以避免累积漂移。
  2. 对于光流对照明的灵敏度,通过帧到帧跟踪而不是关键帧到帧来保证光流算法的稳定性。

仅从关键帧中提取关键点和描述符,而不是像原始系统一样提取每一帧,以实现加速并保持精度。

B. 使用光流跟踪关键帧

光流:稀疏光流法被使用在光流跟踪模块。参考帧的像素灰度值可以记为 lr(u,v)。假设参考点移动到了 (u+Δu,v+Δv) ,像素灰度值是lc(u+Δu,v+Δv),像素灰度值是不变的。那么光流问题可以被定义为:

在这里插入图片描述

其中 {△u, △v} 是运动增量,w代表以 (u, v) 为中心的一个方块,边长是2w+1。

在这里插入图片描述
图3. 匀速运动模型里,我们假设在上一时刻的运动量△Tk-1和当前时刻的运动量相同,即 △Tk ≈ △Tk-1。

匀速运动模型:光流法通过公式1匹配到观察的点对,但是灰度不变假设太理想化,只适合小范围的匹配。为了解决这个缺点,一个匀速模型被用做图3。这个模型的增量从k-1到k-2帧被定义为△T ∈ SE,假设当前帧和上一帧的动量相等,有:
在这里插入图片描述

世界坐标系W到相机坐标系C的变换矩阵就是Tcw,作者在假设情况下给出以上公式,无证明。把世界坐标系下由关键帧特征匹配生成的地图点Pw(x, y, z)投影到相机坐标系中,当前帧的(u,v)像素对应的相机坐标为:

在这里插入图片描述
K是相机内参,z是地图点在相机坐标系下的深度。在当前帧下预测的坐标点Pc(uv)∗会在我们的光流迭代取得初值:

在这里插入图片描述

在这里插入图片描述
**图 2.**对于关键帧提取特征点,非关键帧采用光流法进行特征点匹配,筛选坏帧和坏点。

C.位姿预测

系统BA优化相机的位姿Tcw。仅运动BA最小化3D点的反投影误差,在世界坐标系下的3D点Pw,关键点Pw和所有的匹配集合关系:

在这里插入图片描述
在这里插入图片描述
图4. ORB-SALM2系统在KITTI 00序列上的时间开销。

D. 新的关键帧决策

在我们的光流跟踪模块中,当跟踪地图点的数量较少时,会将其视为关键帧并启用基于特征的跟踪模块。当阈值设置为 200 时,系统可以正常工作。在特征点跟踪模块中,遵循原始系统的策略,利用描述符匹配建立共可见性图,剔除冗余关键帧。

E. 基于特征的跟踪

如图 4 所示,基于特征的方法消耗大量时间,提取 ORB 特征所花费的平均时间占整个跟踪线程的 73%。因此,基于特征的跟踪模块仅用于关键帧。当光流跟踪模块发送关键帧时,将启用基于特征的跟踪。如输入处理模块(图 1 中的橙色块)所示,将提取 ORB 特征,并使用 BRIEF 描述符进行匹配;接下来使用光流法的结果作为初始值来优化姿态;然后跟踪本地映射以保证更好的本地一致性,最后删除多余的图像帧并将其发送到本地映射线程。

注意,与原系统的区别在于,当前帧的位姿是通过光流法计算出来的,所以描述符匹配和姿态优化会更快。这将在第四节中说明。

四、评估

该系统已在两个流行的数据集(包括室内和室外大型和小型场景)中对立体、RGB-D 和单眼摄像头进行了详细评估。它与原始最先进的系统进行了比较。我们的比较实验在配备英特尔酷睿 i5 双核 CPU 和 16GB 内存的笔记本电脑上运行。 本节的每个数据集上显示了每个帧的时间消耗和轨迹精度比较。使用了两个标准指标,包括 [21] 中提出的绝对姿势均方根误差 (RMSE) 选项卡,以及跟踪模块的平均时间消耗。

A. TUM RGB-D 数据集

TUM 数据集 [21] 是来自 RGB-D 传感器的室内序列,其中包含用于评估 VSLAM 的不同纹理、照明和结构条件。评价结果见表I。结果表明,我们系统的轨迹精度与原系统几乎相同,速度性能提高了约3~5倍。

表一 RGB-D相机在TUM数据集中精度和时间消耗的比较

在这里插入图片描述

图 5 显示了跟踪模块中每一帧的时间消耗。图5间接反映了我们系统的工作过程。首先,有许多间隔毛刺,这是基于特征的耗时关键帧。大多数帧在底部属于低成本的非关键帧,不需要提取关键点和描述符。其次,从关键帧到关键帧,有一个时间随着大头和小尾而递减的三角形。这是因为在间接转移跟踪的过程中,关键点逐渐丢失。当跟踪的关键点很少时,将启动基于要素的跟踪。最后,需要注意的是,我们的关键帧的时间消耗略低于原始系统,因为我们的关键帧插入没有那么密集,以至于多线程不会拥塞。同时,我们的关键帧以光流跟踪计算结果为初始值,有效减少了描述子的匹配范围和后续求解的迭代时间。图6显示了估计轨迹的一些示例。

在这里插入图片描述
图5. RGB-D 在 TUM fr1/xyz 中的耗时比较。

表二 Kitti 数据集中的立体相机
在这里插入图片描述

在这里插入图片描述
图6. 估计轨迹和地面实况,单位为 TUM fr1/desk、fr1/room、fr1/xyz 和 fr2/desk。

B. KiTTI数据集

KITTI数据集[20]包括汽车在城市和高速公路环境中收集的校正后分辨率为1240×376像素的立体序列。序列 00、02、05、06、07 和 09 包含循环。ORB-SLAM2S可以像原始系统一样检测所有环路,这验证了我们的光流跟踪模块不会影响基于特征的环路检测功能。根据公布的真实情况,所有11个序列的评估结果如表II所示。我们系统的轨迹精度比原来的系统略差,但速度性能提高了约3~5倍。在序列01中,ORB-SALM2S获得的轨迹精度较差,因为序列包含动态运动目标,光流算法不能很好地消除它。每个帧的时间消耗细节如图 7 所示。图8显示了估计轨迹的一些示例。
在这里插入图片描述
图7. KITTI 00 中立体声的时间消耗比较。

在这里插入图片描述
图8. KITTI 00 中立体声的估计轨迹和真实情况。

C. TUM单目数据集

在单目评估中,TUM数据集的深度图被忽略,仅使用单目图像作为输入数据。图9以TUM fr1/xyz为单位详细显示了每帧的运行时间消耗,并表明速度性能大大提高。图 10 中 TUM fr10/xyz 中的示例表明,我们系统的轨迹精度几乎与原始系统相同。

在这里插入图片描述
图9. TUM fr1/xyz 中单目的时间消耗比较。
在这里插入图片描述
图10. 估计轨迹和 6 个自由度,包括 TUM fr1/xyz 中单目的角度和平移。

五、结论

在本文中,介绍了一种完整、轻量级、准确且快速的VSLAM系统,用于单目、立体和RGB-D相机,包括闭环和标准CPU上的重新定位。实验证明,该系统旨在提供快速轻量级的VSLAM,同时确保准确性。通过使用轻量级前端结合基于特征和稀疏光流方法,实现了比ORB-SLAM2更快的实时性能,同时确保了精度。

未来的扩展可能包括构建基于立体和RGB-D相机的实时导航地图,例如飞机等太空机器人的八叉树地图和飞机机器人的网格地图。

本文基于ORB-SLAM2系统进行了特征点匹配上的改进,在保证相机位姿估计准确性不变的同时,提高了系统的运行速度。具体来说,后端和闭环并没有改进,在前端中对关键帧依然提取ORB特征点,对非关键帧不再使用特征点法,而使用稀疏光流匹配地图点和特征点,并且选取关键帧很稀疏,可以有效降低每帧的运行时间。在TUM和KITTI数据集上都优于ORB-SLAM2系统。
  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
ORB-SLAM2是一种基于二维图像的实时单目视觉SLAM系统,可以在没有先验地图的情况下,从单个摄像头的输入中实时定位和建立环境模型。为了更好地理解ORB-SLAM2的原理和代码实现,我们需要逐行分析其核心算法。 ORB-SLAM2的主要原理是通过特征提取,特征匹配和位姿估计来实现定位和建图。在代码中,我们可以看到一些关键的数据结构和函数调用,这些都是实现这些原理的关键。 首先,ORB-SLAM2使用FAST特征检测器在图像中检测关键点。这些关键点代表图像中的有趣区域。然后,使用ORB描述符对关键点进行描述。ORB描述符使用二进制位串来表示关键点周围的特征。 然后,ORB-SLAM2使用词袋法(Bag-of-Words)模型来进行特征匹配。它首先通过建立一个词典来表示所有关键点的描述符。然后,使用词袋模型来计算图像之间的相似度,从而找到匹配的关键点。 接下来,ORB-SLAM2使用RANSAC算法来估计两个图像之间的相对位姿。RANSAC算法通过迭代随机采样的方式来筛选出最佳的匹配关系,从而得到相对位姿估计。 最后,ORB-SLAM2使用优化算法(如g2o)来进行位姿图优化,从而更精确地估计相机的位姿。通过优化,ORB-SLAM2能够减少位置漂移,并在动态环境下更好地跟踪相机的位置。 总的来说,ORB-SLAM2通过特征提取、特征匹配和位姿估计实现实时单目视觉SLAM。核心代码实现了特征检测、描述符提取、特征匹配、RANSAC算法和图优化等关键步骤。了解这些原理和代码实现,可以帮助我们更好地理解ORB-SLAM2系统背后的工作原理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

振华OPPO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值