ORB-SLAMB2——论文翻译(ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras)

ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo
and RGB-D Cameras

摘要

ORB-SLAM2是基于单目,双目和RGB-D相机的一套完整的SLAM方案。它能够实现地图重用,回环检测和重新定位的功能。无论是在室内的小型手持设备,还是到工厂环境的无人机和城市里驾驶的汽车,ORB-SLAM2都能够在标准的CPU上进行实时工作。ORB-SLAM2在后端上采用的是基于单目和双目的光束法平差优化(BA)的方式,这个方法允许米制比例尺的轨迹精确度评估。此外,ORB-SLAM2包含一个轻量级的定位模式,该模式能够在允许零点漂移的条件下,利用视觉里程计来追踪未建图的区域并且匹配特征点。我们用29个广泛使用的公共数据测试的结果显示,在大多数情况下,本文方案比此前方案精度更高,此外,我们开源了ORB-SLAM2源代码,不仅仅是为了整个SLAM领域,同时也希望能够为其他领域研究者提供一套SLAM的解决方案。

引言

SLAM(同时定位与地图重建)在过去的20年中,一直是计算机视觉和机器人领域的热门话题,同时也吸引了很多高科技公司的关注。SLAM技术是在未知的环境当中建立一个地图并且能够在地图当中实时的定位。在不同类型的传感器当中,相机十分廉价,并且能够提供丰富的环境信息,受到研究者的青睐。相机提供的图像信息可以用作鲁棒的和精确的位置识别。位置识别是SLAM系统中回环检测的关键模块(例如,当传感器检测到一个已经建好图的位置的时候,可以进行修正在探索过程中的误差)以及,能够修正由于剧烈的震动或者在系统进行初始化的时候在相机跟踪失败后的重新定位。因此以相机为核心的视觉SLAM在过去的一年中得到快速的发展。

视觉SLAM仅仅通过一个单目相机就能够完成。单目相机也是最便宜也是最小巧的传感器设备。然而深度信息无法从单目相机中观测到,地图的尺度和预测轨迹是未知的。此外,由于不能从第一帧当中进行三角测量化,单目视觉SLAM系统的启动往往需要多个视角或者滤波技术才能产生一个初始化的地图。最后,单目SLAM可能会造成尺度漂移,以及在探索的过程中执行纯旋转的时候可能会失败。通过使用一个双目或者RGB-D相机将会解决这些问题,并且能够成为一种更加有效的视觉SLAM的解决方案。

在这篇文章当中,我们在单目ORB-SLAM[1]的基础上提出ORB-SLAM2,有以下贡献:
1. 这是首个基于单目,双目和RGB-D相机的开源SLAM方案,这个方案包括,回环检测,地图重用和重定位。
2. 我们的RGB-D结果说明,光速法平差优化(BA)比ICP或者光度和深度误差最小方法的更加精确。
3. 通过匹配远处和近处的双目匹配的点和单目观测,我们的双目的结果比直接使用双目系统更加精确。
4. 针对无法建图的情况,提出了一个轻量级的定位模式 ,能够更加有效的重用地图。
在这里插入图片描述
图1中显示的是双目和RGB输入下的ORBSLAM2的输出。双目例子显示的是最后轨迹和稀疏重建的地图。这里的数据集来源于KITTI的Sequence00数据集。这个城市数据集是ORB-SLAM2多次成功提取特征,并且回环检测而来。RGB-D例子是来源于TUM 的RGB-D 数据库中的fr1_room的数据集,并且进行关键帧的位姿评估而来。通过评估关键帧的位姿,映射深度图,最终形成一个稠密的点云图。指的注意的一点是,ORB-SLAM2虽不像Kinect Fusion一样进行数据融合,但是却能够很精确的估计关键帧的位姿。更多的例子在附件视频中展示。
在余下的篇章当中,我们将会在第二部分讨论相关的工作。在第三部分谈论ORB-SLAM2系统框架。第四部分评价ORB-SLAM2,第五部分得出结论。

相关工作

