vslam论文3:ORB-SLAM2: An Open-Source SLAM System for Monocular, Stereo,and RGB-D Cameras(TRO-2017)

摘要

       我们提出了ORB-SLAM2,一个对于单目、双目和RGB-D相机的完整SLAM系统,包括地图重用、环路闭合和重定位功能。该系统可以在各种各样的环境中在标准cpu上实时工作,从小型手持室内序列,到企业环境中飞行的无人机,再到绕城市行驶汽车。我们的后端,基于单目和双目观测的BA优化,可以用度量尺度进行准确的轨迹估计,我们的系统包括一个轻量化定位模块,利用视觉里程计追踪未建图区域和匹配地图点以实现零飘移定位。我们在29个流行的公开序列上评估表明:我们的方法实现了最高的准确度,成为大多数情况下最准确的SLAM解决方案。我们公开了源码,不仅对SLAM群体有益,也有意向为其他领域的研究者提供一个拿到就能用的SLAM解决方案。

        关键词:定位,建图,RGB-D,SLAM,双目

一、引言

       在过去20年,SLAM在计算机视觉和机器人领域成为了一个热门的研究主题,最近也吸引了尖端科技公司的关注。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:ORB-SLAM2处理双目和RGB-D输入来估计摄像机轨迹并构建环境地图。该系统可以在标准CPU上实时实现闭合环路、重定位和地图重用,并有高得准确率和鲁棒性。(a) 双目输入:具有多个闭环的城市环境的轨迹和稀疏重建。(b) RGB-D 输入:具有一个闭环的房间场景的关键帧和稠密点云。点云是通过从估计的关键帧姿势反向投影传感器深度图来渲染的,不执行融合。

       图一显示了来自双目和RGB-D输入的ORB-SLAM2输出的例子。值得注意得是我们的SLAM不执行像KinectFusion或类似的任何融合,但这良好的定义显示了关键帧姿态的准确性,更多的例子在我们附加的视频中展示。

       剩下的章节,第二节讨论相关工作,第三节描述系统,第四节展示评估结果,第五节结论

二、相关工作

A.双目SLAM

       非常早期的双目SLAM系统是Paz等人的工作。基于条件性的独立分治的扩展卡尔曼滤波SLAM,相比于其他方法,它可以实时在更大的环境中操作。更重要的是,它是第一个利用近远点的双目SLAM(即双目相机差异很小,点的深度不能可靠估计),对后者他们使用了逆深度参数化。他们经验性的表明,如果这些点的深度小于双目基线的40倍,它们就能被可靠的三角化。在这篇文章中,我们遵循这个以不同的方式对待近远点的策略,就像第三节A所述。

       大多数当前的双目SLAM系统都是基于关键帧,在局部区域执行BA优化实现可扩展性。Strasdat等人的工作在关键帧的内部窗口和位于外部窗口的姿态图(位姿-位姿约束)执行一个BA的联合优化(点到位姿的约束)。通过限制这些窗口的大小,该方法实现了一致的时间复杂度,代价是无法保证全局的一致性。Mei等人的相对SLAM使用了地标和位姿的相对表示,在活动区域执行相对BA,这可以实现一致的时间约束。RSLAM可以闭合环路,这在环路的两边都可以扩展主动区域,但无法强制执行全局一致性。最近Pire等人的S-PTAM执行局部BA,却缺少大的环路闭合。相比于这些方法,我们在局部关键帧中执行BA,以至于复杂度独立于地图的尺寸,并且我们可以在大规模环境中操作。然而,我们的目标是是建立全局一致的地图。当环路闭合时,我们的系统首先对齐两边,类似于RSLAM,以至于追踪可以使用旧地图持续的定位,之后,执行最小化环路中累计飘移的姿态图优化,然后全局BA。

       最近Engel等人的双目大规模直接SLAM(LSD-SLAM)是一个半稠密的直接方法,其在高坡度的图像区域最小化光度误差。不依赖特征,此方法预计在运动模糊或者纹理稀疏环境会更加鲁棒。然而,作为一种直接方法,它的性能在像rolling shutter或非-朗伯反射率等的未建模影响下会急剧退化。

