ORBSLAM系列|ORB-SLAM2论文带读(上)

发布于 2023-9-25 14:30
浏览
0收藏

ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区

摘要

本文针对单目、双目和RGB-D相机提出了ORB-SLAM2,它是一个完整的SLAM系统,包含地图复用、回环和重定位功能。在各种环境下,系统实时地工作在标准CPU上,从小型手持室内序列到工业环境中飞行的无人机,以及在城市周围行驶的汽车。该系统后端是基于单目和双目观测的BA,这允许进行具有度量尺度的精确轨迹估计。本文系统包含一种轻量级定位模式,它利用视觉里程计跟踪没有建图的区域,并且匹配地图点从而实现零漂移定位。对29个主流公开序列的评估表明,本文方法实现最先进的精度,在大多数情况下是最精确的SLAM解决方案。我们发布了源代码,不仅是为了有益于SLAM社区,还为其它领域的研究人员提供现成的SLAM解决方案。

介绍

同时定位和建图(SLAM)是近20年来计算机视觉和机器人社区的一个热门研究主题,最近引起了高科技公司的关注。SLAM技术构建未知环境的地图,并且在地图中定位传感器,其着重于实时运行。在不同的传感器模式中,相机价格便宜,并且提供丰富的环境信息,从而实现鲁棒和精确的位置识别。因此,视觉SLAM解决方案(其中主要传感器是相机)是如今主要的研究热点。位置识别是SLAM系统的一个关键模块,其用于回环(即检测传感器何时返回已建图区域,并且纠正探索过程中的累积误差),并且在跟踪失败后(由于遮挡或者激烈运动)或者系统重新初始化时重定位相机。


视觉SLAM能够通过仅使用单目相机来执行,这是价格最便宜且最小的传感器设置。然而,由于仅从单个相机无法观测到深度,因此地图和估计轨迹的尺度是未知的。此外,系统初始化需要多个视角或者滤波技术以生成一张初始地图,因此它无法从第一帧开始三角化。最后值得一提的是,单目SLAM受到尺度漂移的影响,并且如果在探索过程中进行纯旋转,则初始化可能失败。通过使用双目或者RGB-D相机,所有这些问题都被解决了,从而实现最可靠的视觉SLAM解决方案。


在本文中,我们基于之前的工作单目ORB-SLAM,并且提出ORB-SLAM2,其贡献如下:

1)首个针对单目、双目和RGB-D相机的开源SLAM系统,包含回环、重定位和地图复用;

2)RGB-D结果表明,通过使用BA,我们比基于ICP或者光度和深度误差最小化的最先进方法获得更高的精度;

3)通过使用近、远双目点和单目观测,双目结果比最先进的基于直接法的双目SLAM更为精确;

4)一种轻量级的定位模式,它能够在建图禁用的情况下有效地重用地图。

图1展示来自双目和RGB-D输入的ORB-SLAM2输出结果示例。双目情况展示来自KITTI数据集的序列00的最终轨迹和稀疏重建。这是一个具有多个回环的城市序列,ORB-SLAM2能够成功检测到这些回环。RGB-D情况展示来自TUM RGB-D数据集的序列fr1_room中估计的关键帧位姿,以及通过从估计的关键帧位姿反投影传感器深度图而渲染的稠密点云。注意,本文SLAM系统没有执行KinectFusion或者类似的融合,但是良好的清晰度表明了关键帧位姿的准确性。开篇视频中展示了更多的示例。

ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区

在本文的剩余部分中,我们在第二节讨论相关工作,在第三节描述本文系统,接着在第四节展示评估结果,并且在第五节以总结结尾。

相关工作

在本节中,我们讨论有关双目和RGB-D SLAM的相关工作。我们的讨论以及第四节中的评估仅着重于SLAM方法。


A.双目SLAM


Paz等人的工作是一个早期卓越的双目SLAM系统。基于条件独立的分治EKF-SLAM,它能够比当时其它方法运行在更大型的环境中。更重要的是,它是首个利用近点和远点(即由于双目相机的视差很小,那些深度无法可靠估计的点)的双目SLAM,对于后者使用逆深度参数化。他们根据经验表明,如果点的深度小于40倍的双目基线,则能够可靠地三角化那些点。在这项工作中,我们遵循这种策略,以不同的方式处理近点和远点。


