FA:formulas and algorithm, FF:fusion and filtering,ESKF:(Error State Kalman Filter)

经典文献:Joan Solà 《Quaternion kinematics for the error-state Kalman filter》,VIO / LIO / IMU+GNSS 组合导航的标准框架,也就是基于误差模型 / 误差状态的卡尔曼滤波。

一、核心思想:名义状态 + 误差状态分离

ESKF 不直接估计真值,把真值拆成两部分:

xtrue=xnominal⊕δx\boldsymbol{x}_{true} = \boldsymbol{x}_{nominal} \oplus \delta\boldsymbol{x}xtrue​=xnominal​⊕δx

  • xnominal\boldsymbol{x}_{nominal}xnominal​:名义状态,非线性积分传播(IMU 机械编排,四元数积分),不带噪声;
  • δx\delta\boldsymbol{x}δx:误差状态(小量,切空间向量),是卡尔曼滤波真正估计的变量,线性;
  • ⊕\oplus⊕:状态叠加,旋转是四元数乘法,位置 / 速度 / 偏置是普通加法。

对比传统 EKF:EKF 直接对真值状态线性化;ESKF 在误差空间线性化,误差始终是小量,线性化误差更小,SO (3) 旋转用 3 维微小旋转向量δθ\delta\mathbf{\theta}δθ,无奇异性,数值稳定性远优于直接 EKF。

IMU 组合导航标准 15 维误差状态(最常用)

δx=[δp3×1δv3×1δθ3×1δba,  3×1δbg,  3×1] \delta\boldsymbol{x}= \begin{bmatrix} \delta\boldsymbol{p}_{3\times1} \\ \delta\boldsymbol{v}_{3\times1} \\ \delta\boldsymbol{\theta}_{3\times1} \\ \delta\boldsymbol{b}_{a,\;3\times1} \\ \delta\boldsymbol{b}_{g,\;3\times1} \end{bmatrix} δx=​δp3×1​δv3×1​δθ3×1​δba,3×1​δbg,3×1​​​

  • δp\delta\mathbf{p}δp:位置误差
  • δv\delta\mathbf{v}δv:速度误差
  • δθ\delta\mathbf{\theta}δθ:姿态微小旋转(SO(3) 切空间,3 维)
  • δba\delta\mathbf{b}_aδba​:加速度计偏置误差
  • δbg\delta\mathbf{b}_gδbg​:陀螺仪偏置误差

名义状态:xn=[p,v,q,ba,bg]\mathbf{x}_n = [\mathbf{p},\mathbf{v},\mathbf{q},\mathbf{b}_a,\mathbf{b}_g]xn​=[p,v,q,ba​,bg​],其中q\mathbf{q}q是四元数。

二、ESKF 完整流程(两大阶段:Predict 预测 + Update 更新 + Reset 重置)

1. Predict:IMU 积分传播名义状态 + 传播误差协方差 P

误差状态δx\delta\mathbf{x}δx 预测阶段理论上是 0(只传播协方差)

1.1 名义状态离散传播(IMU 机械编排,dt 为 IMU 采样间隔)

pn,k+1=pn,k+vn,k⋅dt+12(R(qk)(am−ba,k)+g)dt2vn,k+1=vn,k+(R(qk)(am−ba,k)+g)dtqk+1=qk⊗exp⁡(12(ωm−bg,k)dt)ba,k+1=ba,kbg,k+1=bg,k \begin{align*} \mathbf{p}_{n,k+1} &= \mathbf{p}_{n,k} + \mathbf{v}_{n,k}\cdot dt + \frac{1}{2}\big(R(\mathbf{q}_k)(\mathbf{a}_m-\mathbf{b}_{a,k})+\mathbf{g}\big)dt^2\\ \mathbf{v}_{n,k+1} &= \mathbf{v}_{n,k} + \big(R(\mathbf{q}_k)(\mathbf{a}_m-\mathbf{b}_{a,k})+\mathbf{g}\big)dt\\ \mathbf{q}_{k+1} &= \mathbf{q}_k \otimes \exp\left(\frac{1}{2} (\mathbf{\omega}_m-\mathbf{b}_{g,k})dt\right)\\ \mathbf{b}_{a,k+1} &= \mathbf{b}_{a,k}\\ \mathbf{b}_{g,k+1} &= \mathbf{b}_{g,k} \end{align*} pn,k+1​vn,k+1​qk+1​ba,k+1​bg,k+1​​=pn,k​+vn,k​⋅dt+21​(R(qk​)(am​−ba,k​)+g)dt2=vn,k​+(R(qk​)(am​−ba,k​)+g)dt=qk​⊗exp(21​(ωm​−bg,k​)dt)=ba,k​=bg,k​​

am,ωm\mathbf{a}_m,\mathbf{\omega}_mam​,ωm​:IMU 测量的加速度、角速度;R(q)R(\mathbf{q})R(q):四元数转旋转矩阵;g\mathbf{g}g:重力。

1.2 误差状态连续动力学,离散化得到状态转移矩阵(\boldsymbol{F})

δx˙=Fcδx+Gcw\delta\dot{\mathbf{x}} = \mathbf{F}_c \delta\mathbf{x}+\mathbf{G}_c \mathbf{w}δx˙=Fc​δx+Gc​w
离散:
δxk+1=Fδxk+Gwk\delta\mathbf{x}_{k+1} = \mathbf{F}\delta\mathbf{x}_k+\mathbf{G}\mathbf{w}_kδxk+1​=Fδxk​+Gwk​

协方差传播:
Pk+1∣k=FPk∣kFT+GQGT\mathbf{P}_{k+1|k} = \mathbf{F}\mathbf{P}_{k|k}\mathbf{F}^T + \mathbf{G}\mathbf{Q}\mathbf{G}^TPk+1∣k​=FPk∣k​FT+GQGT

Q\mathbf{Q}Q:IMU 噪声对角阵(加速度噪声、陀螺噪声、偏置随机游走)

2. Update:观测到来(GNSS 位置 / 视觉 / 激光里程计),卡尔曼更新误差

2.1、计算观测残差:r=z−h(xnominal)\mathbf{r}= \mathbf{z}-h(\mathbf{x}_{nominal})r=z−h(xnominal​)

2.2、观测雅可比矩阵H\mathbf{H}H:观测对误差状态δx\delta xδx求导(不是对名义状态)

2.3、卡尔曼增益:
K=Pk∣k−1HT(HPk∣k−1HT+R)−1 \mathbf{K}= \mathbf{P}_{k|k-1}\mathbf{H}^T\left(\mathbf{H}\mathbf{P}_{k|k-1}\mathbf{H}^T+\mathbf{R}\right)^{-1} K=Pk∣k−1​HT(HPk∣k−1​HT+R)−1
R\mathbf{R}R:观测噪声协方差

2.4、 更新误差状态:

δx^=Kr \delta\hat{\mathbf{x}} = \mathbf{K}\mathbf{r} δx^=Kr

2.5、更新误差协方差(Joseph 形式保证正定):
Pk∣k=(I−KH)Pk∣k−1(I−KH)T+KRKT \mathbf{P}_{k|k}=(\mathbf{I}-\mathbf{K}\mathbf{H})\mathbf{P}_{k|k-1}(\mathbf{I}-\mathbf{K}\mathbf{H})^T+\mathbf{K}\mathbf{R}\mathbf{K}^T Pk∣k​=(I−KH)Pk∣k−1​(I−KH)T+KRKT

3. Reset(ESKF 特有!):把误差δx^\delta\hat{x}δx^回馈到名义状态,重置误差状态为 0

pn←pn+δpvn←vn+δvqn←qn⊗exp⁡(δθ/2)ba←ba+δbabg←bg+δbg \begin{align*} \mathbf{p}_n &\leftarrow \mathbf{p}_n+\delta\mathbf{p}\\ \mathbf{v}_n &\leftarrow \mathbf{v}_n+\delta\mathbf{v}\\ \mathbf{q}_n &\leftarrow \mathbf{q}_n \otimes \exp(\delta\mathbf{\theta}/2)\\ \mathbf{b}_a &\leftarrow \mathbf{b}_a+\delta\mathbf{b}_a\\ \mathbf{b}_g &\leftarrow \mathbf{b}_g+\delta\mathbf{b}_g \end{align*} pn​vn​qn​ba​bg​​←pn​+δp←vn​+δv←qn​⊗exp(δθ/2)←ba​+δba​←bg​+δbg​​

误差状态清零:δx←0\delta\mathbf{x}\leftarrow \mathbf{0}δx←0

协方差做重置映射:P←GresetPGresetT\mathbf{P}\leftarrow \mathbf{G}_{reset}\mathbf{P}\mathbf{G}_{reset}^TP←Greset​PGresetT​;小角度下Greset≈I\mathbf{G}_{reset}\approx IGreset​≈I,工程常近似单位阵。

✅ ESKF 关键区别:每次更新完,误差被打进名义状态,误差状态归零,下一轮继续用小量假设。

三、ESKF 优点总结

  1. 旋转用 3 维微小旋转向量,无欧拉角奇异性;四元数仅用于名义状态;
  2. 误差始终是小量,雅可比简单,线性化误差小,一致性更好;
  3. 分离 IMU 积分(非线性)与滤波更新(线性误差空间),工程模块化;
  4. 广泛用于 VIO、LIO、组合导航、机器人定位。

四、ESKF 与 EKF、IEKF 对比

表格

算法估计对象旋转表达线性化位置特点
EKF直接估计真值状态四元数 / 欧拉角真值空间容易线性化误差大,奇异
ESKF估计误差状态 δx名义四元数,误差 3 维微小旋转误差切空间小量、稳定、VIO/LIO 标配
InEKF不变误差李群不变流形一致性更强,更复杂
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