B.RGB-D SLAM

       最早和最著名的RGB-D SLAM系统是New等人的KinectFusion,该方法将所有来自传感器的深度数据融入体积稠密模型,使用ICP去追踪相机位姿。该系统由于其体积表示和缺乏环路闭合而被限制在一个小的工作场所。Whelan等人的Kintinuous通过使用循环滑动窗口可以在大规模环境中操作,并包括使用位置感知和姿态图优化的环路闭合。

       也许这第一个流行的开源系统是Endres等人的RGB-D SLAM。该系统基于特征,其前端通过特征匹配和ICP计算帧到帧的运动。后端执行来自一个启发式研究的环路闭合约束的姿态图优化。类似地,kerl等人的DVO-SLAM的后端由来自最小化深度和光度误差的视觉里程计所计算的关键帧到关键帧的约束优化姿态图。DVO-SLAM也在所有之前的帧中以一种启发式的方式搜寻候选环路,而不依赖位置识别。

       最近whelan等人的ElasticFusion建立了一个环境的基于曲面的地图。这是一个忽略位置以地图为中心的方法,将非刚体变化应用到地图执行环路闭合,而不是标准姿态图优化。该系统的细节重建和定位准确度令人印象深刻,但因其随地图中曲面的数量而缩放的复杂度,它的实施被限制于房间大小的地图。

       如strasdat等人所提到的,我们的ORB-SLAM2使用深度信息去合成图像上提取特征的立体坐标。通过这种方式,我们的系统的输入可以是双目或RGB-D。不同于以上所有方法,我们的后端基于BA,并建立了全局一致的稀疏重建。因此我们的方法是轻量化的,并可以在标准CPU上工作。我们的目标是长期并全局一致的定位,而不是建立最细节的稠密重建。然而,高度准确的关键帧姿态可以融合深度图并得到局部区域上实时的准确重建或者在全局BA之后后处理来自所有关键帧的深度图,得到整个场景的准确三维模型。

三、ORB-SLAM2

       双目和RGB-D相机的ORB-SLAM2是基于我们的基于特征的单目ORB-SLAM,为了读者方便,其主要组成我们总结于此。系统的整体概况如图2所示。该系统由三个主要的并行线程:(1)追踪线程:通过在局部地图中查找特征匹配、最小化重投影误差,用每一帧去定位相机,使用纯运动BA(2)局部建图线程:管理并优化局部地图,执行局部BA;(3)环路闭合线程:通过执行姿态图优化,查找大的环路和矫正累计飘移。环路闭合后会启动第四线程在姿态图优化之后执行全局BA,计算最优结构和运动解。

图2:三大线程:追踪、局部建图和环路闭合,闭合后启动第四线程执行全局BA。追踪线程对双嘧或RGB-D输入进行预处理,以便系统的其余部分运行独立于输入传感器。虽图中未显示,但 ORB-SLAM2 支持单目。(a) 系统线程和模块;(b) 输入预处理。 

       该系统为重定位配备了一个基于DBOW2的位置识别模块,比如在追踪失败(如,遮挡)或者在已建图场景中重新初始化和检测环路的情况下。该系统维护一个连接任意两个观测到共同点的关键帧的共视图和一个连接所有关键帧的最小生成树。这些图结构可以检索关键帧的局部窗口,以至于追踪和局部建图局部操作,也可以在大环境中工作,还能当闭合环路时作为一种结构执行姿态图优化。

       该系统对于追踪,建图和位置识别任务使用相同的ORB特征。这些特征对旋转和尺度是鲁棒的,并对相机的自动增益、自动曝光和光照变化都表现出一个良好的不变性。更重要的是,他们可以在实时操作时快速的提取和匹配,在词袋的位置识别中也显示出良好的精度/召回性能。

       剩下的章节中,我们表述了如何利用双目/深度信息,系统的那些元素会受到影响。对于每个系统模块的详细描述,建议读者参考我们的单目出版物。

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

       ORB-SLAM2作为一种基于特征的方法,通过预处理输入提取显著关键点位置中的特征。如图2(b)所示。这输入图像之后被丢弃,所有系统的操作都是基于这些特征,以至于系统独立于