大多数现代双目SLAM系统是基于关键帧的,并且在局部区域内执行BA优化以实现可扩展性。Strasdat等人的工作对关键帧的内窗口中BA(点-位姿约束)和外窗口中位姿图(位姿-位姿约束)执行联合优化。通过限制这些窗口的规模,该方法以不保证全局一致性为代价,实现常数时间的复杂度。Mei等人的RSLAM使用路标和位姿的相对表示,并且在活跃区域内执行相对BA,该活跃区域能够被约束为恒定时间。RSLAM能够闭环,这允许扩展回环两侧的活跃区域,但是没有施加全局一致性约束。Pire等人最近的工作S-PTAM执行局部BA,然而它缺少大型回环的能力。类似于这些方法,我们在一组局部关键帧中执行BA,以使复杂度与地图规模无关,并且系统能够在大型环境中运行。然而,我们的目标是构建全局一致的地图。当回环时,本文系统首先对齐回环两侧(类似于RSLAM),以便跟踪能够使用旧地图继续定位,并且接着执行位姿图优化,它最小化回环中的累积漂移,随后进行全局BA。


Engel等人最近的工作双目LSD-SLAM是一种半稠密的直接法,它最小化具有高梯度的图像区域中的光度误差。该方法不依赖于特征,预期对于运动模糊或者弱纹理环境更为鲁棒。然而,作为一种直接法,其性能可能因卷帘快门或者非朗伯反射等未建模因素的影响而严重退化。


B.RGB-D SLAM


最早且最著名的RGB-D SLAM系统之一为Newcombe等人的KinectFusion。该方法将来自传感器的所有深度数据融合到容积稠密模型中,该模型使用ICP跟踪相机位姿。由于其容积表示以及缺少回环,该系统仅限于小型工作空间。Whelan等人的Kintinuous通过使用滚动循环缓冲区从而能够在大型环境中运行,其包含使用位置识别和位姿图优化的回环。


首个流行的开源系统可能为Endres等人的RGB-D SLAM,这是一个基于特征的系统,其前端使用特征匹配和ICP计算帧到帧的运动。后端使用来自启发式搜索的回环约束来执行位姿图优化。类似地,Kerl等人的工作DVO-SLAM的后端优化了位姿图,其中从视觉里程计计算关键帧到关键帧的约束,该视觉里程计最小化光度和深度误差。DVO-SLAM还以启发方式在所有先前帧中搜索回环候选,而不是依赖于位置识别。


Whelen等人最新的ElasticFusion构建了环境的基于面元的地图。这是一种以地图为中心的方法,它不考虑位姿并且对地图应用非刚性变形(而不是标准的位姿图优化)来执行回环。该系统的精细重建和定位精度令人印象深刻,但是目前的实现受限于房间规模的地图,因为复杂度随地图中面元的数量而变化。


正如Strasdat等人提出的,我们的ORB-SLAM2使用深度信息来合成图像上提取特征的立体坐标。通过这种方式,本文系统能够不管输入是双目还是RGB-D。与上述所有方法不同,本文系统的后端是基于BA的,并且构建全局一致的稀疏重建。因此,我们的方法是轻量级的,并且在标准CPU上工作。我们的目标是实现长期且全局一致的定位,而不是构建最清晰的稠密重建。然而,通过高度精确的关键帧位姿能够融合深度图,并且在局部区域内实时地获得精确的重建,或者在全局BA之后对来自所有关键帧的深度图进行后处理,从而获得整个场景的精确三维模型。

ORB-SLAM2

针对双目和RGB-D相机的ORB-SLAM2是基于我们的单目特征ORB-SLAM构建的,为了方便读者,这里总结了其主要的组件。系统的总体概览如图2所示。

ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区

该系统有三个主要的并行线程:1)跟踪线程,通过寻找与局部地图的特征匹配并且应用仅运动BA最小化重投影误差来定位每一帧相机;2)局部建图线程,管理局部地图并且优化它,执行局部BA;3)回环线程,检测大型回环并且通过执行位姿图优化来纠正累积漂移。这个线程启动第四个线程在位姿图优化之后执行全局BA,以计算最优的结构和运动解。


该系统嵌入基于DBoW2的位置识别模块,用于在跟踪失败(例如遮挡)的情况下重定位,或者在已建图区域内重新初始化,以及用于回环检测。该系统维护一张共视图(该图连接观测到共同地图点的任何两个关键帧)以及一个最小生成树(连接所有关键帧)。这些图结构允许检索关键帧的局部窗口,以便跟踪和局部建图能够在局部范围内操作,从而允许在大型环境中工作,并且在回环时作为执行位姿图优化的结构。


