ORB SLAM3论文

ORB SLAM3论文

摘要

类型:V/VI/multi-map SLAM
传感器:with monocular/stereo/RGB-D camera
相机模型:using pin-hole / fisheye lens model
主要创新点:
  1. 仅使用MAP(最大后验估计)的基于特征的紧耦合VI-SLAM系统。
    使之在小/大/室内/外环境实时运行都能有良好的鲁棒性,比ORB-SLAM2精确2-5倍。
  2. 基于一种能够提高召回率的新的位置识别方法的多子地图系统。
    使之跟踪失败后何以建立一个新的子地图,回环检测时与之前的地图融合。视觉里程计中第一个能够在算法所有阶段重用所有先前信息的系统。
as robust as the best systems available in the literature, and significantly more accurate.

1. introduction

VO/SLAM区别:
VO:只计算位姿,不建图;
SALM:建图并计算在地图中的实时位置;
短/中/长期数据关联
SLAM优势在于允许在BA中匹配并使用执行三种数据关联的先前观测值.

1.短期数据关联:

匹配最近几秒范围内的地图元素,大多数VO系统使用的唯一关联类型. 一旦环境元素消失,系统便会 忘记它们,即使系统在同一区域移动,也会导致连续的估计漂移.

2.中期数据关联:

累积误差仍然很小的时候,匹配相机当前位置附近的地图元素.
the key of the better accuracy obtained by our system compared against VO systems with loop detection.

3.长期数据关联:

使用累积的位置识别技术,将观测值与先前访问过的区域中的元素进行匹配,而不管累积的漂移(回环检测)还是跟踪丢失(重定位)。长期匹配允许使用姿态图(PG)优化或更精确地使用BA重置漂移并校正循环。

main novelties

1.适用于单目双目的VI SLAM系统.

2.高召回率的位置识别.

3.ORB-SLAM 地图集.

The Atlas can represent a set of disconnected maps, and apply to them all the mapping operations smoothly: place recognition, camera relocalization, loop closure and accurate seamless map merging.

4.相机模型的抽象.

使之添加新模型只需提供相机的投影,非投影,雅可比函数.

2. 相关工作

在这里插入图片描述

3. 系统概览SYSTEM OVERVIEW

在这里插入图片描述
与ORB SLAM2 的区别:
1.地图集 / Atlas

由一组未连接的地图组成的多地图表示。
包含:
活动地图(Active map)跟踪线程不断定位传入的图像帧,并由局部建图线程不断对其进行优化.
非活动地图(non-active maps): 即Atlas中其余的地图.
系统将建立一个独特的关键帧的DBoW2数据库, 用于重定位,loop closing,和地图融合.

2.跟踪线程 / Tracking thread

处理传感器信息,并实时计算当前帧相对于活动地图的姿态,从而最大程度地减小了匹配的地图特征的重投影误差。同时决定当前帧是否是关键帧.
跟踪失败时,trackin线程尝试对当前帧在Atlas中进行重定位.重定位成功,则恢复跟踪,并在需要时转换活动地图。否则,在一定时间后,活动地图将存储为非活动地图,并从头开始初始化新的活动地图。

3.局部建图线程 / Local mapping thread

将关键帧和点添加进活动地图,并移除多余的关键帧和特征点,使用视觉或视觉惯性BA在靠近当前帧的关键帧的本地窗口中操作来细化地图。
视觉惯性情况下,在mapping线程中使用新的MAP估计技术对IMU参数进行初始化和精炼.

4.回环和地图融合线程 / Loop and map merging thread

以关键帧速率检测活动地图和整个地图集之间的公共区域。
如果公共区域(只?)属于active map,进行回环矫正. 循环校正后,将在独立线程中启动完整的BA,以进一步完善地图,而不会影响实时性能。
如果也属于其他不同的地图,进行地图融合成为新的active map.

4. 相机模型

ORB SLAM假定所有系统组件使用针孔相机模型。所有通过提取与相机模型相关的所有属性和功能(投影和非投影函数,雅可比矩阵等)到单独的模块中,从整个SLAM pipeline中抽象相机模型。This allows our system to use any camera model by providing the corresponding camera module. (???)
ORB SLAM3库中提供了针孔相机模型和Kannala-Brandt鱼眼相机模型

相机模型抽象带来的困难以及解决

1.重定位

