基于滤波 vs 基于优化
在紧耦合VIO内部有两种估计范式。它们求解的是同一个概率推断问题;区别在于它们愿意重新线性化该问题的频率。
基于滤波(EKF)
基于滤波的方法(MSCKF、ROVIO、OpenVINS)维护一个状态向量 和协方差 ,并递归更新:
- 传播利用IMU测量:,。
- 更新利用视觉测量:残差为 、雅可比为 ,应用卡尔曼增益 ,将该测量吸收进高斯信念中。
每个测量只在被处理的那一刻被线性化一次。这带来了常数时间、低延迟的更新——但线性化点是永久性的:如果估计值之后发生变化,已经被吸收的信息无法重新线性化,累积的线性化误差会导致漂移,若不加处理还会导致不一致。MSCKF的洞见是让EKF具有窗口形状——在状态中保留一组滑动的历史相机位姿,并以无结构的方式施加特征约束——因此即便是”滤波式”VIO,其内部实际上也隐含着窗口化。
基于优化(滑动窗口BA)
基于优化的方法(OKVIS、VINS-Mono、Basalt、ORB-SLAM3)保持一个近期关键帧状态的滑动窗口,并用高斯-牛顿或Levenberg-Marquardt法最小化一个联合非线性代价——重投影残差、预积分IMU残差以及一个边缘化先验:
由于每次求解器迭代都会在当前估计处重新线性化窗口内的所有残差,线性化误差要小得多,精度也相应更高——但计算代价更高。旧状态通过Schur补边缘化压缩进先验 中,这正是两种范式相遇之处(见下文)。
对比
| 滤波(EKF) | 滑动窗口优化 | |
|---|---|---|
| 线性化 | 每次测量一次 | 每次迭代都重新线性化 |
| 成本 | 低,常数时间 | 更高,随窗口大小增长 |
| 精度 | 良好 | 更好(通常) |
| 延迟 | 极低(每次测量一次更新) | 更高(每帧需迭代求解) |
| 一致性工具 | 首次估计雅可比(FEJ)、可观测性约束 | 边缘化先验上的FEJ;非线性因子恢复(Basalt);延迟边缘化(DM-VIO) |
| 代表性系统 | MSCKF、ROVIO、OpenVINS | OKVIS、VINS-Mono、Basalt、ORB-SLAM3 |
这两个家族比看起来更接近
- 通过Schur补边缘化旧状态的滑动窗口优化器,本质上是在被边缘化的部分上执行一个滤波步骤——它所创建的先验被线性化一次并冻结,与EKF更新完全相同。
- 反过来,EKF是一个只做一次高斯-牛顿迭代就停止的优化器;迭代EKF(用于ROVIO的更新步骤)在一次更新内进行重新线性化,进一步向优化的一侧靠拢。
- 两个家族在其冻结的线性化点上都患有同一种”病”——沿不可观测方向产生虚假的信息增益——并且都使用同一种”药”(FEJ及其相关方法)。从MSCKF发展出的一致性文献,适用于每个滑动窗口系统的边缘化先验。
因此实际的区别不在于”递归 vs 批处理”,而在于每种设计将计算预算花在哪里:滤波器几乎不在重新线性化上花费,而将全部预算投入吞吐量;优化器则通过重新线性化一个小而精心选择的窗口来换取精度。
实践中的选择
- 硬实时、嵌入式计算、高频控制回路 → 滤波(MSCKF/OpenVINS一类)。常数、可预测的单帧成本;这种效率特征正是滤波式估计器与部署级AR/VR跟踪相关联的原因。
- 精度关键的建图、离线或桌面级计算 → 滑动窗口优化,或优化加建图后端(Basalt、OKVIS2)。
- 研究两种失效模式:滤波器不一致性表现为过度自信的协方差和偏航漂移;优化器延迟表现为负载下丢帧。补丁文献——FEJ、可观测性约束EKF、非线性因子恢复、延迟边缘化——正是为了处理这些问题而存在的。
常见陷阱
- 在不同的计算预算下比较滤波器和优化器,并得出某一种范式”更好”的结论——经典的”为什么滤波?”分析(Strasdat等人)是一个固定预算的论证:重新线性化一个小的关键帧窗口胜过滤波一个大状态。
- 把滑动窗口系统的边缘化先验当作精确的——它是一次性的线性化,忽视这一点(不做FEJ处理)会在”基于优化”的系统中重新引入滤波式的不一致性。
- 认为滤波器不可能精确:配合FEJ、在线标定和良好的前端,现代MSCKF实现在标准基准测试上以极低的成本就具有竞争力。
对SLAM的意义
这是针对视觉SLAM研究过的经典”为什么滤波?”问题(Strasdat等人)的VIO版本:在固定的计算预算下,重新线性化一个小的关键帧窗口胜过滤波一个大状态。了解每一方的失效模式——滤波器不一致性 vs 优化器延迟——能告诉你针对特定平台该选哪个系统,以及为修补这些失效模式而存在的是哪些论文(FEJ、非线性因子恢复、延迟边缘化)。
相关条目
- Visual-SLAM why filter? — 这一权衡的基础性分析。
- MSCKF — 典范的基于滤波的VIO。
- OKVIS — 典范的基于优化的VIO。
- Basalt — 用非线性因子恢复来修复边缘化先验的线性化误差。
- Marginalization — 连接两个世界的机制。
- Consistency — 这一选择所涉及的估计器属性。