该系统使用相同的ORB特征进行跟踪、建图和位置识别任务。这些特征对于旋转和尺度具有鲁棒性,并且对相机自动增益调节和自动曝光以及光照变化具有良好的不变性。此外,它们提取和匹配速度快,这允许实时运行并且在词袋位置识别中展示良好的准确率/召回率性能。


在本文的剩余部分,我们将介绍如何利用立体/深度信息,以及系统的哪些部分将受到影响。对于每个系统模块的详细描述,请读者参考我们的单目版本


A.单目、近双目和远双目关键点


ORB-SLAM2作为一种基于特征的方法对输入进行预处理,以在显著关键点位置处提取特征,如图2b所示。接着丢弃输入图像,并且所有的系统操作都基于这些特征,以便系统与传感器是双目还是RGB-D无关。本文系统处理单目和双目关键点,这些关键点被进一步分类为近点或者远点。

ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区


      如果双目关键点关联的深度小于40倍的双目/RGB-D基线,它被分类为近点,否则它被分类为远点。近点能够从一帧进行安全地三角化,因为深度是精确估计的,并且它提供尺度、平移和旋转信息。另一方面,远点提供精确的旋转信息,但是提供较弱的尺度和平移信息。当多个视图支持远点时,就能对其进行三角化。


ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区


B.系统初始化


使用双目或者RGB-D相机的主要优势之一为,通过仅从一帧获得深度信息,我们不需要像单目情况那样从运动初始化获得特定的结构。在系统启动时,我们使用第一帧创建关键帧,设置它的位姿为原点,并且从所有双目关键点创建一张初始地图。


C.使用单目和双目约束的BA


本文系统执行BA以优化跟踪线程中的相机位姿(仅运动BA),优化局部建图线程中关键帧和地图点的局部窗口(局部BA),并且在回环之后优化所有关键帧和地图点(全局BA)。我们使用g2o中实现的Levenberg-Marquardt方法。

ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区

全局BA是局部BA的特例,其中地图中所有的关键帧和地图点都被优化,除了原点处的关键帧被固定以消除测量自由度(gauge freedom)。


D.回环和全局BA


回环分两步执行,首先必须检测和验证回环,其次通过优化位姿图来矫正回环。与单目ORB-SLAM(可能发生尺度漂移)截然不同,双目/深度信息使得尺度可观,并且几何验证和位姿图优化不再需要处理尺度漂移,它们是基于刚体变化而不是相似变换。


在ORB-SLAM2中,我们已经在位姿图优化之后包含全局BA优化以获得最优解。该优化可能非常耗时,因此我们在单独线程中执行它,这允许系统继续创建地图并检测回环。然而,这带来了挑战,如何将BA的输出结果与地图的当前状态融合。如果检测到新的回环而优化过程还在运行,我们就放弃优化并继续进行回环,这将再次启动全局BA优化。当完成全局BA时,我们需要将由全局BA优化的关键帧和地图点更新后的子集与优化运行时插入的没有更新的关键帧和地图点进行融合。这通过生成树传播更新后关键帧与更新前关键帧之间的校正量(即从未优化的位姿到优化后位姿的变换)来完成。未更新的地图点根据它们参考关键帧的校正量进行转换。


E.关键帧插入


ORB-SLAM2遵循单目ORB-SLAM中介绍的策略,其非常频繁地插入关键帧并且随后剔除冗余的关键帧。近和远的双目点之间的区别允许我们引入一个新的关键帧插入条件,这在有挑战性的环境(大部分的场景离双目传感器很远)中是至关重要的,如图3所示。

ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区


ORBSLAM系列|ORB-SLAM2论文带读(上) -汽车开发者社区


E.定位模式


我们包含一种定位模式,只要环境中没有显著变化,它就能对已建图区域中轻量级长期定位非常有用。在这种模式下,局部建图和回环线程没有激活,使用跟踪线程连续地定位相机(如果需要,使用重定位)。在这种模式下,跟踪线程利用视觉里程计匹配和地图点匹配。视觉里程计匹配是当前帧中ORB和之前帧通过双目/深度信息创建的三维点之间的匹配。这些匹配使得定位对于未建图区域较为鲁棒,但是会累积漂移。地图点匹配保证了对现有地图的无漂移定位。


文章转载自公众号:自动驾驶专栏


分类
收藏
回复
举报
回复
相关推荐