SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

目录

摘要

I. 概论

II. 相关工作

A. Visual SLAM

B. Visual-Inertial SLAM

C. Multi-Map SLAM

III. 系统概览

IV. 相机模型

A. 重定位(Relocalization)

B. 非校正的立体视觉SLAM(None-recitify Stereo SLAM)

V. 视觉-惯性SLAM(Visual-Insertial SLAM)

A. 基础矩阵

B. IMU的初始化

C. 追踪和建图

D. 追踪丢失的鲁棒性处理

VI. 地图融合和闭环

A. 位置识别(place recognition)

B. 视觉地图融合

C. 视觉惯性地图融合

D.闭环Loop Closing

VII. 实验结果

A. 在EuRoC数据集的单会话SLAM.

B. TUM-VI Benchmark 上的视觉惯性 SLAM

C. 多会话SLAM

D.计算时间

VIII. 总结

参考文献



论文下载: 

ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

ORB_SLAM3在ubuntu18.04安装和初步测试+轨迹评估 这里开始安装测试


备注: 参考文献含文献下载地址.


摘要

ORB_SLAM3是第一个集合visual, visual-inertial,multi-map的SLAM系统,支持基于针孔镜头模型和鱼眼镜头模型的单目相机,立体视觉双目相机和RDB-D深度相机.这里提一下RGB-D相机,国内ORBBEC公司的,国外Intel公司的.

第一个新颖点:此为基于特征点的紧耦合视觉-惯性SLAM系统完全依赖最大后验估计(MAP)来估计姿态,甚至在IMU惯性传感器初始化也是采用MAP.采用这种方法使得SLAM鲁棒实时,能够适应大小不同得室内外环境,比之前的精度高出2到10倍.(这里我提一下MAP最大后验估计,和极大似然ML不同之处在于MAP增加了待估计参数的先验分布)

第二个新颖点:此为多地图系统(记得激光SLAM的Cartographer有子地图submaps),依赖于召回率改进后的地点识别(place recognition)方法.这使得ORB_SLAM3适应长时间视觉信息的不良或缺失.当追踪丢失的时候创建一幅新地图,待回访重合的区域时,新地图和之前的地图能够无缝连接融合.相比于仅使用前少数几帧信息的视觉里程计,ORB_SLAM3是第一个在所有算法阶段能够重复使用所有历史信息的系统,在共视帧的BA调整中,视差大的共视观测帧能提高优化精度,即使共视帧的时间戳相距甚远或者来自于之前的莫一幅地图.

我们的实验表明,在所有传感器配置中,ORB-SLAM3 与文献中提及的最佳系统一样稳健,而且准确度更高。 而且stereo-inertial SLAM 在 EUROC 无人机中的平均精度达到了 3.5 厘米,在一个代表 性AR/VR 室内场景中, 手持设备快速运动下采集的TUM-VI 数据取得了 9 毫米的精度,源代码在 社区公开了。


I. 概论

过去的20多年,随着SLAM系统和视觉里程计的深入研究,无论是纯视觉相机方面,还是视觉融合惯性IMU传感器方面,都表现优异,其鲁棒性和准确度不断提高.

现代主流的SLAM系统依赖最大后验估计(MAP),采用视觉传感器时则对应BA优化.一般而言,BA优化分两种,在基于特征法的SLAM中,几何约束BA是最小化特征点的重投影误差;而在基于直接法的SLAM中,光度约束BA是最小化一系列选中像素点的光度误差.

随着带有闭环技术的VO系统的出现,VO和SLAM的之间界定也更加分散(即分前后端).SLAM的目的是使用班再移动端传感器建立环境地图,并且实时估计移动端在地图中的位姿,与此形成对比的是VO系统关注计算移动端的位姿而不Care地图构建.建立SLAM 地图的最大优势是在BA优化中可以匹配和使用之前的历史观测数据,并建立数据关联,Data association分为以下三类:

(1) 短期数据关联(Short-term data association).即匹配前少数几秒构建的地图元素,这种数据关联方法背大部分VO系统采用,一旦离开了视角便忘记了环境信息,这样导致连续姿态估计的漂移,尽管是在同一片区域移动.

(2)中期数据关联(Mid-term data association).即匹配当前帧附近的地图元素,相对累积漂移小.这些元素可以以与短期观测相同的匹配方式参与BA优化.当系统在重合区域移动时基本Zero漂移.这是论文所提系统精度优于其他闭环VO系统的关键所在.

(3)长期数据关联(Long-term data association).即基于位置识别技术匹配历史观测数据.即使出现累积漂移(闭环修正),当前区域失联(地图融合),追踪丢失(位置识别)等情况也可适应.长期数据关联的匹配技术通过位姿图优化(PG)或者更精确的BA优化来重置漂移,校正地图,这是文中所提SLAM在大中型闭合环境中精度表现的关键所在.

在本次研究工作中,ORB_SLAM3借鉴了ORB_SLAM和ORB_SLAM VI,之前的视觉和视觉惯性SLAM能够充分利用短期,中期和长期的数据关联信息,在重合区域基本达到zero drift.本论文更进一步增加了多地图关联(multi_map data association),这使得系统可以重复使用历史子地图信息BA优化,从而真正实现SLAM的目标:建立可以为后续精确定位的地图.

本文是一篇系统性的论文(很值的研读哈),其最重要的贡献就是ORB_SLAM3库本身,目前为止最完整,最精确的视觉,视觉惯性,多地图的SLAM系统.库的主要新颖点如下:

  • 一个单目和双目惯性的SLAM系统,完全依赖于MAP(最大后验估计),甚至在IMU的初始中.初始化的方法参考文献[6],论文添加了ORB-SLAM单目惯性视觉[4],扩展至双目立体惯性SLAM和一个全方位的公开数据评估报告.结果表明本文的单目和双目惯性SLAM系统在鲁棒性和精度都优于其他visual-Inertial方法,甚至在没有闭环系列的系统方面也更优越.(挺会吹牛逼的,如果达不到,估计是源码问题,而不是论文方法的问题)
  • 改进了召回率的place recognition.很多visual-SLAM和VO系统[2][7][8]采用DBoW2词带库[9]的方法解决place recognition的问题.DBoW2词带在检查几何一致性前,要求时间一致性,在相同区域匹配3帧连续帧,其为以召回率为代价来提高精度.因此在闭环修正和重复使用重合区域时太慢.本文提出了一种新的place recognition算法,具体做法是在检查几何一致性时首先检查候选关键帧,然后用地图中的3帧共视关键帧检查局部一致性(local consistency).这种策略以稍大一些的计算量改进了召回率(recall),强化了数据关联(data association).
  • ORB_SLAM Altas.第一个能够囊括单目,双目的visual,visual-Inertial 完整系统.Altas时一系列断开相对姿态连接的地图,其能够平滑运用在所有映射操作中,包括:place recognition,相机重定位,闭环和地图的精准无缝融合(map merging),这使得不同时间下建立的地图能够自动使用和融合,类似于增量-子地图的SLAM系统.初步版本的视觉传感器ORB_SLAM Altas参考文献[10].论文增加了新的place recognition系统,多地图视觉-惯性系统和公开的数据集评估结果.
  • 相机抽象化表达. 这使得SLAM和所使用的相机模型无关,并允许通过正投影,反投影和雅可比函数来添加新的模型,代码重实现了针孔[11]和鱼眼[12]镜头模型.(这里的正投影为3D点到像素点,反投影即像素点到3D点).

所有这些创新点加以几行代码改进(轻描淡写型)便使得ORB_SALM3成为一个新的供参考的视觉,视觉惯性SLAM开源库,其鲁棒性相当于目前文献中提及的系统,VII部分的对比结果表明精度也明显优异.论文也给出了SLAMers感兴趣的单目\双目\单目-Insertial\双目-Insertial的对比实验结果.


II. 相关工作

表I给出了目前最具代表性的visual\visual-Inertial系统的总结表,包括了用到的主要姿态估计和数据关联技术,表中的精度定性和鲁棒性评级基于VII部分的结果数据,PTAM\LSD-SLAM\ORB-SLAM的对比参考报告[2].

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第1张图片

A. Visual SLAM

单目SLAM的第一个解决方案时MonoSLAM [13],[14],[52],其采用了扩展卡尔曼虑波算法(EKF),通过相关性引导搜索来追踪图像的Shi-Tomasi角点.中期数据关联的改进用到了一些技巧来保证特征匹配的一致性,是一个可用的视觉SLAM方案[53][54].

相反,基于关键帧的的方法使用一些的所选帧估计地图,丢弃来自中间帧的信息.这使得以关键帧速率的BA优化更好资源,但精度高些.这类最具代表性的SLAM系统为PTAM,其将SLAM分为追踪和建图两个线程.相同的计算资源下,基于关键帧的方法比滤波的方法精度高些[55],从而成为视觉SLAM和视觉里程计的基本标准.在文献[56]中使用滑动窗BA实现了大尺度的单目SLAM,而在文献[57]中通过双窗口优化和一张共视图实现.

基于这些思想,ORB_SLAM[2][3]采用ORB特征,其描述子提供短期和中期的数据关联,从而建立起共视图约束追踪和建图的复杂性.采用DBoW2[9]词袋方法,建立长期数据关联,实现重定位.就目前而言,这种方案是唯一集成了三类数据关联的视觉SLAM,我们认为这集成方法是精度优异的关键.在此文中,我们通过追踪丢失则新建地图的Altas系统方法改进了纯视觉SLAM的鲁棒性,并且通过改进召回率的位置识别方法提高了闭环场景下的精度.

直接法不提取特征,直接使用图像像素值大小,通过最小化光度误差估计运动和结构.LSD_SLAM[20]利用明显的梯度像素能够建立大尺度的半稠密地图.然而地图估计基于位姿图(PG)优化,相比PTAM和ORB_SLAM[2]精度要低.另外混合法SVO系统[23][24],提取FAST特征点,使用直接法追踪帧间的特征和非零像素值梯度,通过重投影误差优化相机轨迹和3D结构.SVO确实很高效,但作为纯视觉VO方案,因其仅用了短期数据关联而精度受限.直接稀疏里程计DSO[27]方法在点检测糟糕时能够计算精准的相机位姿,且在低纹理或者图像模糊的情况下增强鲁棒性.DSO论文中还介绍了同时优化7帧最近位姿和逆深度点的局部光度BA,并将该思想扩展至双目[29]\基于特征和DBoW2[58][59]的闭环\还有视觉惯性里程计中.直接稀疏建图DSM[31]方法中介绍了直接法的地图重复使用在中期数据关联中的重要性.所有这些提到的方法中由于缺少短期\中期\长期数据关联而导致精度比我们提出的方法差些(参考VII部分).

B. Visual-Inertial SLAM

融合视觉和惯性传感器的方法对纹理缺失\运动模糊和遮挡情况鲁棒性较好.在单目视觉下使得尺度可观测.

视觉-惯性方法最早可以追溯到MSCKF[33],其通过边缘化特征点避免了特征数量的EKF二次损耗.文献[34]将惯性系统进一步优化,[35][36]将其推广到双目.第一个基于特征关键帧和BA优化的紧耦合视觉里程计系统是OKVIS[38][39],支持单目和双目.与这些依赖特征的系统不同的是ROVIO[41][42],其通过直接数据关联建立EKF光度误差.

ORB_SLAM_VI[4]是第一个可重复使用地图短期\中期\长期数据关联的视觉-惯性SLAM系统,并将他们用在基于IMU预积分的准确局部视觉惯性BA优化中[60][61].然而该系统中的IMU初始化太慢,合计15秒,对系统的鲁棒性和精度构成影响.文献[62][63]中提出了基于由比例、重力、加速度计偏差和初始速度及视觉特征深度构成的闭合关系式的快速初始化技术.至关重要的是,该方法忽略了 IMU的 噪声属性,并最小化了空间中点的 3D 误差,而不是它们的重投影误差,这是基于特征的计算机视觉的黄金标准.我们在文献[64]中表明这中方法将导致不可预测的错误.

VINS-Mono[7]是一个综合了DBoW2词袋闭环\4DoF位姿图优化和地图融合的高精度鲁棒性单目-惯性视觉里程计系统.其特征追踪方面采用的是Lucas-Kanade 追踪法,要比描述子匹配稍微鲁棒些.在VINS-Fusion[44]将其扩展到了双目和双目惯性系统.

VI-DSO[46]中提出了一种融合所选高梯度像素光度误差和惯性观测数据进行BA约束优化的方法,将DSO扩展到了视觉-惯性里程计范畴,呈现出相当不错的精度.随着来自高梯度像素的信息被成功利用,纹理较差的场景区域的鲁棒性也得到了提升。他们的初始化方法依赖于视觉惯性 BA 并需要 20-30 秒内收敛到 1% 的尺度误差.

最近提出的BASALT[47]是双目-惯性里程计系统.该方法从视觉-惯性中提取非线性因子并用在BA中,在闭环时用到了ORB特征,获得了相当不错的估计精度.Kimera[8]文献提到了一种新颖的度量语义建图系统,但其度量部分由立体视觉-惯性里程计加DBoW2词袋闭环和位姿图优化组成,和VINS-Fusion的精度相当.

在本论文中,我门基于ORB-SLAM-VI并扩展至双目-惯性SLAM.提出了一种基于最大后验估计(MAP)的快速初始化方法,这种初始化方式将视觉和惯性传感器的不确定性考虑进来.2秒内以5%的误差估计真实尺度,15秒内尺度误差收敛到1%.所有上面讨论的其他系统(他们中有些增加了闭环修正)都是视觉-惯性里程计的方法缺少中期数据关联能力.我们相信融合了快速和精准的初始化时我们系统连续获得较好精度的关键,尽管在没有闭环的情况下也是如此.

C. Multi-Map SLAM

文献[65]中第一次提出在探索环境丢失时采用地图创建并滤波融合的方式增加鲁棒性的方案.文件[66]第一次提出了基于关键帧的多地图系统,但是其地图的初始化比较平常,该系统无法融合或者关联不同的子地图.在C2TAM[68]中多地图功能被研究确认为以单向或双向代理-服务器为模式[67]的多地图协作系统的组成部分.MOARSLAM[69]提出了一种无状态代理-服务器模式的多协作\多设备的SLAM架构,但其关键在与软件架构而而对精度结果只字未提.

最近CCM-SLAM[70][71]在ORB_SLAM系统之上提出了一种面向多无人机双向信息流的分布式多地图系统.他们的焦点集中于带宽受限的挑战和分布式处理上.然而本文的方法精度和鲁棒性较高,EuROC数据集的测试精度明显更优越.SLAMM[72]也提出了一种扩展于ORB_SLAM2的多地图系统,但器子地图零散排布,但本文能够无缝融合多子地图,从而建立更高精度的全局地图.

VINS-Mono[7]是一种基于DBoW2词袋位置识别\闭环\多地图的视觉里程计系统.本文在EuROC数据集的实验结果表明在单目-惯性方面的精度要比VINS-Mono的精度高出2.6倍,这都归于中期数据关联的能力.本文的Altas系统也是基于DBoW2词袋,但是提出了一种高召回率的位置识别技术,通过局部BA融合更详细的更精确的地图信息.多地图方面,本文的方法在EuROC数据集的测试结果比VINS-Mono要优越3.2倍的精度.


III. 系统概览

ORB_SLAM3基于ORB_SLAM2[3]和ORB_SLAM-VI[4].这是一个完全的多地图\多会话的系统,支持纯视觉或者是视觉-惯性模式.提供了单目\双目\RGB-D传感器接口,支持针孔和鱼眼相机模型.图1展示了系统的各个部分.

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第2张图片

该系统和ORB_SLAM2基本相同,其中一些重要的创新点总结如下:

  • Altas. 为多个不连接的地图的多地图表达.追踪线程维持了一个活跃地图(Active Map)用于定位即来帧,在局部地图线程中,该地图不停被优化和加入新的关键帧.Altas中的其他地图称为休眠地图(non-active map).系统用关键帧建立了一个独立的DBoW2词袋用于重定位\闭环修正和地图融合.
  • Tracking Thread. 该线程处理传感器信息,通过最小化匹配地图特征的重投影误差,实时计算当前帧相对于活跃地图的位姿.同时确定当前帧是否为关键帧.在Visual-Insertial模式下,通过增加惯性残差优化项来估计设备的速度和IMU偏置量.当追踪丢失时,追踪线程先尝试重定位当前帧在所有Altas地图中的位姿.如果重定位成功,则恢复追踪,依据需要切换活跃地图.否则,在某特定的时间后,当前活跃地图存储为非活跃状态.并且重新初始化一张新的地图.
  • 局部建图线程. 将关键帧和地图点添加到活跃地图中,剔除冗余的关键帧和地图点,并以当前帧附近局部窗的帧建立视觉和视觉-惯性BA约束来优化地图.另外在惯性传感器模式下,通过最大后验估计(MAP)对IMU参数的初始化和优化.
  • 闭环和地图融合线程. 以关键帧的速率检测当前活跃地图和整个Altas地图的重合区域.如果重合区域属于活跃地图,则进入闭环修正.如果当前活跃地图属于另一个地图,则两个地图无缝融合成单独的一个地图,并切换为活跃地图.一个闭环检测后,完整的BA将另开一个单独线程对地图优化,并且对系统的实时性能没有影响.

IV. 相机模型

ORB_SLAM所有系统组成部分中假设了所有的相机模型是针孔相机模型.本文的目标是通过提取和相机模型所有相关的属性和函数(投影\逆投影\雅可比函数等等),将其从整个SLAM流程中抽象出来成为分立的模块.这使得系统支持任何相机模型,只要提供对应的相机模块即可.在ORB_SLAM3库中,除了针孔相机模型,本文还提供了Kannala-Brandt[12]鱼眼模型.由于大多数流行的计算机视觉算法假设针孔相机模型,许多 SLAM 系统需要校正整个图像或特征点坐标,使得整个地图工作在理想平面视角下.然而,这显然在大视角FOV甚至超视角FOV(大于180度)的鱼眼镜头下会出现问题.图像校正不是一种选择,因为外围的对象被放大,中心的对象分辨率不高,阻碍了特征匹配.修正特征坐标需要使用小于 180 度的 FOV,这会给许多以沿图像均匀重投影误差为假设的计算机视觉算法带来问题,且这在修正后的鱼眼图像中表现更糟糕. 这迫使裁剪图像的边缘部分,失去了大 FOV 的优势:更频繁的地图重合和更好的遮挡鲁棒性.接下来,我们讨论如何克服这些困难.

A. 重定位(Relocalization)

一个鲁棒性的SLAM系统要求相机追踪失败时具备重定位的能力.ORB_SLAM通过设置基于ePnP[73]算法的"透视-N-点"(PnP)解算器来解决重定位的问题,该方法中所有的投影方程都以校正了的针孔相机为假设前提.再来看本文的方法要求PnP算法独立于使用的相机模型.出于此,本文采用了极大似然PnP算法(MLPnP),该方法由于使用投影射线作为输入而完全解耦相机模型.相机模型中只要提供逆投影函数(从像素到投影射线)便可以用于重定位.

B. 非校正的立体视觉SLAM(None-recitify Stereo SLAM)

大部分立体视觉SLAM系统以视觉帧经过了校正为假设前提.比如两张图片的变换基于相同焦距的针孔模型投影,图像平面共面假设和极线对齐等的假设前提.因此一张图像中的特征点很容易在另一张图像的某一行找到匹配.然而立体视觉的这一假设相当严格,在许多应用中既不合适也不灵活.比如校正发散的立体视觉图像对或立体鱼眼镜头图像对将需要裁剪很多部分,从而失去了大 FOV的优势.

出于此种考虑,本文的SLAM系统不依赖于图像校正,而将立体视觉看成具备以下特点两个单目相机:

(1) 相互之间存在常量SE3变换

(2) 可选择地,存在观测场景的共同区域

这些约束使得在三角化地图点和BA优化中能够快速的估计地图的尺度.沿着这个思想,本文提出的SLAM流程以某相机姿态或者IMU传感器的姿态估计6DoF刚体姿态,从而表达相机相对于刚体姿态的位姿.如果立体视觉观测的两相机有重合区域,我们能够在首次观测便三角化地图点的真实尺度.


V. 视觉-惯性SLAM(Visual-Insertial SLAM)

ORB_SALM_VI[4]是第一个能够重复使用地图的Visual-Insertial SLAM方案.但其视觉传感器受限于针孔相机模型,且初始化比较慢,甚至在某些糟糕情况下容易初始化失败.本文在ORB_SLAM_VI基础上,提出了快速精确IMU初始化技术,实现了支持鱼眼和针孔镜头的单目-惯性\双目-惯性SLAM系统开源库.

A. 基础矩阵

在纯视觉SLAM中,被估计的状态量仅仅包括当前相机帧的姿态,而视觉-惯性SLAM还有一些额外的变量需要计算.分别为机体早世界坐标系中的姿态T_{i}=[R_{i},p_{i}]\in SE(3)和速度v_{i},还有基于布朗运动假设前提的陀螺仪和加速度计偏差b_{i}^{g},b_{i}^{a}.构成如下状态方程(1):

 ​​​​S_{i}\doteq \left \{ T_{i},v_{i},b_{i}^{g},b_{i}^{a} \right \} (1)

对于视觉-惯性SLAM,我们依据文献[60]的理论和[61]中的方法对相邻视觉帧i,i+1间进行IMU测量值的预积分.我们获得预积分后的旋转量,速度和位置测量值,记为\bigtriangleup R_{i,i+1},\bigtriangleup v_{i,i+1} and \bigtriangleup p_{i,i+1},还包括一个整个测量向量的协方差矩阵记为\sum {\tau }_{i,i+1}.积分状态记为S_{i},S_{i+1},采用文献[61]中的惯性残差定义\large \large \gamma \tau _{i,i+1}.