ORB SLAM采用基于ePnP算法的PnP求解器解决相机跟踪失败后的重定位问题,算法假定相机为针孔相机模型。
ORB SLAM3中采用了独立于所使用的相机模型而工作PnP算法—MLPnP(maximum likelihood perspective-n-point algorithm)。其采用投影光线(projective rays)作为输入因此与相机模型无关。相机模型只需提供从像素到投影光线的非投影函数,即可进行重定位。

2.无矫正双目SLAM

大多数双目SLAM系统假设双目的图像帧是经过矫正的,左右图像都使用相同的焦距转换为针孔投影,并且图像平面共面,与水平极线对齐,从而可以通过查看另一图像中的同一行轻松地匹配一个图像中的特征图片。
这种假设shiyou很有限制性,并在很多应用场景中不可行,比如:矫正发散的双目图像对或双目鱼眼镜头将需要进行严格的图像裁剪,从而失去了大视场的优势:更快的环境映射和对遮挡的更好鲁棒性。

ORB SLAM3不依赖与图像校正,双目图像可视为具有如下性质的两个单目相机:
1)有恒定的SE(3)变换;2)观测场景有部分重合区域。
这些限制条件使我们能够通过在三角测量新landmarks时以及在BA中引入该信息来有效地估计地图的比例。

5. VI SLAM

第一个能够地图重用的VI SLAM系统。支持单目+IMU,双目+IMU,针孔相机模型和鱼眼相机模型。

基础知识

V-SLAM中,需要估计的状态只有当前相机的位姿。
VI-SLAM中,需要考虑:
位姿:在这里插入图片描述
世界坐标系下的速度,陀螺仪的误差:在这里插入图片描述
加速度计的误差:
在这里插入图片描述
假设他们通过布朗运动演化。得到状态向量:在这里插入图片描述
IMU预积分的旋转,速度,位置:
在这里插入图片描述
整个测量向量的信息矩阵:
在这里插入图片描述
根据这些预积分项和状态向量Si,Si+1,采用如下惯性残差在这里插入图片描述
的定义:
在这里插入图片描述
还使用了第i帧和3D点j在位置Xj处的重投影误差Rij:
在这里插入图片描述
相机模型对应的重投影方程:
在这里插入图片描述
Uij是图像i上j点的观测值,其有一个信息矩阵
根据标定得到的机身IMU到(左或右)相机的转换矩阵:
在这里插入图片描述
SE(3)群在实数上的转换操作:
在这里插入图片描述
结合视觉和惯性的残差项,VI SLAM可以视为基于关键帧的最小化问题。
给定一组k+1个关键帧,及其状态向量Sk={S0,,,Sk},l个3D点及其状态向量X={X0,,,Xl-1},视觉惯性优化问题可表示为:
在这里插入图片描述
Kj表示一组关键帧观测到的3D点j,上式因子图如下:
在这里插入图片描述
对于重投影误差,使用鲁棒的Huber内核Hub
来减少虚假匹配的影响,而对于惯性残差则不需要,因为不存在缺失关联。(???)
此优化需要良好的初始化结果以收敛到精确的结果。

IMU初始化

此步骤的目标是为速度,重力方向和IMU偏差获取良好的初始值。

本文基于以下关键理念提出一种快速精确的理论:
1.先解决纯视觉问题可以加强IMU初始化 效果;

2.将尺度作为优化变量时收敛的更快,而非使用BA的隐式表达;

3.IMU初始化时忽视传感器的不确定性会产生不可预测的错误。

因此,将IMU初始化视为MAP估计问题,分为三步解决:
1.纯视觉MAP估计:

2.纯惯性MAP估计:

3.视觉惯性MAP估计:

跟踪与建图
跟踪失败的鲁棒性(Robustness to tracking loss

地图融合与循环封闭(Loop closing)

<think>嗯,用户想了解OrbSLAM3中卡尔曼滤波的实现原理和应用场景。首先,我需要回忆一下OrbSLAM3的基本结构。OrbSLAM3是一个基于特征点的SLAM系统,支持单目、双目和RGB-D相机,还能处理IMU数据。卡尔曼滤波通常在融合传感器数据时使用,比如在视觉惯性SLAM中。 那OrbSLAM3的卡尔曼滤波具体是怎么实现的呢?可能涉及到状态预测和更新两个阶段。状态变量可能包括位置、姿态、速度,还有IMU的偏差。预测阶段用IMU的数据进行状态预测,然后通过视觉观测来更新状态,减少误差。这应该是基于误差状态卡尔曼滤波(ESKF),因为ESKF在处理IMU时更高效,能分离误差状态,避免直接处理高维状态。 应用场景方面,视觉惯性里程计(VIO)是关键,尤其是在快速运动或纹理缺失的环境下,IMU可以提供短期的运动估计,而视觉数据在长期更准确。动态环境中的跟踪可能也会用到卡尔曼滤波来预测运动目标的位置,比如结合目标检测和运动模型。 不过,用户提供的引用里提到Kalman滤波的解释更通俗,还有单目SLAM的定位导航系统的发展,以及SAMURAI在跟踪中的改进。可能需要结合这些引用中的信息,特别是引用[1]和[2]。引用[1]说明卡尔曼滤波的流程,而引用[2]可能涉及SLAM系统中的定位部分。引用[4]提到的SAMURAI虽然不直接相关,但动态跟踪的思路可能有借鉴。 需要确认OrbSLAM3是否真的使用卡尔曼滤波,因为有些SLAM系统可能用其他方法,比如非线性优化(如图优化)。不过,视觉惯性融合部分通常会用滤波方法,比如MSCKF或者ESKF。OrbSLAM3论文中提到其视觉惯性模式使用了IMU预积分和优化,可能结合了卡尔曼滤波的思想,但具体实现可能更偏向于图优化。因此,可能需要区分开卡尔曼滤波在传统VIO中的应用和OrbSLAM3中的实际方法。 用户的问题可能隐含了想了解传感器融合部分,所以需要明确OrbSLAM3中是否有卡尔曼滤波的具体模块,或者是否采用了类似的思想。如果OrbSLAM3主要使用图优化,那可能需要解释为什么卡尔曼滤波没有被采用,或者它在其中的辅助作用。但根据现有知识,OrbSLAM3的视觉惯性部分可能确实整合了IMU的预测和视觉的更新,这符合卡尔曼滤波的框架,尤其是误差状态卡尔曼滤波。 总结下来,回答需要包括:实现原理(状态变量、预测与更新、ESKF),应用场景(VIO、动态跟踪),并引用提供的参考文献来支持解释,比如引用[1]关于卡尔曼滤波的流程,引用[2]关于SLAM系统的定位部分。同时,可能需要注意区分传统卡尔曼滤波和图优化在SLAM中的应用,避免混淆。</think>### OrbSLAM3中卡尔曼滤波的实现原理及应用场景 #### 一、卡尔曼滤波在OrbSLAM3中的实现原理 1. **状态变量定义** OrbSLAM3的视觉惯性模式中,卡尔曼滤波的状态变量通常包括: - **位姿**(位置$p$与旋转$R$) - **速度**$v$ - **IMU传感器偏差**(加速度计偏置$b_a$和陀螺仪偏置$b_g$) 状态向量可表示为: $$x = [p, R, v, b_a, b_g]^T$$ 2. **预测阶段(IMU数据驱动)** 利用IMU的角速度和加速度测量值,通过运动学方程预测下一时刻的状态: $$ \dot{p} = v, \quad \dot{v} = R(a_m - b_a) + g $$ 其中,$a_m$为IMU测量的加速度,$g$为重力加速度[^1]。 3. **更新阶段(视觉观测校正)** 通过ORB特征点的匹配结果计算重投影误差,结合卡尔曼增益修正预测状态: $$ x_{k+1} = x_k + K(z - Hx_k) $$ 其中,$z$为视觉观测值,$H$为观测矩阵,$K$为卡尔曼增益[^2]。 4. **误差状态卡尔曼滤波(ESKF)优化** OrbSLAM3采用**误差状态卡尔曼滤波**,通过分离误差状态(如姿态误差$\delta \theta$)与名义状态,避免直接处理旋转矩阵的非线性问题,提升计算效率[^1]。 --- #### 二、应用场景 1. **视觉惯性里程计(VIO)** - **快速运动场景**:IMU短期预测弥补相机因运动模糊导致的特征跟踪丢失。 - **弱纹理环境**(如白墙走廊):IMU提供连续运动估计,视觉数据辅助校正漂移。 2. **动态物体跟踪** 结合目标检测与卡尔曼滤波预测动态物体的运动轨迹,例如在拥挤场景中跟踪行人或车辆[^4]。 3. **多传感器融合定位** 在复杂环境中(如室内导航),融合视觉、IMU及可能的其他传感器(如轮式编码器),通过卡尔曼滤波实现鲁棒状态估计[^2]。 --- #### 三、性能优化与挑战 - **关键优化**:采用**IMU预积分**技术,减少重复积分计算量,提升实时性。 - **挑战**:IMU噪声模型标定不准确会导致误差累积,需通过在线标定或自适应滤波解决[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值