在这个章节,我们将会讨论双目和RGB-D SLAM的相关工作。评估部分我们放在第四部分,本章我们主要讨论的是SLAM的方法。

A.双目SLAM

最早研究双目SLAM方案的是Paz 等人,基于条件独立分割和扩展SLAM,其显著特点是能够在大场景中运行。更重要的是,这是第一个使用近特征点和远特征点(例如,由于双目相机差异较小,导致点的深度不能准确的估计)的双目SLAM系统,使用一个逆深度参数进行估计。经验值表明如果深度小于40倍双目的基线,那么这个点就能被三角测量化。我们就是跟随的这样思想来处理远近不同的特征点,具体解释放在第三部分。
最早研究双目SLAM方案的是Paz 等人[5],基于条件独立分割和扩SLAM,其显著特点是能够在大场景中运行。更重要的是,这是第一个使用近特征点和远特征点(例如,由于双目相机差异较小,导致点的深度不能准确的估计)的双目SLAM系统,使用一个逆深度参数进行估计。经验值表明如果深度小于40倍双目的基线,那么这个点就能被三角测量化。我们就是跟随的这样思想来处理远近不同的特征点,具体解释放在第三部分。Engel等人[11]提出邻近双目LSD-SLAM方案,采用的是一种直接的半稠密方法,最小化高梯度的图像区域中的光度误差。这种方法希望能够在不依赖特征提取的条件下,能够在纹理不清或者模糊运动的过程中获得更高的鲁棒性。然而,直接法的性能会由于滚动(卷帘)快门,或者非朗伯反射的未建模的因素影响而下降。

B.RGB-D SLAM

最早和最著名的RGB-DSLAM系统是有Newcombe等人[4]提出的KinectFusion,这种方法将深度数据进行融合,深度数据来源于传感器到深度模型,常常使用ICP算法来跟踪相机的位姿。由于体积的表现形式和缺乏回环检测,这种算法只能工作在小的工作空间。Whelan 等人[12]提出的Kintinuous能够在大环境中运行。它通过使用一个滚动循环缓冲器和包括使用位置定位和位姿优化来达到回环检测的目的。

或许第一个开源的RGB-DSLAM方案是由Endres[13]提出的,这是一种基于特征点提取的系统,他的前端采用提取和匹配特征点和ICP来计算帧与帧之间的运动。后端采用位姿图优化的方式,回环检测约束条件来源于一个启发式搜索。相似的是,Kerl 等人[14]提出的DVO-SLAM,是在关键帧与关键帧之间的优化位姿图,视觉里程计通过计算最小化光度和深度误差来计算约束条件。DVO-SLAM同时在以前的所有帧当中,搜索回环的候选者,而不依赖于位置识别。

Whelan等人[15]提出的邻近ElasticFusion算法,是建立在基于确定环境的地图。这是一种以地图为中心的方法。这种方法忽略了非刚性形变地图的位姿和回环检测的性能,也是不是一个标准的位姿图优化。这种方法在重建和定位的精度都是十分优秀的,但是目前的应用十分有限对于一个房间大小的地图,由于在地图当中面元的数量影响计算的复杂程度。

Strasdat等人[8]提出ORB-SLAM2这种方法,这个方法使用深度信息去合成一个三维坐标,能够精确的提取到一副图像的信息。ORB-SLAM2能够处理来自双目和RGB-D的图像,与上述方法不同的是,我们的后端是用的BA算法,来建立一个全局的稀疏的地图重建,因此我们的方法更加轻量级并且能够在标准的CPU上面运行。我们的目标是长时间并且全局精准定位,而不是建立一个有很多细节的稠密地图。然而,高精度的关键帧的位姿,能够融合深度图像以及在计算中得到精准的重建,或者能够处理所有的关键帧和深度图,以及所有的BA并且得到一个精准的3D模型。

ORBSLAM2