传感器是双目还是RGB-D。我们的系统处理单目和双目关键点,进一步将其分类为近、远点。

       双目关键点定义为三个坐标X{_s{}}=(u_Lv_L{}u_R{}), (u_Lv_L{} )是左图中的坐标,u_R{}是右图中的横坐标。对于双目相机,我们在左右图像中都提取ORB,对于每一个左图中的ORB,我们都在右图中寻找一个匹配。假设是双目已标定图像此操作可以非常效率,以至于极线是水平的。之后我们会用左图中orb的坐标和在右图中匹配的横坐标生成双目关键点,这些关键点通过补丁相关性可以进行子像素细化。对于RGB-D相机,如strasdat等人提出的那样,我们在RGB图像上提取ORB特征,,对于每一个 带有坐标(u_Lv_L{} )的特征,我们将它的深度值d转变为一个虚拟的右坐标

       

fx是水平焦距,b是结构光投影和红外相机之间的基线,对于kinect和asus Xtion,此基线估计为8cm。深度传感器的不确定性是通过虚拟右坐标的不确定性表示。如此一来,来自双目和RGB-D输入的特征就被系统剩余的部分平等的处理。

       一个双目关键点如果其相应深度小于双目/RGB-D基线的40倍就被分类为近点,如图5所示,其他的被分为远点。因为深度可以准确的估计,近关键点能从一帧中安全的三角化,并提供尺度、平移和旋转信息。另一方面,远点提供准确的旋转信息,但缺乏尺度和旋转信息。当他们可以从多视角提供的时候,我们就三角化远点。

       单目关键点被定义为左图中的两个坐标 X_m{}=(u_Lv_L{} ),并对应于所有那些双目匹配无法发现的ORB,或者在RGB-D情况下有无效的深度值的ORB。这些点只能在多视角下三角化,不提供尺度信息,但有利于旋转和平移估计。

B.系统启动

       使用双目或RGB-D相机的一个主要好处是,通过仅从一帧中获取深度信息,我们不需要像在单目情况中那种来自运动初始化的特定结构,在系统启动时我们用第一帧创造一个关键帧,将其设为初始位置,从所有双目关键点中创建一个初始地图。

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

       我们的系统追踪线程中执行BA优化相机位姿(纯运动BA),在局部建图线程优化关键帧和点的局部窗口(局部BA),在环路闭合后去优化所有的关键帧和点(全局BA)。我们使用在g2o中实现的列文伯格-马夸尔特方法。

       全局BA是局部BA的特殊情况,地图中所有的关键帧和点都要被优化,除了原始关键帧因消除计算自由度而被固定外。

D.环路闭合和全局BA

       环路闭合分两步实现,首先,一个环路必须被检测并验证,其次,矫正该环路优化一个位姿图。相比于单目ORB-SLAM可能发生的尺度飘移,双目或深度信息使尺度可观测,几何验证和姿态图优化也不再要求处理尺度飘移,且这些都基于严格的刚体变换而不是相似性。

       在ORB-SLAM2中,我们在姿态图之后去执行全局BA优化以实现最优解。此优化可能成本很高,因此我们在一个独立的线程中去执行,允许系统继续去建图和检测回环。然而,这会带来将BA输出和当前状态图合并的挑战。如果优化进行时检测到新回环,我们就会放弃优化继续去关闭回环。这将再一次启动全局BA优化。当全局BA完成,我们需要去合并通过全局BA优化的点和关键帧更新的子集,和优化进行时插入的未更新的关键帧和点。此操作的实现是通过最小生成树将更新的关键帧(即从未优化的位姿转变为优化的位姿)的矫正传播给未更新的关键帧。根据应用于他们参考关键帧的矫正,未更新的点将被转换。

E.关键帧插入

       ORB-SLAM2遵循了单目ORB-SLAM中频繁插入关键帧和之后剔除冗余帧的策略。近远双目点之间的区别让我们的关键帧插入引入了一个新的条件,这在大部分场景离双目传感器较远的挑战性环境中非常关键,如图3所示。在这种环境下,我们需要充足的近点数量去准确的估计平移,因此,如果被追踪的近点数量低于T_t{},帧能够创建至少个T_c{}新的近双目点,系统就会插入一个新的关键帧。我们根据经验发现T_t{}=100和T_c{}=70在我们的实验中表现良好。

 图3:KITTI01中追踪的点。绿色是深度小于双目相机40倍基线的近点,蓝色是远点。在这类序列中,关键帧的插入非常重要,近点的数量和准确的平移估计有关,远点有利于旋转估计,但缺乏尺度和平移信息。

F.定位模块

       我们引入了一个定位模块,这在已良好建图的区域对于轻量化的长期定位是有效的,只要环境没有发生明显的改变。在这个模块,局部建图和回环闭合线程消极工作,如果需要,追踪线程会使用重定位对相机进行持续的定位。在这个模块中,追踪利用视觉里程计匹配和匹配到地图点。视觉里程计匹配是当前帧的ORB和来自双目或深度信息的之前帧创建的三维点之间的匹配。这些匹配使定位在未建图区域鲁棒,但也累积飘移。地图点匹配确保了对现存地图的无飘移定位。该模块在附随的视频中被证明。

四、评估

       我们已经在三个流行的数据集中评估了ORB-SLAM2,并对比了其他最先进的SLAM系统,并一直使用原本作者发布的结果和文章中标准的评价指标。我们在16-GB内存的英特尔酷睿I7-4790的台式电脑中运行ORB-SLAM2。为了说明多线程系统的不确定性,我们每个序列运行5次,并显示了估计轨迹准确性的平均值。我们的开源实现包含了在所有这些数据集中运行系统的标定和说明。

A.KITTI数据集

       KITTI数据集包含了城市和高速环境中的一辆汽车提供的双目序列。该双目传感器基线为54cm,以10hz的状态工作,矫正后的分辨率为1240x376像素。序列00,02,05,06,07和09包含回环。我们的ORB-SLAM2检测了所有的回环并在之后重新使用它的地图,除了回环在序列末端极少量的关键帧中发生的序列09。表1显示了在11个训练序列中的结果,包含已经公开的基本事实,相比于最先进的双目LSD-SLAM,据我们所知,这是唯一一个在所有序列中显示出详细结果的双目SLAM。我们使用两种不同的度量,在3中提出的绝对平移均方根误差(RMSE)和2中提出的平均相对平移和旋转误差。我们的系统在大多数序列中的表现都超过了LSD-SLAM,并且总体上实现了相对误差低于1%。如图3中的序列01,是训练集中唯一高速序列,平移误差就稍差一点。在这个序列中由于高速和低帧率导致能跟踪的近点非常少,导致平移很难估计。然而,旋转可以被准确估计,实现每100米0.21度的误差,因为这有很多能被长期跟踪的远点。图4显示了一些轨迹估计的例子。

       相比于图1中展示的单目结果,所提出的双目版本可以处理单目系统失效的序列01。如图3所示,在这个高速场景中,近点只能在少量帧中观察到。双目版本可以仅从一个双目关键帧而不是单目延迟的初始化中创建点和在两个关键帧中持续检测到匹配的能力,是在这个序列中跟踪不丢失的关键。更重要的是,如图5所示,双目系统用度量尺度评估地图和轨迹不会遭受尺度飘移。

B.Euroc数据集

       当前的Euroc数据集包含来自一个微型飞行器在两个不同房间和一个大型工业环境中飞行所提供的11个双目序列。该双目传感器有11cm的基线和以20hz提供wvga图像。该序列根据MAV飞行速度、光照和场景纹理被分为简单,中等和困难。在所有的序列中,MAV重新访问了环境,ORB-SLAM2可以重用它的地图,当必要的时候关闭回环。表2显示了所有序列的ORB-SLAM2的绝对平移误差RMSE,并和双目LSD-SLAM进行比较,结果在11中显示。ORB-SLAM2实现了厘米级的定位精度,比双目LSD-SLAM更准确。我们在V2_03困难序列中一些部分由于严重的运动模糊会丢失。如22所示,该序列通过使用IMU可以被信息可以被处理。图6显示了计算轨迹和地面真值对比的例子。

C.TUM RGB-D数据集

       TUM RGB-D数据集包含来自RGB-D传感器的室内序列,分为几类去评估在不同的纹理,光照和结构条件下的目标重建和SLAM/里程计方法。我们在一个通常用来评估大多数RGB-D方法的序列子集中展示了结果。在表III中,我们将我们的准确性与以下最先进的方法进行比较:ElasticFusion、Kintinuous、DVO-SLAM和RGB-D SLAM。我们的方法是唯一一种基于BA方法,在大多数序列中表现优于其他方法。正如我们已经注意到的 RGB-D SLAM 结果 1,Freiburg2 序列的深度图具有 4% 的尺度偏差,可能是错误标定,这我们在我们的运行中进行了补偿,并且可以部分解释我们明显更好的结果。图7显示了从四个序列中计算的关键帧姿态反向投影传感器深度图的点云结果。桌子和海报的良好定义和直线轮廓证明了我们方法的高精度定位。

D. 计时结果

       为了完成对所提出的系统的评估,我们在表 IV 中展示了三个具有不同图像分辨率和传感器序列的时序结果。每个线程任务都显示了平均和两个标准偏差范围。由于这些序列包含单个循环,因此环路闭合线程完整 BA 和一些任务仅执行一次,并且只报告一次时间测量。每个序列每帧的平均追踪时间低于相机帧率的倒数,这意味着我们的系统能够实时工作。由于立体图像中的ORB提取是并行的,可以看出在v2-02序列的双目WVGA图像中提取1000个ORB特征相当于在 fr3_office序列 的单个 VGA 图像通道中提取相同数量的特征。环路中关键帧的数量显示为闭合环路相关时间的参考。虽然 KITTI 07 中的环路包含更多的关键帧,但室内 fr3_office 构建的共视图更密集,因此循环融合、位姿图优化和全局BA 任务成本更高。共视图的密度越高,局部图包含更多的关键帧和点,因此局部地图跟踪和局部BA成本也更高。

五、结论

       我们已呈现了一种用于单目、双目和 RGB-D 传感器的完整 SLAM 系统,能够在标准 CPU 上实时执行重定位、环路闭合和地图重用。我们专注于构建全局一致的地图,以便在更大范围的环境中可靠和长期定位,如实验所示。所提出的具有系统重定位能力的定位模块为已知环境产生了非常稳健、零漂移和轻量级定位方法。这种模式对于某些应用很有用,例如在已建图空间中跟踪虚拟现实中的用户视点。

       与最先进方法的对比表明,ORB-SLAM2 在大多数情况下达到了最高的准确度。在KITTI视觉里程计基准测试中,ORB-SLAM2是目前最好的双目SLAM解决方案。至关重要的是,与近年来蓬勃发展的双目视觉里程计方法相比,ORB-SLAM2在已建图区域实现了零漂移定位。

       令人惊讶的是,我们的RGB-D结果表明,如果需要最准确的相机定位,BA比直接方法或ICP表现更好,计算成本较低的额外优势,实时操作不需要GPU处理器。

       我们已经发布了我们系统的源码,带有示例和说明,以便其他研究人员可以轻松使用它。ORB-SLAM2 据我们所知,这是第一个可以在单目、双目和RGB-D输入下工作的最好的开源视觉SLAM系统。此外,我们的源码包含一个使用单目相机的增强现实应用示例,来展示我们的解决方案的潜力。

       未来的扩展可能包括,举几个例子,支持非重叠多摄像头、鱼眼或全景摄像头、大规模稠密融合、协作建图或增加运动模糊鲁棒性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值