论文名称:ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
开源项目地址:https://github.com/UZ-SLAMLab/ORB_SLAM3
期刊:IEEE transactions on robotics
时间:2021
论文主要做的是多传感器融合/视觉-惯性 SLAM 系统,并不是基于深度学习的预测模型
数据集
EuRoC MAV Dataset,室内无人机数据集,含IMU,不含GNSS
链接:projects.asl.ethz.ch/datasets/do...
TUM VI Benchmark,手持鱼眼相机数据集,含IMU,不含GNSS
链接:cvg.cit.tum.de/data/datase...
主要工作
提出了 ORB-SLAM3,一个支持以下配置的开源 SLAM 系统:
- 传感器类型:单目、双目(Stereo)、RGB-D、鱼眼相机
- 融合方式:纯视觉 /视觉-惯性(IMU融合)
- 地图能力:支持多地图(multi-map)与多会话(multi-session)SLAM
关键创新:
- 首个支持视觉-惯性融合的多地图SLAM系统
- 改进了回环检测 与地图合并的精度与召回率
- 提出了快速准确的IMU初始化方法(基于MAP估计)
ORB-SLAM3 是一个传统基于特征点(ORB 特征)+ 图优化(Bundle Adjustment)+ IMU 预积分 的系统,完全基于几何视觉与滤波/优化方法,不涉及神经网络、Transformer、RNN、CNN 等深度学习技术
ORB 特征
先在图像里找到"角点"(像墙角、纹理突变的点),再给每个角点配一把"小指纹" (256 个 0/1 组成的二进制串)
指纹对旋转、亮度变化不敏感 ,两幅图只要比一下指纹的"差异位数"就能快速配对
ORB(Oriented FAST and Rotated BRIEF)是一种兼顾计算效率与鲁棒性的局部特征描述子
其构造过程可分解为"关键点提取 "与"描述子编码"两个阶段
- 首先,利用 FAST(Features from Accelerated Segment Test)检测器在灰度图像中定位具有显著角点响应的像素,并通过图像金字塔实现多尺度覆盖
- 随后,以关键点的灰度质心为基准计算主方向 ,赋予其旋转不变性
- 其次,在旋转对齐后的局部窗口内执行 BRIEF(Binary Robust Independent Elementary Features)采样,生成固定长度的二进制字符串,以汉明距离作为相似性度量,实现高速匹配
由于 ORB 兼具旋转、尺度与亮度不变性,且仅需整数运算与比特比较,已成为实时 SLAM 系统首选的前端特征
图优化
把"相机在哪儿"和"路标在哪儿"想象成一张网
- 节点就是"位置估计"
- 连线就是"我看见了这个路标/我走了这段距离"
如果所有连线都"拉得紧",网就稳,如果有根线"松了",系统就整体微调所有节点,让整网最平整
实时里分三层:
- 当前帧赶紧拉一下(小网)
- 附近几帧再细调(中网)
- 发现回到老地方(回环)或把两张地图并起来时,整张大网做一次大调
图优化(Graph-based Optimization)将同时定位与建图问题抽象为概率图模型 ,其中节点 表示待估计的机器人位姿与环境路标 ,边 表示传感器观测或运动学约束对应的残差项
通过最小化所有边的加权平方误差 ,获得最大后验估计(MAP)
实际系统通常采用分层策略:
- 跟踪线程仅优化最近两帧的相机运动,以满足实时性;
- 局部建图线程在滑动窗口内执行 Bundle Adjustment,保持计算复杂度与共视性平衡;
- 回环检测或地图合并线程则利用 稀疏位姿图 (Pose Graph)或 全局 Bundle Adjustment,对累积漂移进行一致修正
- 非线性最小二乘求解器(如 Levenberg-Marquardt 或 Dog-Leg)结合稀疏矩阵分解技术,确保高维问题的高效收敛
稀疏位姿图
在回环检测或地图合并阶段,若直接对所有路标与帧位姿执行全局 Bundle Adjustment,变量维度将随轨迹长度线性增长。稀疏位姿图通过"仅保留关键帧位姿节点 + 帧-帧相对约束边"的方式降维
- 节点:关键帧位姿 T_{i} ∈ SE(3)(或 Sim(3));
- 边:相邻里程计边、回环边、地图合并边,边权由信息矩阵(协方差之逆)描述;
- 稀疏性:每帧仅与少量共视帧或回环帧相连,导致 Hessian 矩阵呈稀疏块结构,可用稀疏线性代数工具高效求解。
优化目标为最小化所有相对位姿误差,全局漂移通过"回环边"强制闭合,从而以线性-对数时间复杂度获得一致轨迹估计。
协方差矩阵的基本原理
- 协方差矩阵(Covariance Matrix)是描述一组随机变量之间"联动波动"关系的方阵
- 若将变量视为向量,则该矩阵同时刻画了各自的方差(对角线)与两两之间的相关性(非对角线)
- 在 SLAM 中,它定量地告诉优化器"每个量有多不准,以及它们一起偏差的趋势",从而决定残差项的权重
稀疏矩阵分解技术
图优化最终归结为大型线性系统 HΔx=-b,其中Hessian H 维数高但非零块比例极低 。稀疏矩阵分解利用"填充-减少"重排序(如 AMD、COLAMD)将 H 分解为稀疏三角因子,常用算法包括:
- 稀疏 Cholesky(H=LL^{T}):适用于正定系统
- 稀疏 QR/LU:用于一般最小二乘或增广拉格朗日形式
- 增量分解(iSAM、iSAM2):通过 Givens 更新或贝叶斯树结构在线修正因子,避免重复分解。 该类方法将内存与计算复杂度从稠密的三次阶降至近似线性阶,使万级节点规模的位姿图可在毫秒级完成一次迭代。
IMU 预积分
IMU 一秒量两百次角速度、加速度,直接塞进优化器就爆炸
于是把"两帧照片之间"的所有 IMU 读数先"打包"成一条"运动摘要",记录这段时间内转了多少、跑了多少、速度变了多少,再给这条摘要配一个"可信区间"
后续优化器只面对这一条摘要,而不是上千条原始读数
IMU 预积分(Pre-integration)旨在将高频惯性测量在两个相邻视觉关键帧间隔内的动态信息压缩为相对运动约束 ,从而避免在优化框架中引入大量中间状态
其核心思想是,在假设 biases 保持恒定的局部时间窗内 ,对陀螺仪与加速度计读数进行积分 ,得到旋转、速度与位移的相对增量,并同步传播协方差矩阵以量化不确定性
当关键帧的 biases 估计更新时,可利用预先存储的雅可比矩阵对预积分结果进行线性修正,而无需重新遍历原始测量序列
该机制显著降低了图优化的维度与计算负载,同时保留了完整的概率特性,为紧耦合视觉-惯性 SLAM 系统提供了高效且一致的运动先验
传播协方差矩阵以量化不确定性
IMU 积分过程中,随机噪声与 bias 漂移会随时间累积。协方差传播指在数值积分的同时,按线性扰动模型递推状态误差协方差:
\mathbf{\Sigma}_{k+1}=\mathbf{F}_k\mathbf{\Sigma}_k\mathbf{F}_k^\top+\mathbf{G}k\mathbf{\Sigma}\eta\mathbf{G}_k^\top
其中为 \mathbf{F}_k 为状态转移矩阵,\mathbf{G}k 为噪声雅可比,\mathbf{\Sigma}\eta 为测量噪声
所得协方差矩阵 定量描述了当前积分值的"置信椭球",在优化中用于加权残差,实现最大后验估计而非最小二乘
利用预先存储的雅可比矩阵对预积分结果进行线性修正
预积分将相邻关键帧间的 IMU 观测压缩为相对运动 \Delta\xi_{ij}
当后端更新bias估计后,需重新评估积分值 ,但重跑完整积分会丧失实时性
解决途径:
- 在首次积分时,额外存储残差对 bias 的雅可比 \frac{\partial\Delta\xi}{\partial\mathbf{b}}
- 当 bias 变化量 \delta\mathbf{b} 较小时,采用一阶泰勒展开
\Delta\boldsymbol{\xi_\mathrm{new}}\approx\Delta\boldsymbol{\xi_\mathrm{old}}+\frac{\partial\Delta\boldsymbol{\xi}}{\partial\mathbf{b}}\delta\mathbf{b}
- 同步更新协方差与信息矩阵,实现"无重积分"快速修正。该策略在紧耦合系统中保证 bias 收敛的同时,将计算负载降低两个数量级
紧耦合/松耦合视觉-惯性 SLAM
维度 | 松耦合 (Loosely-Coupled) | 紧耦合 (Tightly-Coupled) |
---|---|---|
融合层级 | 前端独立,IMU 仅提供运动先验或尺度恢复 | 视觉与惯性残差在同一优化目标中联合最小化 |
状态向量 | 仅含位姿/速度,视觉部分可独立运行 | 位姿、速度、bias、路标统一建模 |
信息损失 | 视觉-惯性互约束未充分利用,回环漂移大 | 充分利用交叉协方差,实现零漂移回环 |
计算复杂度 | 低,可跑在 MCU | 高,需稀疏线性求解器与边缘化 |
代表系统 | MSCKF 早期版本、VINS-Mono(滤波版) | ORB-SLAM3、VINS-Fusion(优化版)、OKVIS、Basalt |
紧耦合将视觉重投影与 IMU 预积分置于同一目标函数,通过联合优化实现精度上限;松耦合则保持模块独立,侧重实时性与部署简易性。
模型性能对比
对比系统 | 类型 | 是否开源 | 结果(在EuRoC数据集上) |
---|---|---|---|
ORB-SLAM2 | 纯视觉SLAM | ✅ | ORB-SLAM3精度更高 |
VINS-Mono | 视觉-惯性里程计 | ✅ | ORB-SLAM3精度提升2.6倍 |
OKVIS | 视觉-惯性里程计 | ✅ | ORB-SLAM3更鲁棒 |
ROVIO | 视觉-惯性滤波法 | ✅ | ORB-SLAM3精度更高 |
DSO / VI-DSO | 直接法SLAM | ✅ | ORB-SLAM3在回环/多地图场景下更优 |
BASALT | 视觉-惯性BA系统 | ✅ | ORB-SLAM3在大多数序列更优 |
ORB-SLAM3 是一个不依赖深度学习 的、基于几何优化的视觉-惯性SLAM系统,支持单目/双目/鱼眼/RGB-D、支持IMU融合与多地图合并,使用公开开源数据集(EuRoC、TUM-VI),并在多个SLAM系统中取得SOTA性能