针对双目相机和RGB-D相机的ORB-SLAM2建立在单目ORB-SLAM的基础上,它的核心组件,如图2所示。
在这里插入图片描述
图2 ORB-SLAM2由三个平行的线程组成,跟踪,局部建图和回环检测。在一次回环检测后,会执行第四个线程,去执行BA优化。跟踪的线程在双目或者RGB-D输入之前进行,因此剩下的系统模块能够跟传感器模块独立运行。单目的ORB-SLAM2工作图也是这幅图。

这个系统主要有3个并行的线程:

1、通过寻找对局部地图的特征,并且进行匹配,以及只运用BA算法来最小化重投影误差,进行跟踪和定位每帧的相机。
2、运用局部的BA算法设置局比地图并且优化。
3、回环检测检能够通过执行位姿图的优化来更正累计漂移误差。在位姿优化之后,会启动第四个线程来执行全局BA算法,来计算整个系统最优结构和运动的结果。
这个系统是一个基于DBoW2[16]的嵌入式位置识别模型,来达到重定位,防止跟踪失败(如遮挡),或者已知地图的场景重初始化,和回环检测的目的。这个系统产生关联可见的图[8],连接两个关键帧的共同点,连接所有关键帧的最小生成树方面。这些关键帧的图结构能够得到一个关键帧的局部的窗口,以便于跟踪和局部建图,并且在大型的环境当中的回环检测部分,作为一种图优化的结构。

这个系统使用相同的ORB特征进行跟踪,建图和位置识别的任务。这些特征在旋转不变和尺度不变性上有良好的鲁棒性,同时对相机的自动增益,曝光和光线的变化表现出良好的稳定性。并且能够迅速的提取特征和进行匹配,能够满足实时操作的需求,能够在基于词袋的位置识别过程中,显示出良好的精度[18]。

在本章的剩下的部分当中,我将会展示双目或者深度信息是如何利用,和到底会影响系统中的那些部分。对每个系统块更详尽的描述,可参见论文[1]

单目、近处双目和远处双目特征点

ORB-SLAM2作为一种基于特征提取的方法,在一些关键的位置上的提取进行预处理,如图2b所示,系统的所有运行都是基于输入图像的特征展开,而不依赖于双目或者RGB-D的相机。我们的系统处理单目或者双目的特征点,分成远处特征点和近处特征点两类。

双目特征点 通过三个坐标 x s = ( u L , v L , u R ) x_s=(u_L,v_L,u_R) xs=(uL,vL,uR)定义, ( u L , v L ) (u_L,v_L) (uL,vL)是这个左边图像的坐标, u R u_R uR是右图当中的水平坐标。对于双目相机而言,我们提取两幅图像当中的ORB特征,对于每个左边的ORB特征我们对其匹配到右边的图像中。这对于建设双目图像校正十分有效,因此极线是水平的。之后我们会在左边的图像产生双目的ORB特征点,和一条水平的线向右边的图像进行匹配,通过修补相关性来重新定义亚像素。对于RGB-D相机,正如Strasdat等人[8]所言,我们提取在RGB图像上提取ORB特征点,d对于每个特征坐标 ( u L , v L ) (u_L,v_L) (uL,vL),我们将其深度值d转换为实际正确的坐标
在这里插入图片描述
这里 f x f_x fx是水平焦距,b是结构光投影器和红外相机的基线
我们估计kinect和华硕 Xtion 基线长大约是8cm。深度传感器的不确定性由实际右坐标的不确定性表示,这样,立体声和RGB-D输入的特征由系统的其余部分均等地处理。

近双目特征点的定义是:匹配的深度值小于40倍双目或者RGB-D的基线,否则的话,是远特征点。近的特征点能够从一帧的深度值能够三角测量化,是精确的估计,并且能够提供尺度,平移和旋转的信息。另外一方面,远的特征点,能够提供精确的旋转信息,但是很少的尺度和平移信息。当提供多视图的时候,我们才能三角化那些远的点。

单目的特征点通过右边图像的两个坐标 x m = ( u L , v L ) x_m=(u_L,v_L) xm=(uL,vL)定义,必须保证所有的ORB特征是一致的,否则双目特征点的提取将不能够完整,或者在RGB-D的情况下,有产生一个无效的深度值。这些点仅能够从多视图中三角测量化并且不能够提供尺度信息,但是可以提供旋转和平移的估计信息。

系统引导

使用双目和RGB-D相机的主要优势在于,我们可以直接获得深度信息,我们不需要像单目情况中那样做一个特定的SFM初始化。在系统初始化的时候,我们就创造了一个关键帧(也就是第一帧),将他的位姿进行初始化,从所有的立体点中创造一个初始化地图。

3.3 使用单目或者双目光束优化法

我们的系统采用光束优化法(BA),优化在跟踪过程(纯运动BA)中相机的位姿,优化本地窗口的关键帧和局部地图的特征点(局部BA),并且在回环检测之后优化所有的关键帧和特征点(全局BA)。我们在g2o当中使用Levenberg-Marquadt方法[19]。

纯运动BA,优化相机旋转矩阵R和位置t,最小化世界坐标系下匹配3D点云 X i X^i Xi和特征点 x i x^i xi(单目的或双目的,其中)的重投影误差,要么
单目m∈R2或双目xi s∈R3,其中i∈X是所有匹配集合

在这里插入图片描述
在这个式子当中, ρ \rho ρ是强健的Huber的cost函数, ∑ \sum 是协方差矩阵,与关键点的规模有关。投影函数 π ( . ) \pi(.) π(.),单目的时候使用 π m \pi_m πm,修正双目的时候用 π s \pi_s πs,他们的定义如下:
在这里插入图片描述
在这个式子 ( f x , f y ) (f_x,f_y) (fx,fy)是焦距, ( c x , c y ) (c_x,c_y) (cx,cy)是主点,b是基线,所有的这些参数都是通过标定获得。
局部BA优化一系列可见的关键帧KaTeX parse error: Undefined control sequence: \K at position 1: \̲K̲_L和所有在这些关键帧 P L P_L PL的可见点,所有的其他关键帧 K F K_F KF是,不在 K L K_L KL P L P_L PL观测点用于代价函数,但是在优化中是固定的。 将 X k X_k Xk定义为点之间的匹配集,这些点在 P L P_L PL和关键帧k中的关键点上,优化问题如下:
在这里插入图片描述
全局BA是局部光束法的一个特例,这个方法除了固定的来消除随机化的初始帧,所有的关键帧和地图中的点都会被优化

闭环检测和全局BA

回环检测有两步:首先,一个回环信息被确定检测到,然后利用这个回环纠正和优化位姿图。相比于单目的ORB-SLAM中可能出现尺度漂移的地方[20],这个双目或者深度的信息将会使得尺度信息可观测。并且,几何校验和位姿图优化将不再需要处理尺度漂移,而且是基于刚体变换的,而不是基于相似性。
在ORB-SLAM2的位姿优化后,我们包含一个全局的BA优化,为了实现一个优化方案,我们必须采用一个独立的线程,允许系统能够持续的建图,并且检测到回环信息。但是这将会再次触发全局BA优化与当前地图的合成。如果在优化运行时检测到新的回环,我们将中止优化并继续关闭循环,这将再次启动全局的BA优化。当完整的BA结束时,我们需要将更新的关键帧子集和由完整BA优化的点与未更新的关键帧和在优化运行时插入的点合并。最后通过更新更新关键帧校正(例如,这个变换从未优化到已优化)到一个未更新关键帧通过生成树当中。根据校正参考帧来改造呢些未更新的特征点。

关键帧的插入

ORB-SLAM2遵循在单目ORB-SLAM中提的法则,即经常插入关键帧并且剔除上一帧的冗余。在远近特征点的差异为我们插入一个新的关键帧提供了条件,这在大场景的条件下是至关重要的,如图3所示。

在这里插入图片描述
图3 KITTI 01数据集的跟踪点。绿色的特征点深度小于40倍双目的基线,蓝色特征点大于40倍双目的基线,在这种数据集当中,需要插入大量的关键帧,以便于能够让近处的特征点更加精确的估计平移和尺度,远处的特征点来估计方向,但是不能够计算平移和尺度。