\large \gamma \tau _{i,i+1}=[ \gamma_{\bigtriangleup R_{i,i+1}}, \gamma_{\bigtriangleup v_{i,i+1}},\gamma_{\bigtriangleup p_{i,i+1}}]

\large \gamma_{\bigtriangleup R_{i,i+1}}=Log(\bigtriangleup R_{i,i+1}^{T}R_{i}^{T}R_{i+1})

\large \gamma_{\bigtriangleup v_{i,i+1}}=R_{i}^{T}(v_{i+1}-v_{i}-g\bigtriangleup t_{i,i+1})-\bigtriangleup v_{i,i+1}

\large \gamma \bigtriangleup p_{i,i+1}=R_{i}^{T}(p_{j}-p_{i}-v_{i}\bigtriangleup t_{i,i+1}-\frac{1}{2}g\bigtriangleup t^{2})-\bigtriangleup p_{i,i+1} (2)

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第3张图片

其中\large Log:SO(3)\rightarrow \mathbb{R}^{3},表示李群到向量空间的映射。残差项\large \gamma_{ij}表示第\large i帧的第\large j个3D点在图像位置上的重投影\large x_{j}偏差.

其中\large \amalg :\mathbb{R}^{3}\rightarrow \mathbb{R}^n表示对应相机的投影函数,\large u_{i,j}表示点\large j个在在图像上的观测点\large i,观测的协方差矩阵为\large \Sigma _{ij}\large T_{CB}\in SE(3)表示从IMU坐标到相机坐标的刚体变换,通过标定获取,\large \bigoplus表示\large SE(3)在三维向量空间的转换操作。

结合惯性IMU和视觉的残差项,视觉-惯性SLAM可以表示成基于关键帧的最小化问题[39]。给定一系列\large k+1帧和对应的状态\large \bar{S}_{k}\doteq \left \{ S_{0}...S_{k} \right \},还有其对应的3D标记点\large l和位置\large \chi \doteq \left \{ x_{0}...x_{l-1} \right \}。视觉-惯性的优化问题可以表示为(4):

(包括IMU残差项和图像重投影项)这里\large \kappa ^{j}表示一系列关键帧观测到的3D点\large j。该优化可以形象化如图2a所示的因子图。注意对于相机的重投影误差前添加了鲁棒核函数来减少误匹配点的影响,这对于不存在错误关联数据的IMU残差项是不需要的。该优化在追踪和建图中对效率有需求,但更重要的是有一个能够收敛到精确解的初始值。(初始值的重要性)

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第4张图片

B. IMU的初始化

这部分的目标是为Inertial变量提供好的初始值,变量有速度、重力方向、IMU偏置。有些SLAM系统比如VI_DSO[46]尝试从一开始就进入Visual-Inertial的BA优化,避开特定的初始化过程,以求达到Inertial参数的慢慢收敛(大约30秒)。

本文提出了快速准确的初始化方法,基于以下三个关键之处:

  • 纯单目视觉SLAM能够获得相当精确的初始地图[2],唯一的问题就是尺度是未知的。首先解决纯视觉初始化的问题将强化IMU的初始化。
  • 如文献[56]中提到的,当尺度Scale作为显示优化变量而不是作为BA优化的隐式变量时,要求尺度能够快速收敛。
  • 忽略传感器在IMU初始化中的不确定性而导致的不可预见的偏差。

因此,适当考虑传感器的不确定性,本文将IMU初始化当成最大后验估计问题(MAP),具体分为以下三个步骤。

1) 纯Visual最大后验估计(MAP):我们在2秒内进行纯视觉SLAM的初始化,以4Hz的频率插入关键帧。之后利用10帧由相机姿态和上百3D点构成的比例尺度地图进行纯视觉BA优化,如图2b所示。从而获得相机姿态组成的轨迹\large \bar{T}_{0:k}=[R,\bar{p}]_{0:k},其中上划线表示单目情况的比例尺度变量。

2) 纯Inertial最大后验估计(MAP):这一步仅使用第一步的轨迹\large \bar{T}_{0:k}和这些帧之间的IMU测量值,基于MAP估计Inertial变量。其中Inertial变量表达成纯Inertial的状态向量:

其中\large s\in \mathbb {R}^{+}第一步纯视觉解析中的尺度因子,\large R_{wg}\in SO(3)为旋转矩阵,用于计算重力向量\large g 在世界坐标系的表达:\large g=R_{wg}g_{I},其中\large g_{I}=(0,0,G)^T,这里G表示重力大小。\large b=(b^{a},b^{g})\in \mathbb{R}^{6}表示加速度计和陀螺仪的偏置量,其为IMU初始化常量。\large \bar{v}_{0:k}\in\mathbb{R}^{3}表示从第一帧到最后一帧的物体的up-to-scale速度,从\large \bar{T}_{0:k}中得到初始估计。

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第5张图片

 (这部分直接看原文,翻译可能没法表达清楚原意思。注意公式(8)假设了IMU预积分误差和参估计数先验分布符合高斯分布。)

该优化示意图如图2c所示,和公式(4)不同的是不包括残差项,因为视觉SLAM估计的轨迹尺度信息被视为常量,并且添加了先验残差项,使得IMU偏置接近于0,协方差\large \Sigma _{b}代表了IMU偏置的先验取值范围。文献[61]中介绍了IMU协方差\large \Sigma \tau_{i,i-1}预积分的详细信息。

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第6张图片

 (公式9中提到沿着重力方向的旋转假设不变)

3) Visual-Inertial最大后验估计(MAP):一旦我们有一组好的惯性和视觉参数,即可构建联合视觉-惯性优化,进一步优化解。这个优化过程类似示意图2a所示,但是所有关键帧都有共同的偏差,并且包括与仅惯性步骤中相同的偏差先验信息。

我们在EuRoC数据集上做了详尽的实验,结果表明该初始化过程非常高效,2秒内的轨迹尺度误差为5%,为了改善初始估计效果。在初始化后的5秒和15秒之后将进行visual-inertial的BA优化,从而收敛到1%的误差详见VII部分。BA优化完成后,我们便认为地图已经(mature)准备好了,也即尺度、IMU参数和重力方向已经精确估计了。我们的初始化比求解一组代数方程[62]-[64]的联合初始化方法要准确得多,比ORB_SLAM_VI[4]那种获取第一个尺度估计就耗时15秒的初始化方法要快,也比VI-DSO[46]中那种刚开始尺度误差大而随后耗时20-30秒收敛至1%内的初始化快。文献[6]中介绍了不同初始化方法间的对比结果。

在一些特殊的案例中,当缓慢的移动无法提供较好的inertial参数的观测值,其初始化可能很难在15秒内得到收敛解[6]。考虑到这种情况的鲁棒性,我们提出了尺度修正技术,该技术基于修改后的惯性优化方法,即包含所有的插入地图后的关键帧但仅仅估计尺度和重力方向参数如图2d。同时注意尺度常量的假设条件不成立。相反我们利用投影并修正后的估计值。这种优化方法每10秒在局部地图中运行一次,直到距离初始化完成已经过去75秒或者超过100关键帧,计算效率还不错。

最后,通过将比例因子固定为 1 并将其从仅惯性优化变量中取出,我们轻松地将我们的单目惯性初始化扩展到立体惯性,从而增强了其收敛性。

C. 追踪和建图

追踪和建图采用文献[4]提出的方案。追踪解决的是简单的visual-inertial优化问题,即仅仅优化最后两帧的状态而3D点是固定不参与优化的。

