
ORBSLAM系列|ORB-SLAM3论文精读(二)
- 论文链接:https://arxiv.org/pdf/2007.11898.pdf
- GitHub链接:https://github.com/UZ-SLAMLab/ORB_SLAM3
视觉-惯性SLAM
ORB-SLAM-VI是首个能够复用地图的真正视觉-惯性SLAM系统。然而,它受限于针孔单目相机,并且它的初始化速度太慢,在一些具有挑战性的场景中会失败。在这项工作中,我们基于ORB-SLAM-VI的基础上构建系统,提供一种快速的精确IMU初始化技术以及一个开源的SLAM库,该SLAM库能够使用针孔和鱼眼相机实现单目-惯性和双目-惯性SLAM。
A.基本原理
注意,对于重投影误差,我们使用鲁棒Huber核
来降低错误匹配带来的影响,而对于惯性残差,它是不需要的,因为不存在误匹配。该优化需要在跟踪和建图阶段适应效率,但更为重要的是,它需要良好的初始值来收敛到精确解。
B.IMU初始化
这步的目标是为了获取惯性变量的良好初始值:载体速度、重力方向和IMU偏置。VI-DSO等一些系统尝试从头开始解决视觉-惯性BA,规避特定的初始化过程,获取惯性参数的缓慢收敛(最多30秒)。
在本工作中,我们基于三个关键点提出一种快速且精确的初始化方法:
1)纯单目SLAM能够提供非常精确的初始化地图,其主要问题是尺度是未知的。首先解决纯视觉问题将增强IMU初始化;
2)如工作Scale drift-aware large scale monocular SLAM所述,当将尺度明确地表示为一个优化变量时(而不是使用BA的隐式表示),其收敛速度会快很多;
3)在IMU初始化过程中忽略传感器不确定性将产生较大的不可预测误差。
所以,我们正确地考虑传感器不确定性,将IMU初始化表示为一个MAP估计问题,其划分为三步:
一旦纯惯性优化完成,图像帧位姿和速度以及三维地图点通过估计的尺度因子进行缩放,并且旋转以使估计的重力方向与z轴对齐。更新偏置并且重复IMU预积分过程,旨在减少未来的线性误差。
3)视觉-惯性MAP估计:一旦我们有惯性参数和视觉参数的良好估计,我们就能够执行联合视觉-惯性优化以进一步优化解。优化可以表示为如图2a的结构,但是对于所有的关键帧使用相同的偏置,并且包含与纯惯性步骤中相同的偏置先验信息。
我们在EuRoC数据集上详尽的初始化实验表明,这种初始化非常高效,在2秒内实现轨迹尺度误差为5%。为了改进初始估计,在初始化之后执行5-10秒的视觉-惯性BA,最终收敛到1%的尺度误差。在这些BA之后,我们认为地图已经成熟,这意味着已经精确地估计了尺度、IMU参数和重力方向。
我们的初始化比求解一组代数方程的联合初始化方法要精确的多,并且比ORB-SLAM-VI中使用的初始化(需要15秒以获得首次尺度估计)或者VI-DSO中使用的初始化(从一巨大的尺度误差开始,并且需要20-30秒收敛到1%误差)要快很多。不同初始化方法之间的比较可以参考工作Inertial-only optimization for visual-inertial initialization。
在一些特殊的情况下,当慢速运动无法为惯性参数提供良好的可观测性时,初始化可能无法在15秒内收敛到精确解。为了获得这种情况下的鲁棒性,我们基于改进的纯惯性优化提出一种新型的尺度优化技术,其中包含所有插入的关键帧,但是尺度和重力方向是唯一需要估计的参数(图2d)。注意,在这种情况下,恒定偏置这一假设是不正确的。相反,我们使用从建图估计的值,并且固定它们。这一优化过程在计算上非常高效,并且每10秒在局部建图线程中执行一次,直到地图中有超过100个关键帧或者从初始化以来超过75秒。
最终,我们通过固定尺度因子为1并且将其从纯惯性优化变量中取出,从而容易地将我们的单目-惯性初始化扩展到双目-惯性初始化,增强了其收敛性。
C.跟踪和建图
对于跟踪和建图,我们采用工作Visual-inertial monocular SLAM with map reuse中提出的策略。跟踪求解简化的视觉-惯性优化,其中仅优化最后两帧的状态,同时地图点保持固定。
对于建图而言,尝试从公式4求解整个优化对于大型地图是困难的。我们将关键帧及其地图点的滑动窗口作为优化变量,还包含从共视关键帧对这些地图点的观测,但是保持共视关键帧的位姿固定。
D.对跟踪丢失的鲁棒性
在纯视觉SLAM或者VO系统中,临时的相机遮挡和快速运动导致视觉元素丢失跟踪,使得系统失效。ORB-SLAM率先使用基于词袋位置识别的快速重定位技术,但是事实证明,它们不足以解决EuRoC数据集中困难的序列。本文视觉-惯性系统当跟踪少于15个地图点时,进入视觉丢失状态,并且在两个阶段中实现鲁棒性:
1)短期丢失:由IMU读数估计当前载体状态,地图点被投影到估计的相机位姿并且在大型图像窗口内搜索匹配。在大多数情况下,这允许恢复视觉跟踪。否则,在5秒之后,我们进入下一阶段;
2)长期丢失:根据上面所述,初始化新的视觉-惯性地图,并且它成为活跃地图。如果在IMU初始化后的15秒内系统跟踪丢失,则丢弃地图。这防止累积不准确且无效的地图。
地图合并和回环
跟踪和建图线程通常通过将地图点投影到估计的相机位姿并且在只有几个像素的图像窗口内搜索匹配来寻找图像帧与活跃地图之间的短期和中期数据关联。为了实现重定位和回环的长期数据关联,ORB-SLAM使用DBoW2词袋位置识别系统。这种方法也被实现回环的最新VO和SLAM系统所采用(表格I)。
与跟踪不同,位置识别不是从相机位姿的初始估计开始的。相反,DBoW2使用关键帧的词袋向量构建它们的数据库,并且在给定一张查询图像时,能够根据词袋高效地提供最相似的关键帧。在仅使用首个候选帧的情况下,原始DBoW2查询的准确率和召回率约为50-80%。为了避免会破坏地图的假阳性,DBoW2实现时间和几何一致性检查以将工作点移动到100%准确率和30-40%召回率。至关重要的是,时间一致性检查在至少3个关键帧期间延迟位置识别。当尝试在我们的地图集系统中使用它时,我们发现这种延迟和低召回率经常导致相同或者不同地图中产生重复区域。
在这项工作中,我们提出一种新的具有改进召回率的位置识别算法,用于长期和多地图数据关联。每当建图线程创建一个新的关键帧时,就启动位置识别以尝试检测与地图集中现有的任何关键帧的匹配。如果找到的匹配关键帧属于活跃地图,则执行回环。否则,它就是多地图数据关联,然后将活跃地图和匹配的地图进行合并。作为本文方法的第二个创新点,一旦估计新关键帧和匹配地图之间的相对位姿,我们就使用匹配关键帧和它在共视图中的相邻关键帧定义一个局部窗口。在该窗口中,我们集中搜索中期数据关联,从而提高回环和地图合并的精度。这两个创新点解释了ORB-SLAM3相比于ORB-SLAM2在EuRoC实验中获得更高精度的原因。不同操作的细节信息如下所述。
A位置识别
为了获得更高的召回率,对于每个新的活跃关键帧,我们在DBoW2数据库中查询地图集中若干个相似的关键帧。为了实现100%的准确率,这些候选中的每一个经历若干步的几何验证。所有几何验证的基本操作都包含检查图像窗口内是否存在ORB关键点的描述子与地图点的ORB描述子相匹配(使用它们之间的汉明距离阈值)。如果在搜索窗口内存在若干候选,为了丢弃不明确的匹配,我们检查与第二个最近匹配的距离比值。我们的位置识别算法步骤为:
4)本质图优化。使用整个合并地图的本质图执行位姿图优化,保持焊接区域内的关键帧固定。该优化从焊接窗口将校正量传递给地图的其余部分。
C视觉-惯性地图合并
视觉-惯性合并算法与纯视觉情况遵循相似的步骤。步骤1)和步骤3)被修改以更好地利用惯性信息:
D回环
回环校正算法与地图合并算法类似,但是它发生在由位置识别匹配的关键帧属于活跃地图的情况下。焊接窗口从匹配的关键帧进行缝合,并且检测和融合重复的地图点,在共视图和本质图中创建新的连接。下一步是位姿图优化来将回环纠正量传递给地图的其余部分。最后一步是全局BA,它在考虑回环中期和长期匹配后找到MAP估计。在视觉-惯性情况下,只有在关键帧的数量低于一个阈值时,才执行全局BA,以避免巨大的计算代价。
文章转载自公众号:自动驾驶专栏