在这样的环境中,我们需要一个大量的近点用以精确估计平移,因而如果这个被跟踪近点小于 τ t \tau _t τt并且这个帧将会创造 τ c \tau _c τc个新邻近特征点,这个系统将会插入一个新的关键帧,我们经验值认为,当 τ t = 100 \tau _t=100 τt=100 τ c = 70 \tau _c=70 τc=70的条件下我们效果最好。

定位模式

ORB-SLAM2包括一个定位模式,该模式适用于轻量级以及在地图已知情况下长期运行,只要那个环境没有发生剧烈变化。在该模式中,局部建图和回环检测的线程中是停用的,并且这个相机始终都是在通过追踪进行重定位。在这个模式下,追踪模块使用视觉里程计进行匹配图像的点云。视觉里程计匹配在当前帧的ORB算子和由双目或者深度相机收集的3D点云。这些匹配使得在没有地图的区域也能够精确重新定位,但是漂移将会被累加。地图点云匹配要确保在一个已经存在的地图当中零漂移定位,这个模型在附带的video当中会显示。

评估

我们使用三个著名的数据集来评估ORB-SLAM2的算法的性能。我们在一台16G的RAM,Intel Core i7-4790的台式机运行,以低于传感器的帧率,对处理跟踪时间求平均。我们运行数据集5次,取中间值,来消除多线程系统的不确定性。我们开源了在运行这几个系统的数据集的方法包括标定具体操作实现。

KITTI数据集

KITTI数据集包含双目数据,这些数据从一个正在高速公路上行驶的车上采集到的。这个双目传感器有约54厘米的基线并且在在1392*512像素上,以10Hz的采样速率进行采样,其中序列00,02,05,06,和09包含回环。我们的ORB-SLAM2能够检测出回环并且能够地图重用,除了09序列以外,09序列的回环只发生在尾端少数的几帧当中。表1显示在11个训练数据的结果,这是一个公开的真实数据,对比于原先的LSD-SLAM算法,我们展示了的双目SLAM系统测试数据结果。我们使用两个不同的米制,均方根误差(RMSE) t a b s t_{abs} tabs在论文[3]中提到,并且取平均相关平移KaTeX parse error: Expected '}', got 'EOF' at end of input: t_{rel和旋转误差 r r e l r_{rel} rrel在论文[2],我们的系统在数据集大多数序列中都优于双目LSD-SLAM,并且总体而言,相对误差低于1%。序列01(参见图3)是训练集中唯一的高速公路序列,平移误差稍差一些。 由于高速和低帧频,很难追踪到几乎所有的闭合点,因此在数据集这个序列中很难估计平移。。然而这个方向能够被精确的评估,获得的误差是每100米做0.21度。很多较远的点能够被检测,如图4所示,显示了一些评估的例子。

表一 KITTI数据集精度的比较
在这里插入图片描述

在这里插入图片描述
图4 在KITTE数据集01,05,07和08,估计轨迹(黑色线)和以及实际运动(红色线)

与[1]中提出的单目结果相比,提出的双目版本能够处理单目系统处理失败的序列01。 在此高速公路序列中,请参见图3,仅在几帧的情况下才能看到近点。 双目版本有仅从一个双目关键帧创建点的能力,而不是通过在两个关键帧的匹配而导致的单目延迟初始化的能力,在此序列中至关重要,不能丢失跟踪。 而且,双目系统以公制比例尺估计地图和轨迹,并且不会受到比例尺偏移的影响,如图5所示。

在KITTI数据集08估计轨迹(黑色线)和以及实际运动(红色线)左:单目ORB-SLAM [1],右:ORB-SLAM2(双目)。 单目ORBSLAM在此序列中有严重的标度漂移,尤其是在转弯处。 相比之下,提出的双目版本能够估计轨迹和地图的真实比例,而不会出现比例漂移。在这里插入图片描述

EuRoC 数据集

EuRoC 数据集包含了11个双目的序列,通过一个微型飞行器(MAV)采集到的数据,飞行在两个不同的房间和大量的工业环境。这个双目传感器有一个约11cm的基线和能够提供20HZ的WVGA格式的图像,这个序列分成,简单、中等、和困难,这取决于MAV(微型飞行器)的速度,照明和场景的纹理。在所有的序列当中,MAV(微型飞行器)再次访问这个环境的时候,ORB-SLAM2能够重用地图,回环检测当有必要时。这个表格2显示的是ORB-SLAM2的最小均方误差(RMSE)的绝对值变换,对于所有序列而言。相比较对双目的LSD-SLAM的结果。ORB-SLAM2能够实现一个厘米级精准的定位,并且比双目的LSD-SLAM更加的精确。由于一些运动模糊,在V2_ 03_ difficul序列中跟踪丢失。在论文[22]],这个序列在处理过程中是使用IMU信息,如图5所示,显示的一些相比实际运动的估计轨迹的例子。