建图而言,试图从方程 4 中解决整个优化问题,对于大地图来说是难以处理的。我们使用关键帧及其点的滑动窗口作为可优化变量,还包括从共视关键帧对这些点的观察,但保持它们的姿势固定。

D. 追踪丢失的鲁棒性处理

在纯视觉 SLAM 或 VO 系统中,时间相机遮挡和快速运动会导致失去对视觉元素的跟踪,使系统丢失。ORB-SLAM 率先使用基于词袋位置识别的快速重定位技术,但事实证明它们不足以解决 EuRoC[3] 数据集中的困难序列,当跟踪的点投影少于 15 个时,我们的视觉-惯性系统进入视觉丢失状态,并在两个阶段实现鲁棒性:

  • 短期丢失:根据 IMU 读数估计当前的身体状态,并在估计的相机姿势中投影地图点并在大图像窗口内搜索匹配项。 结果匹配包含在视觉-惯性优化中。 在大多数情况下,这允许恢复视觉跟踪。 否则,5 秒后,我们进入下一阶段。
  • 长期丢失:一个新的视觉-惯性地图被初始化,如上所述,它成为活动地图。

如果系统在 IMU 初始化后 15 秒内丢失,则该地图将被丢弃。 这可以防止积累不准确和无意义的地图。

VI. 地图融合和闭环

帧和活动地图之间的短期和中期数据关联通常由跟踪和映射线程通过将地图点投影到估计的相机姿势中并在仅几个像素的图像窗口中搜索匹配项来找到。为了实现重定位和循环检测的长期数据关联,ORB-SLAM 使用 DBoW2 词袋位置识别系统[9][75]。这种方法也被最近的 VO 和 SLAM 所采用,从而实现系统的闭环(见表1)。

与跟踪不同,位置识别不是从对相机姿势的初始猜测开始。 相反,DBoW2 使用其词袋向量构建关键帧数据库,并且给定查询图像能够根据其词袋有效地提供最相似的关键帧。 仅使用第一个候选帧,原始 DBoW2 查询可实现 50-80% 的准确率和召回率[9]。为避免会损坏地图的误报,DBoW2 实施了时间和几何一致性检查,将效果移至 100% 精度和 30-40% 召回率[9][75]。至关重要的是,时间一致性检查至少在 3 个关键帧期间会延迟位置识别。 当尝试在我们的 Atlas 系统中使用它,我们发现这种延迟和低召回率导致相同或不同地图中的重复区域过于频繁。

在这项工作中,我们提出了一种新的地方识别算法,具有改进的长期和多地图数据关联的召回率。 每当地图线程创建新的关键帧时,就会启动位置识别,尝试检测与 Atlas 中已有的任何关键帧的匹配项。 如果找到的匹配关键帧属于活动地图,则执行闭环。 否则,它是一个多地图数据关联,然后,活动地图和匹配的地图被合并。 作为我们方法的第二个新颖之处,一旦估计了新关键帧和匹配地图之间的相对位姿,我们就定义了一个局部窗口,其中包含匹配关键帧及其在共视图中的邻接关键帧。 在这个窗口中,我们集中搜索中期数据关联,提高闭环和地图合并的准确性。 这两个新颖性解释了在 EuRoC 实验中 ORB-SLAM3 与 ORB-SLAM2 相比获得的准确度更高的原因。下面解释不同操作的细节。

A. 位置识别(place recognition)

为了获得更高的召回率,对于每个新的活动关键帧,我们都会在 DBoW2 数据库中查询 Atlas 中的几个相似关键帧。为了达到 100% 的精度,这些候选中的每一帧都经过了几个几何验证的步骤。所有几何验证步骤的基本操作包括检查图像窗口内是否存在 ORB 关键点,用汉明距离阈值判断其描述符与地图点的 ORB 描述符匹配度。如果搜索窗口中有多帧候选,为了丢弃不明确的匹配,我们检查与第二邻近匹配的距离比。位置识别的算法步骤如下:

1)DBoW2候选关键帧。我们排除\large K_{a}的共视关键帧,使用活动关键帧\large K_{a}来查询Altas DBoW2数据库中三帧最相似的关键帧。我们将每个位置识别的匹配候选帧设为\large K_{m}

2)局部窗。对于每一帧\large K_{m},我们定义局部窗,其内容包括\large K_{m}\large K_{m}的共视关键帧及他们能观测到所有地图点。DBoW2 直接索引提供了帧\large K_{a}关键点和局部窗帧之间的一组假定的匹配。对于这些 2D-2D 匹配中的每一对,我们还提供了它们相应地图点之间的 3D-3D 匹配。

3)3D对齐变换。我们采用RANSAC算法计算这个转换\large T_{am},可将\large K_{m}局部窗口中的地图点较好的和\large K_{a}的地图点对齐。在纯单目视觉或者是单目-惯性中,如果地图还没有准备好,我们计算\large T_{am}\in Sim(3),否则\large T_{am}\in SE(3)。在这两种情况下,我们使用 Horn 算法 [77] ,即使用三个 3D-3D 匹配的最小集合来找到\large T_{am} 的每个假设。假设匹配的推算:\large K_{a}中的地图点经过3D变换后,获得在\large K_{a}中的低于某个阈值的投影误差,对假设投赞成票,如果数量超过阈值,则选择具有更多选票的假设。

4)引导匹配优化。局部窗口中的所有地图点都用\large T_{am}变换,以找到更多与\large K_{a} 中的关键点匹配。搜索也是反向的,在本地窗口的所有关键帧中寻找\large K_{a}图点的匹配项。使用找到的所有匹配,通过非线性优化进行修正\large T_{am},其中目标函数是双向重投影误差,Huber 影响因子的使用提供了对虚假匹配的鲁棒性。如果优化后的内点数量超过阈值,则使用较小的图像搜索窗口启动引导匹配和非线性修正的第二次迭代。

5)三个共视关键帧的验证。为避免误报,DBoW2 在三个连续的关键帧中等待位置识别触发,从而延迟或丢失位置识别。 我们的关键见解是,大多数情况下,验证所需的信息已经在地图中。为了验证地点识别,我们在活动地图部分搜索与\large K_{a} 共视的关键帧,并从中选择两个与局部窗地图点匹配的数量超过某个阈值的关键帧。如果未找到,则使用新传入的关键帧进一步尝试验证,而无需再次触发词袋。该验证过程持续到三个关键帧验证了\large T_{am},或者两个相邻的新关键帧验证失败。

6)VI模式下的重力方向验证。在VI模式下,如果活动地图已经准备好,\large T_{am}\in SE(3)值估计完成。我们进一步确认pitch和roll角是否低于某个阈值,以便明确接受位置识别的假设。

B. 视觉地图融合

当一次成功的位置识别触发了活动地图\large M_{a}中的\large K_{a}和另一个存储在Altas中的不同地图\large M_{m}的匹配关键帧\large K_{m}之间的多地图数据关联,其对齐变换为\large T_{am},我们便进行地图融合操作。在这个过程中要特别注意保证\large M_{m}中的信息能被跟踪线程及时重用,避免地图重复。因此我们建议将\large M_{a}映射到\large M_{m}参考系中。考虑到\large M_{a}可能包含许多元素并且合并它们可能需要很长时间,因此合并分为两步。首先地图合并是在由共视图中\large K_{a}\large K_{m}的相邻帧组成的焊接窗口中进行,第二步,校正通过位姿图优化传播到融合地图的其余部分。具体的步骤如下:

