一文详解ORB-SLAM3

一文详解ORB-SLAM3

首页休闲益智3d匹配配对更新时间:2024-05-11

作者:Liam

来源:公众号

摘要

ORB-SLAM3是一个支持视觉、视觉加惯导、混合地图的SLAM系统,可以在单目,双目和RGB-D相机上利用针孔或者鱼眼模型运行。

他是第一个基于特征的紧耦合的VIO系统,仅依赖于最大后验估计(包括IMU在初始化时)。这样一个系统的效果就是:不管是在大场景还是小场景,室内还是室外都能鲁棒实时的运行,在精度上相比于上一版提升了2到5倍。本文的第二个创新点是根据改进recall的新的重定位模块来构建的混合地图,因为这个模块他可以让ORB-SLAM3在特征不是很好的场景中长期运行:当里程计失败的时候,系统会重新构建地图并将这个地图和原来构建的地图对齐。和那些仅利用最新的几帧数据的里程计相比,ORB-SLAM3是第一个能够在所有算法阶段重用所有先前信息的系统。这样的机制就可以在BA的时候用有共视关系的关键帧,即使两帧在时间相差很远,或者来自原来的建图过程。

这个系统在EuRoC数据集上达到了平均3.6cm的精度,在TUM-VI这种利用手持设备快速移动的数据集(AR/VR场景)上达到了9mm的精度。作者已经开源了代码:https://github.com/UZ-SLAMLab/ORB_SLAM3

一、介绍

SLAM建图的最大优势在于,它允许在BA中匹配并使用执行三种数据关联的先前观测值:

这是第一个可能对短期、中期、长期数据进行数据关联的视和视觉惯导的系统。在已知地图的环境中可以没有漂移的运行,其中混合地图数据关联-这个可以保证我们进行地图匹配和进行BA优化,这也达到了一个目的:构建一个地图,然后可以在地图中进行精确的定位。

主要贡献:二、相关工作

表一中展示位姿估计和数据关联的工作。

视觉SLAM视觉惯导系统三、系统概述

ORB-SLAM3是基于ORB-SLAM2和ORB-SLAM-VI构建的系统,他可以在纯视觉或者视觉惯导的系统中鲁棒的运行(单目、双目和RGB-D利用针孔或者鱼眼模型,你也可以自己定义模型)。

四、相机模型

提供了针孔模型和鱼眼模型。系统中把相机模型单独的抽象出来(重投影和反投影方程,Jacobian方程等)。这就允许我们在系统中使用自己的相机模型。在抽象的过程中也遇到了一些困难,在下边讨论。

A.重定位

ORB-SLAM解决重定位是用的Epnp;但是他是基于一个标定好的针孔相机模型的,为了继续我们的工作,我们采用独立于相机的ML-pnp算法可以完全从相机模型中解耦,因为他利用投影光线作为输入。相机模型只需要提供一个从像素传递到投影光线的反投影函数,以便能够使用重定位。

B.未矫正的双目SLAM

很多的SLAM系统都假设双目相机已经矫正了(两幅图像都转换为使用相同焦距的针孔投影,图像平面共面,并与水平极线对齐,这样,通过观察另一幅图像中的同一行,可以很容易地匹配其中一幅图像中的特征)。然而,对立体图像进行校正的假设有很大的局限性,在许多应用中不适合也不可行。例如矫正一个鱼眼相机需要需要很严重的裁剪。这就失去了广角相机大视角,快速建图、处理遮挡鲁棒的优点。因此本文的系统不依赖于图像矫正,而是把双目相机看成两个单目相机:

这些约束在我们三角化新的路标点和进行BA优化的时候很有效率。SLAM估计6自由度刚体位姿,其参考系可以位于其中一个摄像机中,也可以位于IMU传感器中,根据刚体位姿表示摄像机。我们可以利用双目初始化第一次看到的路标点。双目还有很多重叠的区域,我们把他看成单目相机来使用。

视觉惯导SLAM

ORB-SLAM-VI是第一个有能力地图重用的视觉惯导的系统,但是他只能基于单目的针孔模型,初始化很慢,在本文,系统中使用快速精准的IMU初始化,通过了一个开源的SLAM库利用针孔或者鱼眼模型快速的完成单目惯导或者双目惯导的初始化

B.IMU初始化

初始化的目的是为了给惯导的变量提供良好的初始值:机体速度、重力方向还有IMU的偏置。VI-DSO尝试不进行初始化,直接利用BA来进行优化导致初始化长达30s。在本文的工作中我们提出了基于三个关键insights的快速精准的初始化方法:

所以我们需要考虑初始化的过程中传感器的不确定性,把IMU初始化看成一个MAP的问题,分为三个步骤:

纯视觉的MAP估计:在ORB-SLAM中初始化纯单目相机仅用了2s,以4HZ的速度插入关键帧。初始化后我们有按一定尺度比的由十个相机位姿和数百个3D点组成的地图。利用图2中纯视觉的模型进行BA优化。这些位姿被转换到机体坐标系下获得轨迹

纯惯导的MAP估计:惯导的状态向量为:

一旦惯性优化完成,框架的姿态和速度和3D地图点将与估计的比例进行缩放,并旋转使z轴与估计的重力方向对齐。对偏差进行更新,并重复IMU预积分,以减少未来的线性化误差。

