欢迎光临
我们一直在努力

卡尔曼滤波:让不确定的数据“融合”出真相

引言

在现实生活中,我们往往无法直接获得一个系统状态的精确值。例如:无人驾驶汽车需要知道自己的实时位置——GPS信号有噪声,惯性传感器的读数会漂移,轮速计在打滑时失效。单独依赖任何一个传感器,都会得到不完美的结果。有没有一种方法,可以把这些“不准”的数据融合起来,得到一个“更准”的估计?

卡尔曼滤波(Kalman Filter) 正是这样一个优雅的数学工具。它由鲁道夫·卡尔曼在1960年提出,通过预测—更新两个步骤的迭代,利用系统的动态模型和带有噪声的观测,递归地给出最优状态估计(在噪声服从高斯分布、系统线性的假设下,它是最小均方误差意义上的最优估计)。

如果把单次测量比作“雾里看花”,把模型预测比作“刻舟求剑”,那么卡尔曼滤波就是 “让预测和观测互相纠错,像炼金术士一样炼出最纯的金子”。


前置知识

  • 状态空间模型:用状态向量 xkxk​ 描述系统在时刻 kk 的“真实情况”(如位置、速度)。状态随时间演化,并且我们能通过观测 zkzk​ 间接感知它。

  • 线性高斯系统:

    • 状态转移方程:xk=Fkxk−1+Bkuk+wkxk​=Fk​xk−1​+Bk​uk​+wk​,其中 wk∼N(0,Qk)wk​∼N(0,Qk​) 是过程噪声。

    • 观测方程:zk=Hkxk+vkzk​=Hk​xk​+vk​,其中 vk∼N(0,Rk)vk​∼N(0,Rk​) 是观测噪声。

    • 所有噪声均为零均值高斯白噪声,且互不相关。

  • 协方差矩阵:描述状态各分量之间不确定度的相关性。例如 Pk=Cov(xk)Pk​=Cov(xk​)。

  • 贝叶斯滤波:卡尔曼滤波是贝叶斯在线滤波在高斯线性情况下的闭式解。

  • 矩阵运算基础:转置、求逆、矩阵乘法和加法。


  • 核心思想

    卡尔曼滤波采用递归方式:每个时刻,它先根据上一时刻的估计值预测当前时刻的状态(先验估计),然后利用当前时刻的观测值更新这个预测(后验估计)。更新时按照卡尔曼增益来平衡预测的不确定度和观测的不确定度——谁的协方差小,谁就更“可信”。

    可以用一个生活中的例子来理解:

    • 你要估计房间的温度。你有一个温度模型(比如关窗后温度变化很小),这是预测。

    • 你还有一个温度计,但读数有误差,这是观测。

    • 卡尔曼滤波会结合两者:如果温度计很准(观测噪声小),就更相信它;如果模型很准(过程噪声小),就更相信预测。而且它会动态地调整这种信任程度。

    数学本质:卡尔曼滤波推导出后验估计的均值和协方差的解析解,结果就是先验估计 + 增益 × (观测 – 期望观测),其中增益由协方差计算得出。整个过程不需要保留历史数据,仅需上一时刻的状态和协方差,因此极其适合实时应用。


    卡尔曼滤波算法步骤(标准形式)

    假设系统是离散时间、线性的。每个周期包括两个阶段:

    1. 预测阶段(基于上一时刻的后验)

    • 状态先验估计:

      x^k−=Fkx^k−1+Bkukx^k−​=Fk​x^k−1​+Bk​uk​

      其中 x^k−1x^k−1​ 是上一时刻的后验估计,ukuk​ 是控制输入(如驱动力)。

    • 先验协方差:

      Pk−=FkPk−1FkT+QkPk−​=Fk​Pk−1​FkT​+Qk​

      这一步将上一时刻的不确定度传播到当前,并加上过程噪声 QkQk​ 带来的新增不确定度。

    2. 更新阶段(融合当前观测)

    • 卡尔曼增益:

      Kk=Pk−HkT(HkPk−HkT+Rk)−1Kk​=Pk−​HkT​(Hk​Pk−​HkT​+Rk​)−1

      增益决定了观测对估计的修正程度。当观测噪声 RkRk​ 很大时,KkKk​ 变小,更相信预测;当 Pk−Pk−​ 很大时,KkKk​ 变大,更相信观测。

    • 状态后验估计:

      x^k=x^k−+Kk(zk−Hkx^k−)x^k​=x^k−​+Kk​(zk​−Hk​x^k−​)

      括号内称为新息(innovation)或残差,即实际观测与预期观测之差。

    • 后验协方差更新(两种等价形式):

      Pk=(I−KkHk)Pk−Pk​=(I−Kk​Hk​)Pk−​

      这一步量化了融合后剩余的不确定性。

    以上公式中,所有矩阵在 kk 时刻均可已知(Fk,Bk,Hk,Qk,RkFk​,Bk​,Hk​,Qk​,Rk​ 可能是时变的,但通常很多应用中是常数)。


    算法流程图解

    text

    +——————-+ +——————-+
    | 上一时刻后验估计 | | 系统输入 |
    | x_hat_{k-1}, P_{k-1} | | u_k |
    +——————-+ +——————-+
    │ │
    ↓ ↓
    ┌─────────────────────────────────────┐
    │ 预测: │
    │ x_hat_k^- = F_k x_hat_{k-1} + B_k u_k│
    │ P_k^- = F_k P_{k-1} F_k^T + Q_k │
    └─────────────────────────────────────┘
    │
    ↓
    ┌─────────────────────────────────────┐
    │ 等待观测 z_k │
    └─────────────────────────────────────┘
    │
    ↓
    ┌─────────────────────────────────────┐
    │ 更新: │
    │ K_k = P_k^- H_k^T (H_k P_k^- H_k^T + R_k)^{-1} │
    │ x_hat_k = x_hat_k^- + K_k(z_k – H_k x_hat_k^-) │
    │ P_k = (I – K_k H_k) P_k^- │
    └─────────────────────────────────────┘
    │
    ↓
    +——————-+
    | 当前时刻后验估计 |
    | x_hat_k, P_k |
    +——————-+
    │
    └──────────→ 下一时刻


    性质与关键理解

    性质说明
    最优性 在系统为线性且噪声为高斯白噪声的条件下,卡尔曼滤波提供最小均方误差(MMSE)估计,等价于贝叶斯后验均值。
    递归 只需保存上一时刻的状态和协方差,计算量恒定,适合嵌入式实时系统。
    无偏性 如果初始估计无偏,则所有后续估计都是无偏的:E[x^k]=E[xk]E[x^k​]=E[xk​]。
    协方差收敛 对于时不变系统(固定F, H, Q, R),协方差矩阵 PkPk​ 会收敛到一个稳态值,此时卡尔曼增益也收敛。
    鲁棒性 即便噪声不是严格高斯,卡尔曼滤波往往也是线性系统下性能优良的次优滤波器。
    可观测性 系统必须可观(即通过观测能唯一确定状态),否则滤波发散。

    关于卡尔曼增益的直观:

    • 当观测噪声协方差 RR 很大(观测不可信)时,KK 很小,依赖预测。

    • 当状态先验协方差 P−P− 很大(预测很迷茫)时,KK 很大,更相信观测。

    • 当状态维度高时,矩阵求逆(HP−HT+RHP−HT+R 的逆)是主要计算开销。


    拓展与变体

  • 扩展卡尔曼滤波(EKF):用于非线性系统。将状态转移函数和观测函数进行一阶泰勒展开线性化,然后套用标准卡尔曼滤波框架。广泛用于无人机、机器人SLAM。

  • 无迹卡尔曼滤波(UKF):使用Sigma点近似非线性分布,比EKF精度更高,无需计算雅可比矩阵。

  • 容积卡尔曼滤波(CKF):基于球面径向积分规则,高维系统性能更优。

  • 信息滤波:协方差矩阵的逆(信息矩阵)递推,适合多传感器融合。

  • 自适应卡尔曼滤波:在线估计过程噪声 QQ 和观测噪声 RR,应对时变环境。

  • 粒子滤波:非高斯、强非线性场景下,用随机采样的粒子近似后验分布,替代卡尔曼滤波。


  • 常见误区澄清

    • 误区1:卡尔曼滤波要求系统是线性的。
      → 正确:标准卡尔曼滤波确实要求线性,但EKF/UKF能处理弱非线性。

    • 误区2:卡尔曼滤波只能处理平稳过程。
      → 不,它可以跟踪时变系统,只要模型参数 Fk,HkFk​,Hk​ 能随时间变化。

    • 误区3:过程噪声和观测噪声必须已知且精确。
      → 实际工程中往往需要调参(tuning),通过实验选择合理的 QQ 和 RR。

    • 误区4:卡尔曼滤波的初值不重要。
      → 实际上,初值 x^0x^0​ 和 P0P0​ 会影响前期收敛速度,但对稳态性能影响很小。

    总结

    卡尔曼滤波是将模型预测与数据观测进行最优融合的数学框架。它用优雅的递归公式,将充满噪声的传感器数据和动力学模型相结合,实时给出真实状态的最佳估计。虽然其背后的数学涉及概率论和矩阵运算,但其核心思想极其朴素:相信模型还是相信数据?——看谁更确定。

    赞(0)
    未经允许不得转载:171主机测评 » 卡尔曼滤波:让不确定的数据“融合”出真相
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址