表2 EUROC数据集
在这里插入图片描述
在这里插入图片描述
在EuRoCV1_02_medium, V2_02_medium, MH_03_medium, and MH_05_difficult数据集测试的估计轨迹(黑色线)和以及实际运动(红色线)

TUM RGB-D Dataset

TUM RGB-D数据集包含一些室内的序列,在不同的纹理下,不同的光照和不同的结构条件,从RGB-D传感器采集到的数据中分别去评估物体的重建和SLAM/视觉里程计的性能。和大多数RGB-DSLAM方法一样,我们将实验结果展示在一个序列子集当中,在表格3当中,我们比较我们的精准性和其他方法,例如ElasticFusion,Kintinuous,DVO-SLAM以及RGB-DSLAM,ORB-SLAM2是唯一一种基于光束流差法,并且比其他的方法都更加优秀。我们已经注意到RGB-DSLAM,深度地图对于freiburg2序列有一个4%的尺度误差,误差可能来自错误的标定,我们已经在运行过程中,进行了一定程度的补偿。这能够部分解释我们取得好的结果的原因。图6显示的点云的结果来源于后端映射的传感器深度的地图,从计算关键帧的位姿在四个序列当中。实验的结果显示,ORB-SLAM2很好的展示了桌子和海报的轮廓线,以及高精度的重定位。

在这里插入图片描述
在这里插入图片描述
图6 TUM RGB-D数据的fr3office, fr1 room, fr2 desk and fr3 nst 序列的通过评估关键帧的位姿和深度图进行稠密的点云重建图

时序结果

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

在这里插入图片描述

结论

本文呈现了一个基于于单目,双目和RGB-D传感器的完整SLAM框架,在实时和标准的CPU的前提下能够进行重新定位和回环检测,以及地图的重用。在实验当中,我们关心的是在大场景中建立可用的地图和长期的定位。所提出的具有系统重新定位功能的定位模式可为已知环境提供一种非常健壮,零漂移和轻量级的定位方法。此模式对于某些应用程序可能很有用,例如在映射良好的空间中跟踪虚拟现实中的用户视点。与最新技术的比较表明,ORB-SLAM2在大多数情况下都可以达到最高的精度。

与最新技术的比较表明,ORB-SLAM2在大多数情况下都可以达到最高的精度。在KITTI视觉里程表测试中,ORB-SLAM2是目前最佳的双目SLAM解决方案。至关重要的是,与近年来兴起的立体视觉测距法相比,ORB-SLAM2在已经构建的地图中实现了零漂移定位。

出乎意料的是,我们的RGB-D结果表明,如果相机的定位精度更好,则BA性能要优于直接法或ICP,并且具有计算成本更低,不需要GPU处理实时运行的额外优势。

我们已经发布了系统的源代码,包括示例和说明,以便其他研究人员可以轻松使用。就我们所知,ORB-SLAM2是第一个可与单目,双目和RGB-D使用的开源视觉SLAM系统。此外,我们的源代码包含一个使用单目相机的增强现实应用程序2,以展示我们解决方案的潜力。
举例来说,将来的发展可能包括不重叠的多相机,鱼眼镜头或全景相机,大规模稠密融合,协作建图或增强的运动模糊鲁棒性

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页