视觉惯导的MAP估计:一旦我们有了对视觉和惯导好的参数,我们可以执行一个联合的视觉惯导优化老进一步优化参数。这个图在2a中但是所有关键帧的bias都相同,而且先验信息也相同。我们在EuRoC数据集上进行的详尽的初始化实验表明,这种初始化非常有效,在2秒轨迹的情况下实现了5%的尺度误差。为了改进初始估计,在初始化后5秒和15秒进行视惯性BA,收敛到1%尺度误差,如第七节所示。在这些BAs之后,我们说地图已经成熟了,也就是说尺度、IMU参数和重力方向已经被准确地估计出来了,这种初始化方法比ORB-SLAM-VI和VI-DSO都好的多。通过将尺度因子固定为1,并将其从惯性优化变量中提取出来,我们可以很容易地将单目惯性初始化扩展到立体惯性,从而增强其收敛性。

C.跟踪和建图

跟踪和建图采用的是Visual-inertial monocular SLAM with map reuse中的方案。

在某些情况下,当慢速运动不能提供良好的惯性参数观测能力时,初始化可能无法在15秒内收敛到精确解。为了使系统更鲁棒,本文提出一个新的尺度优化的方法,这种方法基于改进的单惯导的优化方法,其中插入所有关键帧,但尺度和重力方向是唯一的估计参数(图2d)。在这种情况下,biases不变是不对的假设。可以使用每一帧的估计值来修正biases。这种优化的计算效率非常高,每10秒在局部建图线程中执行一次,直到建图超过100个关键帧,或者初始化超过75秒。

D.跟踪丢失的鲁棒提升

本文的VIO系统在系统跟踪少于15个点的时候就进入视觉跟踪失败的状态,然后执行:

地图融合和闭环检测

在图像帧和active地图间建立的短期和中期的数据关联是在跟踪和建图线程利用地图点投影到估计的位姿上,然后在小的窗口中匹配得到匹配关系。为了长期的数据关联来进行重定位和闭环检测,ORB-SLAM是用的词袋模型。与跟踪不同,位置识别是利用DBoW2使用其词袋矢量构建关键帧的数据库,并且给定查询图像能够根据其词袋有效地提供最相似的关键帧。仅使用第一个候选帧,原始DBoW2查询就可以达到50-80%的精度和召回率。为了防止假阳性的观测,DBoW2实施时间和几何一致性检查,将工作点的精度提高到100%,召回率达到30-40%。至关重要的是,时间一致性检查至少在3个关键帧期间延迟了位置识别。当尝试在我们的Atlas系统中使用它时,我们发现这种延迟和较低的召回率经常是在相同或不同地图的重复区域中造成的。在本文的工作中我们提出了一个在长期和混合地图数据关联的时候有改进召回率的新的场景重识别的算法。当建图线程筛选出一个关键帧,场景重识别就尝试检测在Atlas中的关键帧进行匹配。如果匹配的关键帧在active地图中,这就确定了一个闭环;否则就是混合地图的数据关联,执行匹配的地图和当前的active地图的融合。这个方法的第二个特点是一旦当前帧和匹配的地图帧的位姿估计出来了,我们就在匹配帧和其在共视图中的相邻帧构建一个局部的窗口。在此窗口中,我们集中搜索中期数据关联,从而提高了闭环检测和地图融合的准确性。

A.场景重识别

为了达到高的召回率,每个新来的关键帧都会利用DBoW2数据库在Altas中检测几个相似的关键帧。为了达到百分之百的准确度。每个候选帧都要进行几何验证。几何检验包括检验图像窗口中是否有和地图点描述子匹配的上的ORB特征点(汉明距离)。如果有几个匹配候选帧,首先去除不正确的匹配,还需要检验和排第二的候选帧比较距离比。场景重识别的过程如下:

B.视觉地图融合

当位置重识别成功的时候产生active地图Ma中的关键帧Ka和一个在Altas地图Mm中的关键帧Km利用Tma$进行混合地图的数据关联来融合地图。这里需要注意的是Altas中的地图的信息需要被tracking线程重用来避免地图复制。这里把Ma地图放到以Mm为参考的地图中,由于Ma中有很多的组件,所有融合可能需要一段时间。地图融合分成两部分:首先,在一个由Ka和Km相邻点定义的连接窗口中进行合并,在第二阶段,通过位姿图优化将校正传播到合并图的其余部分。合并算法的具体步骤为:

C.视觉惯导地图融合

视觉-惯性合并算法的步骤与纯视觉合并相似。改进纯视觉中的步骤1和步骤3,以更好地利用惯性信息:

对于Mm,包含了紧靠局部窗口前的关键帧,但是固定的;而对于Ma,包含了类似的关键帧,但其姿态仍然是可优化的。所有关键帧所能看到的所有点,以及观察这些点的关键帧姿态也得到了优化。利用重投影误差将关键帧和关键点关联起来。

D.闭环检测

闭环检测和地图融合类似,但是是在场景重识别的两个关键帧都在active地图下。根据匹配的关键帧组成连接窗口,重复的点被检测融合然后叜共视图和本质图中构建新的边。然后进行位姿图优化来传播闭环校正的结果到剩余的地图中。最后一步是全局BA,在考虑闭环检测中期和长期的匹配后得到MAP估计。在视觉惯导的情况下,只有在关键帧数量低于阈值的时候才进行以避免巨大的运算成本。

参考文献

[1] Campos C , Elvira R , Rodríguez, Juan J. Gómez, et al. ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM[J]. 2020.

[2] Campos C , Montiel, José M. M, Tardós, Juan D. Inertial-Only Optimization for Visual-Inertial Initialization[J]. 2020.

[3] https://blog.csdn.net/qq_40878688/article/details/105291348(ORBSLAM-Atlas a robust and accurate multi-map system介绍)

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉,即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总,即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定,即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配,即可下载独家立体匹配学习课件与视频网址。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved