Tightly-coupled vs Loosely-coupled

在融合相机和 IMU 时,首要的架构决策是融合发生在何处

松耦合(Loosely-coupled) 系统运行两个独立的估计器——一个产生相机位姿的视觉里程计流水线,以及一个对 IMU 观测值进行积分的惯性导航流水线——然后在第二阶段将它们的输出(位姿、速度)融合在一起,通常使用卡尔曼滤波器。每个子系统都将另一个视为黑盒:

camera → [ VO pipeline ]  → pose estimate ─┐
                                           ├→ [ fusion filter ] → fused state
IMU    → [ INS integration ] → pose/vel  ──┘

紧耦合(Tightly-coupled) 系统将两种传感器的原始观测量都输入到一个统一的估计器中:图像特征观测(重投影残差)和 IMU 读数(预积分的惯性残差)在一个包含位姿、速度和 IMU 偏置的共享状态上被联合优化。几乎所有现代 VIO 系统——MSCKF、OKVIS、VINS-Mono、Kimera-VIO、Basalt——都是紧耦合的。

联合状态量是什么样子的

一个紧耦合的滑动窗口估计器为每个关键帧 ii 保存

xi=(Ri,  pi,  vi,  big,  bia)\mathbf{x}_i = \left(\mathbf{R}_i,\; \mathbf{p}_i,\; \mathbf{v}_i,\; \mathbf{b}^g_i,\; \mathbf{b}^a_i\right)

再加上地标参数(或无结构等价形式),并最小化如下形式的一个代价函数

minX  rp2  +  (i,j)rIMU(xi,xj)Σ12  +  k,iρ ⁣(rreproj(lk,xi)2).\min_{\mathcal{X}} \; \|\mathbf{r}_p\|^2 \;+\; \sum_{(i,j)} \|\mathbf{r}_{\text{IMU}}(\mathbf{x}_i, \mathbf{x}_j)\|^2_{\Sigma^{-1}} \;+\; \sum_{k,i} \rho\!\left(\|\mathbf{r}_{\text{reproj}}(\mathbf{l}_k, \mathbf{x}_i)\|^2\right).

两种传感器模态在同一次求解中约束相同的变量——这正是紧耦合的定义。而松耦合的设计则是向融合滤波器输入一个位姿观测量 T^i\hat{\mathbf{T}}_i,其内部结构(哪些方向被良好约束、由哪些特征产生)已经被压缩掉了。

对比

松耦合紧耦合
融合层级位姿/速度估计值原始观测量
精度较低(接口处信息丢失)较高(利用了跨传感器相关性)
复杂度低;子系统可复用高;联合状态量与雅可比
失效行为一个子系统可以独立失效视觉外点会污染联合状态,但 IMU 也能辅助视觉(例如特征预测)
偏置估计仅靠融合后的位姿无法观测 IMU 偏置偏置被联合估计,并受视觉约束
示例位姿融合 EKF(例如 ethzasl MSF 类框架)、经典 GNSS/INS 组合导航MSCKF、OKVIS、VINS-Mono、Kimera-VIO、Basalt

紧耦合为何在精度上更胜一筹

视觉信息和惯性信息之间的相关性正是联合系统强大的原因所在:

代价,以及何时松耦合是正确的选择

紧耦合要求一致的时间同步(哪怕几毫秒的相机-IMU 偏移也会降低精度)、精确的相机-IMU 外参标定、谨慎的初始化流程(重力、速度、偏置、尺度),以及用于限制状态规模的边缘化机制。而在模块化比峰值精度更重要的场合,松耦合的设计依然能够存活下来:快速集成一个现有的里程计源(轮式里程计、专有的 VO 黑盒、GNSS/INS)、构建冗余/故障切换架构,或者做原型验证。如果某个子系统的输出已经近乎最优,且其失效模式必须被隔离控制,那么松耦合就是一个合理的工程选择——而不仅仅是次一等的选择。

常见误区

对SLAM的意义

这一区分是审视任何 VIO 论文时首先要问的问题,同样的词汇也会在每一种多传感器融合场景(LiDAR-视觉-惯性、GNSS 融合)中反复出现。理解紧耦合为何在精度上更胜一筹——保留了跨传感器相关性——也解释了为何该领域在算力允许的情况下始终朝着联合估计的方向演进。

相关条目