1)焊接窗构建。该窗口包括\large K_{a}\large K_{m}及其共视关键帧,和他们观测的所有3D地图点。在将它们包含在焊接窗口中之前,属于 \large M_{a}的关键帧和地图点由\large T_{ma} 变换以将它们和 \large M_{m}对齐。

2) 地图融合。地图\large M_{a}\large M_{m}融合在一起形成新的活动地图,为去除重复的点,主动搜索地图\large M_{a}的3D点在地图\large M_{m}的关键帧中匹配关系。对于每一组匹配,\large M_{a}中的点被移除,而 \large M_{m}中的点保持累积被移除点的所有观察值。新的中期数据关联形成了\large M_{a}\large M_{m}中的关键帧构成的边,Covisibility和Essential 图通过增加增加边进行更新。

3)焊接窗BA优化。该局部BA优化了焊接窗中的地图\large M_{a}\large M_{m}中所有的关键帧及其观测的点如图3a所示。为了固定规范自由度,地图\large M_{m}中不属于焊接窗口但观察到任何局部地图点的关键帧在该BA中姿势是固定的。优化完成后,所有包含在焊接区域内的关键帧都可以用于相机跟踪,实现地图\large M_{m}的快速准确重用。

4)Essential图优化。使用整个合并图的基本图执行姿势图优化,保持焊接区域中的关键帧固定。 这种优化将校正量从焊接窗口传播到地图的其余部分。 

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第7张图片

C. 视觉惯性地图融合

视觉惯性合并算法遵循与纯视觉案例类似的步骤。 修改步骤 1) 和 3) 以更好地利用惯性信息:

1)VI焊接窗构建。地图准备好时,我们用\large T_{ma}\in SE(3)变换进行地图\large M_{a}的映射。地图没准备好时,我们用\large T_{ma}\in Sim(3)变换进行地图\large M_{a}的对齐。

2)VI焊接窗BA优化。姿态、速度、关键帧\large K_{a}\large K_{m}的偏置量,以及他们最后5帧临时关键帧被一起加入优化。这些优化变量通过IMU预积分项联系在一起如图3b所示。对于地图\large M_{m},时间上最接近局部窗之前的立即关键帧加入优化但固定不变;而对于地图\large M_{a},包含其相似关键帧但姿态保持可优化。上面提到的关键帧看到的所有地图点都被优化,连同来自\large K_{m}\large K_{a}关键帧的姿态。所有关键帧和点都通过重投影误差关联起来。

D.闭环Loop Closing

闭环校正算法类似于地图合并,由位置识别达成匹配的两个关键帧都属于活动地图的情况除外。焊接窗口由匹配的关键帧构成,检测并融合重复的地图点,从而在covisibility和essential图中创建新链接。下一步是姿势图优化,以将循环校正传播到地图的其余部分。最后一步是在考虑闭环中期和长期匹配后找到 MAP 估计的全局 BA。在视觉惯性情况下,仅当关键帧的数量低于阈值时才执行全局 BA,以避免巨大的计算成本。

VII. 实验结果

整个系统的评价分为:

  • EuRoC [79] 中的单次实验:每11 个序列为一组处理生成地图,并配备四种传感器:单目、单目惯性、立体和立体惯性。
  • 在具有挑战性的TUM-VI 基准测试中,测试鱼眼相机的单目和立体视觉惯性SLAM[80]的性能。
  • 混合测试两个数据集

像在该领域一样,我们使用 RMS ATE[81] 测量精度,在纯单目情况下使用 Sim(3) 变换将估计轨迹与地面实况对齐,在其余传感器配置中使用 SE(3) 变换 . 使用来自 Sim(3) 对齐的 s 计算比例误差,如 |1 − s|。 所有实验均在 Intel Core i7-7700 CPU 上运行,频率为 3.6GHz,内存为 32 GB,仅使用 CPU。

A. 在EuRoC数据集的单会话SLAM.

TableII分别将配置四种传感器的ORB-SLAM3的性能与最先进的最相关系统进行比较。我们报告的是运行10次的均值结果。如表中所示,ORB-SLAM3 在所有传感器配置中实现了比文献中可用的最佳系统更准确的结果,在大多数情况下,差距很大。

在单目和立体配置中,我们的系统比 ORB-SLAM2 更精确,因为更好的位置识别算法可以更早地闭环并提供更多的中期匹配。有趣的是,下一个最好的结果是由 DSM 获得的,它也使用中期匹配,即使它没有闭环。

在单目惯性配置中,ORB-SLAM3 的准确度是 MCSKF、OKVIS 和 ROVIO 的五到十倍。并且比VI-DSO和VINS-Mono的精度提高了一倍以上,再次展现了中长期数据关联的优势。与 ORB-SLAM VI 相比,我们新颖的快速 IMU 初始化允许 ORB-SLAM3 在几秒钟内校准惯性传感器并从一开始就使用它,能够完成所有 EuRoC 序列,并获得更好的精度。

在立体惯性配置中,ORB-SLAM3 的准确度是 Kimera 和 VINS-Fusion 的三到四倍。它的准确性只有最近的 BASALT才能达到,它是一个原生立体惯性系统,其无法完成数据序列 V203,其中一个摄像机的一些帧丢失了。比较我们的单目惯性和立体惯性系统,后者在大多数情况下表现更好。只有两个机器霍尔 (MH) 数据序列才获得较低的精度。我们假设 MH数据 序列的更大深度场景可能会导致不太准确的立体三角测量,因此会导致不太精确的比例。

为了总结性能,我们展示了每种传感器配置十次执行的中位数。 对于一个健壮的系统,中位数准确地代表了系统的行为。但是一个非鲁棒的系统会在其结果中表现出很大的差异。这可以使用图4进行分析,图4用颜色显示了在十次执行中的每一次执行中获得的错误。与[46]中发表的 DSO、ROVIO和VI-DSO的数据进行比较,证实了我们方法的优越性。

在纯视觉配置中,多地图系统通过在跟踪丢失时创建新地图来为快速运动增加一些鲁棒性,然后将其与全局地图合并。这可以在ORB-SLAM2无法解决的数据序列V103单目和V203 立体中看到,并且在大多数执行中由我们的系统成功解决。正如预期的那样,立体比单目更稳健,这要归功于其更快的特征初始化,以及估计真实尺度的额外优势。

然而,我们新颖的视觉惯性 SLAM 系统在单目和立体配置中实现了鲁棒性的巨大飞跃。立体惯性系统比单目惯性系统具有非常轻微的优势,尤其是在最具挑战性的 V203 序列中。

我们可以得出结论,与纯视觉解决方案相比,惯性集成不仅提高了准确性,减少了中值 ATE 误差,而且还赋予了系统出色的鲁棒性,具有更稳定的性能。

B. TUM-VI Benchmark 上的视觉惯性 SLAM

TUM-VI数据集[80]由6个不同环境中的28个序列组成,使用手持鱼眼立体惯性装置记录。轨迹的真值仅在序列的开始和结束时可用,对于大多数序列来说,它们代表整个轨迹的一小部分。数据集中的许多序列不包含循环。即使起点和终点在同一个房间,视点方向相反,位置识别也无法检测到任何共同区域。使用此地面实况进行评估相当于测量沿整个轨迹的累积漂移。

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第8张图片

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第9张图片

在应用 CLAHE 均衡处理数据集中发现的曝光不足和过度曝光后,我们在单目惯性设置中每张图像提取 1500个ORB 点,在立体惯性中每张图像提取1000个点。对于户外序列,我们的系统很难处理来自多云天空的非常远的点,这在鱼眼相机中非常明显。这些点可能有慢动作,可能会在相机姿势中引入漂移。为了防止这种情况,我们丢弃距离当前相机姿势超过 20 米的点,仅适用于户外序列。更复杂的解决方案是使用图像分割算法来检测并丢弃天空。

获得的结果与表III中文献中最相关的系统进行了比较,清楚地显示了ORB-SLAM3在单目惯性和立体惯性方面的优越性。最接近的系统是 VINS-Mono 和 BASALT,它们本质上是具有闭环的视觉惯性里程计系统,并且缺少中期数据关联。

更详细地分析我们系统的性能,它在中小型室内环境、房间和走廊序列中的误差最小,大多数误差在10厘米以下。 在这些轨迹中,系统不断地重新访问和重用以前映射的区域,这是ORB-SLAM3 的主要优势之一。 此外,跟踪点通常小于5m,这使得估计惯性参数更容易,防止它们发散。

在长达 900 m 的 magistrale 室内序列中,大多数跟踪点相对较近,ORB-SLAM3 在 1 m 左右获得误差,除了一个接近 5 m 的序列。 相比之下,在一些较长的户外序列中,近距离视觉特征的缺乏可能会导致惯性参数的漂移,尤其是尺度和加速度计偏差,这会导致大约10到70米的误差。 尽管如此,ORB-SLAM3是户外序列中性能最好的系统。

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第10张图片

该数据集还包含三个非常具有挑战性的黑暗序列,其中用户穿过几乎完全缺乏视觉特征的深色管状片段序列。 在这种情况下,一个纯视觉系统会丢失,但我们的视觉惯性系统能够处理具有竞争误差的整个序列,即使无法检测到闭环。有趣的是,使用Lukas-Kanade跟踪特征的VINS-Mono和 BASALT在其中一些序列中获得了比匹配ORB描述符的ORB-SLAM3更好的准确度。 

最后,房间序列可以代表典型的 AR/VR 应用,其中用户在小型环境中使用手持或头戴式设备移动。 对于这些序列,地面实况可用于整个轨迹。表III显示ORB-SLAM3比竞争方法更准确。使用我们的四种传感器配置获得的结果在表IV中进行了比较。与立体相比,纯单目更好的精度是显而易见的:单目解决方案是按比例的,并与具有7个自由度的地面实况对齐,而立体提供真实的比例,并与6个自由度对齐。使用单目惯性,我们进一步将平均RMSATE误差降低到接近1厘米,也获得了真实的比例。最后,我们的立体惯性SLAM使误差小于1厘米,使其成为AR/VR应用的绝佳选择。

C. 多会话SLAM

EuRoC 数据集包含针对其三个环境中的每一个的多个会话:Machine Hall中的5个、Vicon1中的3 个和Vicon2中的3个。为了测试ORB-SLAM3的多会话性能,我们顺序处理每个环境对应的所有会话。 同一环境中的每条轨迹都具有具有相同世界参考的地面实况,这允许执行单个全局对齐来计算 ATE。

每个房间的第一个序列提供了初始地图。 处理接下来的序列从创建一个新的活动地图开始,该地图会与之前会话的地图快速合并,从那时起,ORB-SLAM3 从重用之前的地图中获益。

表V报告了三个房间中四种传感器配置的全局多会话 RMS ATE,与EuRoC数据集中仅发布的两个多会话结果比较:CCM-SLAM [71]报告了MH01-MH03中的纯单目结果,和VINS-Mono[7]在五个 Machine Hall序列中,使用单目惯性。在这两种情况下,ORB-SLAM3的准确性都是竞争方法的两倍多。在VINS-Mono的情况下,ORB-SLAM3在单会话中获得了 2.6 更好的精度,在多会话中优势达到了 3.2 倍,显示了我们的地图合并操作的优越性。

将这些多会话性能与表II中报告的单会话结果进行比较,最显着的区别是多会话单目和立体SLAM 可以鲁棒地处理困难序列V103 和V203,这要归功于对先前地图的利用。

我们还在TUM-VI数据集上进行了一些多会话实验。图5显示了在 UM大楼1内处理多个序列后的结果。 在这种情况下,小房间序列提供了较长序列中缺少的回环,将所有错误都带到了厘米级。 尽管在房间外无法获得真实数据,但将该图与[82]中发表的图进行比较清楚地表明了我们的观点:我们的多会话 SLAM。

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第11张图片

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第12张图片

我们还在TUM-VI数据集上进行了一些多会话实验。 图5显示了在TUM大楼1内处理多个序列后的结果。 在这种情况下,小房间序列提供了较长序列中缺少的回环,将所有错误都带到了厘米级。尽管在房间外无法获得地面实况,但将该图与[82]中发表的图进行比较清楚地表明了我们的观点:我们的多会话SLAM系统比现有的视觉惯性里程计系统获得了更好的精度。 图6进一步说明了这一点。虽然ORB-SLAM3在户外的立体惯性单会话处理中排名较高1,但仍然存在明显的漂移(≈ 60 m)。 相比之下,如果Outdoor1在magistrale2之后以多会话方式处理,这种漂移会显着减少,最终的地图要准确得多。

D.计算时间

表VI总结了在跟踪和映射线程中执行的主要操作的运行时间,表明我们的系统能够以每秒30-40帧和3-6个关键帧的速度实时运行。 惯性部分在跟踪期间花费的时间可以忽略不计,实际上可以使系统更高效,因为可以安全地降低帧速率。在映射线程中,每个关键帧中较高数量的变量已在惯性局部BA中用较少数量的关键帧进行补偿,从而获得更好的精度,同时运行时间相似。由于跟踪和映射线程始终在活动地图中工作,因此多重映射不会引入大量开销。

表七总结了闭环和地图合并的主要步骤的运行时间。 新颖的地点识别方法每个关键帧只需要10毫秒。合并和循环关闭的时间保持在1秒以下,仅运行一个位姿图优化。 对于闭环,执行完整的捆绑调整可能会增加几秒钟的时间,具体取决于所涉及地图的大小。在任何情况下,由于这两个操作都在单独的线程中执行图 1,它们不会干扰系统其余部分的实时性能。 视觉惯性系统只执行两个地图合并以加入三个序列,而视觉系统执行一些额外的合并以从跟踪损失中恢复。由于漂移较低,与纯视觉系统相比,视觉惯性系统执行的闭环操作也更少。

尽管这很有趣,但我们不会将运行时间与其他系统进行比较,因为这需要付出超出本工作范围的大量工作。

VIII. 总结

在 [2]-[4] 的基础上,我们展示了ORB-SLAM3,这是用于视觉、视觉惯性和多会话SLAM的最完整的开源库,具有单目、立体、RGB-D、针孔和鱼眼 相机。 除了集成库本身之外,我们的主要贡献是快速准确的 IMU 初始化技术和多会话地图合并功能,它们依赖于具有改进召回率的新位置识别技术。

我们的实验结果表明,ORB-SLAM3是第一个能够有效利用短期、中期、长期和多地图数据关联的视觉和视觉惯性系统,达到了现有技术无法达到的准确度水平。 系统。 我们的结果还表明,在准确性方面,使用所有这些类型的数据关联的能力胜过其他选择,例如使用直接方法而不是特征,或者对局部BA执行关键帧边缘化,而不是像我们假设一组外部静态关键帧。

ORB-SLAM3的主要失败案例是低纹理环境。 直接方法对低纹理更稳健,但仅限于短期[27]和中期[31]数据关联。另一方面,匹配特征描述符成功地解决了长期和多地图数据关联,但在跟踪方面似乎不如使用光度信息的Lucas-Kanade稳健。 一个有趣的研究方向可能是开发足以解决四个数据关联问题的光度技术。我们目前正在探索利用人体内部的内窥镜图像构建地图的想法。

关于四种不同的传感器配置,毫无疑问,立体惯性SLAM提供了最稳健、最准确的解决方案。此外,惯性传感器允许以比帧速率高几个数量级的IMU速率估计姿势,这是某些用例的关键特征。对于由于体积、成本或处理要求较高而无法使用立体相机的应用,您可以使用单目惯性,而不会在鲁棒性和准确性方面遗漏太多。请记住,探索期间的纯旋转不允许估计深度。在具有慢速运动或没有滚动和俯仰旋转的应用中,例如平坦区域的汽车,IMU传感器可能难以初始化。在这些情况下,如果可能,请使用立体SLAM。否则,使用CNN从单个图像进行深度估计的最新进展为可靠和真实尺度的单目SLAM [83]提供了良好的前景,至少在训练CNN 的相同类型的环境中是这样。

SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM_第13张图片

参考文献

[1] Past, present, and future of simultaneous localization and mapping: Toward the robust-perception age

[2] ORB-SLAM: a versatile and accurate monocular SLAM system

[3] ORB-SLAM2: An open-source SLAM system for monocular, stereo, and RGB-D cameras

[4] Visual-inertial monocular SLAM with map reuse

[5] ORB-SLAM3: An accurate open-source library for visual, visual-inertial and multi-map SLAM

[6] Inertial-Only Optimization for Visual-Inertial Initialization

[7] VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator

[8] Kimera: an Open-Source Library for Real-Time Metric-Semantic Localization and Mapping

[9] Bags of binary words for fast place recognition in image sequences

[10] ORBSLAM-atlas: a robust and accurate multi-map system

[11] A versatile camera calibration technique for high-accuracy 3d machine vision metrology using off-the-shelf TV cameras and lenses

[12] A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses

[13] Real-time simultaneous localisation and mapping with a single camera

[14] MonoSLAM: Real-time single camera SLAM

[15] SceneLib2 - MonoSLAM open-source library

[16] Parallel tracking and mapping for small AR workspaces,

[17] Improving the agility of keyframe-based SLAM

[18] Parallel tracking and mapping on a camera phone

[19] PTAM-GPL

[20] LSD-SLAM: Large-scale direct monocular SLAM

[21] Large-scale direct SLAM with stereo cameras

[22] LSD-SLAM: Large-scale direct monocular SLAM
[23] SVO: Fast semi-direct monocular visual odometry

[24] SVO: Semidirect visual odometry for monocular and multicamera systems

[25] SVO,” https://github.com/ uzh-rpg/rpg svo, 2014

[26] “ORB-SLAM2,” https://github.com/raulmur/ORB SLAM2, 2016.

[27] Direct sparse odometry,

[28] Omnidirectional DSO: Direct sparse odometry with fisheye cameras

[29] Stereo DSO: Large-scale direct sparse visual odometry with stereo cameras

[30] DSO: Direct Sparse Odometry,” , 2018.

[31] Direct sparse mapping

[32] DSM: Direct Sparse Mapping,” , 2019.

[33] A multi-state constraint Kalman filter for vision-aided inertial navigation

[34] High-precision, consistent EKF-based visual- inertial odometry

[35] A comparative analysis of tightly-coupled monocular, binocular, and stereo VINS

[36] Alternating-stereo VINS: Observabil- ity analysis and performance evaluation

[37] “Monocular MSCKF,” https://github.com/daniilidis-group/ msckf mono, 2018.

[38] Keyframe-based visual-inertial SLAM using nonlinear optimization

[39] Keyframe-based visual–inertial odometry using nonlinear optimization

[40] OKVIS: Open keyframe-based visual-inertial SLAM (ROS version)

[41] Robust visual inertial odometry using a direct EKF-based approach

[42]  Iterated extended Kalman filter based visual-inertial odometry using direct photometric feedback

[43] “ROVIO,” https: //github.com/ethz-asl/rovio, 2015.

[44] A general optimization-based framework for local odometry estimation with multiple sensors

[45] VINS-Fusion: An optimization-based multi-sensor state estimator,” 2019

[46] Direct sparse visual- inertial odometry using dynamic marginalization

[47] Visual-inertial mapping with non-linear factor recovery

[48] “BASALT,” https://gitlab.com/ VladyslavUsenko/basalt, 2019

[49] Kimera,” https:// github.com/MIT-SPARK/Kimera, 2019

[50] https://www.doc.ic.ac.uk/ ∼ ajd/Scene/ index.html

[51] Vision-aided inertial navigation

[52] Inverse depth parametrization for monocular SLAM

[53] Map- ping large loops with a single hand-held camera

[54]1- point RANSAC for extended Kalman filtering: Application to real-time structure from motion and visual odometry​​​​​​

[55] Visual SLAM: Why filter?” Image and Vision Computing

[56] Scale drift-aware large scale monocular SLAM

[57] Double window optimisation for constant time visual SLAM

[58] LDSO: Direct sparse odometry with loop closure

[59] Loosely-coupled semi-direct monocular SLAM

[60] Visual-inertial-aided navigation for high- dynamic motion in built environments without initial conditions

[61] On-manifold preintegration for real-time visual–inertial odometry

[62] Closed-form solution of visual-inertial structure from motion

[63] Simultaneous state initialization and gyroscope bias calibration in visual inertial aided navigation

[64] Fast and robust ini- tialization for visual-inertial SLAM

[65] Unified loop closing and recovery for real time monocular SLAM

[66] Video-rate localization in mul- tiple maps for wearable augmented reality

[67] Collaborative monocular SLAM with multiple micro aerial vehicles

[68] C2TAM: A cloud frame- work for cooperative tracking and mapping

[69] MOARSLAM: Mul- tiple operator augmented RSLAM

[70] Multi-UAV collaborative monocular SLAM

[71] CCM-SLAM: Robust and efficient centralized collaborative monocular simultaneous localization and mapping for robotic teams

[72] SLAMM: Visual monocular SLAM with continuous mapping using multiple maps
[73] EPnP: An accurate O(n) solution to the PnP problem

[74] MLPnP - A Real-Time Maximum Likelihood Solution to the Perspective-n-Point Problem

[75] Fast relocalisation and loop closing in keyframe-based SLAM

[76] Distinctive image features from scale-invariant keypoints

[77] Closed-form solution of absolute orientation using unit quaternions

[78] A benchmark comparison of monoc- ular visual-inertial odometry algorithms for flying robots

[79] The EuRoC micro aerial vehicle datasets

[80] The TUM VI benchmark for evaluating visual-inertial odometry

[81] A benchmark for the evaluation of RGB-D SLAM systems

[82] he TUM VI benchmark for evaluating visual-inertial odometry

[83] D3VO: Deep depth, deep pose and deep uncertainty for monocular visual odometry

你可能感兴趣的:(视觉SLAM,计算机视觉,人工智能)