An Efficient Schmidt-EKF for 3D Visual-Inertial SLAM
-
-
- [1. 论文核心创新点及其作用](#1. 论文核心创新点及其作用)
-
- [1. 融合Schmidt卡尔曼滤波(SKF)的VI-SLAM框架(SEVIS算法)](#1. 融合Schmidt卡尔曼滤波(SKF)的VI-SLAM框架(SEVIS算法))
- [2. 关键帧辅助的2D-to-2D特征匹配方案](#2. 关键帧辅助的2D-to-2D特征匹配方案)
- [3. 三级特征分类与差异化更新策略](#3. 三级特征分类与差异化更新策略)
- [2. 创新点的协同价值](#2. 创新点的协同价值)
- [3. 核心需求回应](#3. 核心需求回应)
- [4. 活跃状态转施密特状态的判断条件(按优先级/核心度排序)](#4. 活跃状态转施密特状态的判断条件(按优先级/核心度排序))
-
- [1. 核心判断条件:特征估计进入"稳态/成熟收敛"](#1. 核心判断条件:特征估计进入“稳态/成熟收敛”)
- [2. 前提条件:特征是"稳定跟踪的SLAM特征"](#2. 前提条件:特征是“稳定跟踪的SLAM特征”)
- [3. 隐含条件:计算复杂度控制(兜底逻辑)](#3. 隐含条件:计算复杂度控制(兜底逻辑))
- [4. 排除条件(反向判断)](#4. 排除条件(反向判断))
- [5. 转态后的核心处理逻辑(补充理解)](#5. 转态后的核心处理逻辑(补充理解))
- [6. 总结](#6. 总结)
-
- EKF/MSCKF中如何区分不提供质量的后端及其操作方式。
- 另外一种形式的协方差/信息矩阵维护的方式。
- 深度滤波的另外一种实现方式和展现形式。
- 需要结合矩阵 PREMUTED qr 提升效率
1. 论文核心创新点及其作用
1. 融合Schmidt卡尔曼滤波(SKF)的VI-SLAM框架(SEVIS算法)
- 创新内涵:将Schmidt卡尔曼滤波(SKF)形式化整合到视觉惯性SLAM中,提出"Schmidt-EKF VI-SLAM(SEVIS)"算法。核心设计是:将成熟收敛的地图特征定义为"冗余参数(Schmidt states)",不再持续更新其均值和自身协方差,但保留并更新这些特征与"活跃状态(导航状态、滑动窗口内克隆姿态、未成熟SLAM特征)"的交叉相关性。
- 核心作用 :
- 突破传统EKF-based SLAM的二次计算复杂度((O(n^2)),n为地图特征数),将复杂度降至线性((O(n))),解决了大规模SLAM在资源受限设备(移动设备、微型飞行器MAVs)上实时运行的核心瓶颈。
- 兼顾"地图构建与闭环"能力和"计算效率":既保留了SLAM通过地图闭环限制长期导航漂移的优势,又避免了VIO(视觉惯性里程计)无地图、无法利用历史观测修正漂移的缺陷。
2. 关键帧辅助的2D-to-2D特征匹配方案
- 创新内涵 :针对"当前2D视觉测量与3D地图特征的数据关联"难题,摒弃传统3D-to-2D投影匹配(依赖稀疏地图投影、易受导航漂移影响),设计关键帧辅助的2D-to-2D匹配策略:
- 从关键帧数据库中检索与当前帧视觉相似的关键帧(通过DBoW2/CALC等重识别方法+基础矩阵几何验证);
- 在当前帧活跃特征与关键帧特征间进行描述子匹配(ORB+RANSAC去噪);
- 通过关键帧与地图特征的绑定关系,间接关联当前帧特征与3D地图特征。
- 核心作用 :
- 解决了稀疏地图场景下3D-to-2D匹配成功率低的问题,即使地图仅含少量可投影特征,仍能通过关键帧建立可靠关联。
- 不受导航漂移影响:匹配基于2D图像特征直接比对,而非依赖漂移后的3D投影,支持长期闭环和极端漂移场景下的恢复,确保地图信息充分利用以修正误差。
3. 三级特征分类与差异化更新策略
- 创新内涵 :将跟踪到的特征分为三类并设计差异化处理逻辑:
- VIO特征:短期跟踪、已丢失轨迹的特征,采用MSCKF的零空间投影更新(消除特征依赖,快速处理);
- SLAM特征:稳定跟踪、超出滑动窗口的特征,初始化到活跃状态并进行标准EKF更新;
- 地图特征:成熟收敛的SLAM特征,转为Schmidt状态,采用Schmidt-EKF更新(仅利用交叉相关性修正活跃状态)。
- 核心作用 :
- 优化计算资源分配:短期特征快速处理,长期稳定特征保留为地图以约束漂移,避免冗余计算。
- 实现"实时性"与"精度"的平衡:通过特征生命周期管理,既保证每帧更新的计算量可控,又能持续积累地图信息以抑制长期漂移。
2. 创新点的协同价值
三者共同解决了传统VI-SLAM的核心矛盾:"高精度(需地图闭环)"与"高效实时(需低复杂度)"的冲突。SEVIS通过SKF降复杂度、2D-to-2D匹配保关联可靠性、三级特征管理优化资源分配,最终实现"厘米级定位精度+线性计算复杂度+长期漂移有界",适配移动设备、MAVs等资源受限场景,且在低光、运动模糊等复杂环境中仍能稳定工作。
3. 核心需求回应
你想知道在SEVIS算法中,原本处于活跃状态(active state) 的特征被判定为施密特状态(Schmidt state) 的具体判断条件------这是理解SEVIS如何平衡"精度"与"计算效率"的核心,所有条件均基于论文原文逻辑和SLAM算法设计目标推导。
4. 活跃状态转施密特状态的判断条件(按优先级/核心度排序)
1. 核心判断条件:特征估计进入"稳态/成熟收敛"
这是触发转态的最核心、最根本条件,对应论文中明确提到的:
"features' estimates do not have significant updates if they approach their steady state (i.e., becoming matured/converged)"
- 量化含义:当活跃状态中的SLAM特征经过多轮EKF更新后,其3D位置的估计值((\hat{x}))不再有"显著变化",且对应的协方差((P_{SS}))收敛到一个很小、稳定的范围(即估计误差的不确定性不再降低)。
- 通俗解释:特征的3D位置已经估计得足够精确,后续继续更新它的均值/协方差,对整体定位精度几乎无提升,但会持续消耗计算资源------此时判定为"成熟",转为施密特状态。
- 算法层面的判定方式 :通常通过两个阈值判断:
① 特征连续多帧的估计值变化量 < 设定阈值(如厘米级);
② 特征协方差的迹(trace)连续多帧的下降量 < 设定阈值(说明不确定性不再减小)。
2. 前提条件:特征是"稳定跟踪的SLAM特征"
转态的必要前提是该特征属于"SLAM特征",而非临时的VIO特征,对应论文中:
"SLAM features that are more stable than the above one (VIO features) and can be tracked beyond the current sliding window"
- 具体要求:
① 特征能被可靠跟踪,且跟踪时长超过当前滑动窗口(区别于"窗口内丢踪的VIO特征");
② 未被边缘化(边缘化是直接移除,而非转施密特状态);
③ 已完成初始化(3D位置已通过BA三角化确定,纳入活跃状态向量)。
3. 隐含条件:计算复杂度控制(兜底逻辑)
这是算法设计的底层目标驱动 ,也是转态的"兜底判断":
当活跃状态中的特征数量增长到可能导致计算复杂度逼近二次((O(n^2)))时,算法会优先将满足"收敛"条件的SLAM特征转为施密特状态------即使该特征的收敛程度略未达阈值,也会触发转态,以维持线性复杂度((O(n)))。
4. 排除条件(反向判断)
以下特征不会从活跃状态转为施密特状态:
- VIO特征:窗口内丢踪的临时特征,直接用MSCKF边缘化,不进入活跃状态;
- 未收敛的SLAM特征:仍保留在活跃状态,继续执行标准EKF更新;
- 丢踪/外点特征:直接从状态向量中移除,而非转态。
5. 转态后的核心处理逻辑(补充理解)
满足上述条件转施密特状态后,算法仅做以下处理(对应论文公式21-24):
- 不更新施密特状态的均值: x ^ S k ∣ k = x ^ S k ∣ k − 1 \hat{x}{S{k|k}} = \hat{x}{S{k|k-1}} x^Sk∣k=x^Sk∣k−1;
- 不更新施密特状态的自身协方差: P S S k ∣ k = P S S k ∣ k − 1 P_{SS_{k|k}} = P_{SS_{k|k-1}} PSSk∣k=PSSk∣k−1;
- 仅保留并更新其与活跃状态的交叉协方差 P A S P_{AS} PAS,确保仍能通过交叉相关性约束活跃状态(限制定位漂移)。
6. 总结
活跃状态转施密特状态的核心逻辑可概括为3个关键点:
- 核心触发:特征估计收敛(稳态/成熟),无显著更新价值;
- 必要前提:特征是稳定跟踪且超出滑动窗口的SLAM特征;
- 底层目标:控制计算复杂度,从二次((O(n^2)))降至线性((O(n))),同时保留地图约束。