1. 课程导入

在真实工程系统中,状态估计几乎无处不在:无人机要估计姿态与位置,机器人要融合轮速与激光雷达,电池管理系统要推断荷电状态,组合导航要融合惯性测量单元与卫星定位。理想情况下,如果系统是线性的、噪声是高斯的,标准卡尔曼滤波就能给出最优估计。但工程对象的运动学、动力学和观测模型往往是非线性的,例如姿态四元数更新、雷达斜距观测、电池开路电压曲线,这时就需要扩展卡尔曼滤波(Extended Kalman Filter, EKF)。

EKF 的工程价值在于:它用一阶泰勒展开把非线性系统局部线性化,从而复用卡尔曼滤波的最优估计框架。它不追求全局最优,而是在当前估计点附近构造一个可计算的线性近似,使滤波器能够在嵌入式算力受限的条件下实时运行。这也是它至今仍广泛用于飞控、导航、目标跟踪和工业控制的原因。

本节核心问题:EKF 解决什么工程问题?它和标准卡尔曼滤波的边界在哪里?学完本课程后,你应能独立完成一个非线性状态估计系统的建模、调参、验证与排障。

一、从线性到非线性:EKF 的核心原理

标准卡尔曼滤波假设状态转移和观测都是线性映射:

x_k = F x_{k-1} + B u_k + w_k
z_k = H x_k + v_k

其中 w_k 和 v_k 是零均值高斯噪声。EKF 将上述模型推广为非线性函数:

x_k = f(x_{k-1}, u_k) + w_k
z_k = h(x_k) + v_k

由于 f 和 h 非线性,高斯分布经过非线性变换后不再保持高斯。EKF 的做法是在当前估计值处求雅可比矩阵,用一阶线性化近似传播均值和协方差:

F_k = ∂f/∂x |_{x=x_{k-1}}
H_k = ∂h/∂x |_{x=x_k^-}
P_k^- = F_k P_{k-1} F_k^T + Q
K_k = P_k^- H_k^T (H_k P_k^- H_k^T + R)^{-1}
x_k = x_k^- + K_k (z_k - h(x_k^-))
P_k = (I - K_k H_k) P_k^-

这组公式是 EKF 的工程骨架。理解它的关键不是背公式,而是理解每一步的物理含义:F_k 描述状态不确定性如何随时间传播,H_k 描述观测对状态的敏感度,K_k 决定“信预测还是信观测”,Q 和 R 则决定滤波器的动态响应与平滑程度。

EKF 工程闭环与课程学习地图 真实系统 无人机 / 机器人 / 电池 非线性动力学与观测 建模 f(x,u) 与 h(x) 雅可比 F、H 预测 x⁻ = f(x,u) P⁻ = F P Fᵀ + Q 更新 K = P⁻Hᵀ(HP⁻Hᵀ+R)⁻¹ x = x⁻ + K(z − h(x⁻)) 闭环反馈:估计结果驱动下一时刻预测 先修知识 • 线性代数:矩阵、转置、逆 • 概率统计:高斯、协方差 • 微积分:偏导与泰勒展开 • 卡尔曼滤波基础 • Python / MATLAB 编程 • 基本传感器与坐标系概念 课程主线 1. 非线性建模与线性化 2. 雅可比推导与实现 3. Q / R 调参与一致性 4. 数值稳定性与工程排障 5. 多传感器融合案例 6. 从 EKF 到 UKF / 因子图 工程能力目标 • 能写出状态与观测方程 • 能推导并验证雅可比 • 能整定 Q、R 与初始 P • 能分析发散与滞后原因 • 能完成仿真与实测验证 • 能评估 EKF 适用边界

二、方法流程:EKF 一个完整周期的工程步骤

把 EKF 落到代码和工程流程中,一个周期通常包含以下步骤。注意,工程实现中最容易出错的不是公式本身,而是坐标系、时间戳和雅可比符号。

  1. 状态定义:明确要估计哪些量,例如位置、速度、姿态、零偏。状态维数决定矩阵规模。
  2. 预测:用非线性状态方程 f 推进状态,用雅可比 F 传播协方差,并叠加过程噪声 Q。
  3. 观测预测:用观测方程 h 计算预期观测值,并求雅可比 H。
  4. 计算增益:由 P⁻、H、R 计算卡尔曼增益 K。
  5. 更新:用新息 z − h(x⁻) 修正状态,并更新协方差。
  6. 一致性检查:观察新息是否为零均值白噪声,协方差是否与实际误差匹配。
工程提示:如果观测方程中的角度存在多值性,新息计算必须做角度归一化,否则滤波器会在 ±π 附近产生跳变。

三、典型工程场景:EKF 在做什么

以四旋翼姿态估计为例,状态可定义为姿态四元数和陀螺零偏,观测为加速度计和磁力计。陀螺积分提供高频预测,加速度计和磁力计提供低频修正。EKF 在这里的作用是:在振动、磁干扰和动态加速度并存的情况下,给出连续、平滑且可用的姿态估计。

再以组合导航为例,状态包含位置、速度、姿态和惯性器件零偏,观测为卫星定位结果。EKF 通过 H 矩阵把卫星位置观测映射到状态空间,同时利用 Q 描述惯性器件的随机游走。工程上常见的现象是:Q 太小会导致滤波器过度信任惯性预测,卫星修正被削弱;Q 太大会导致估计噪声明显增大。

场景状态量观测量主要难点
四旋翼姿态四元数、陀螺零偏加速度计、磁力计动态加速度与磁干扰
组合导航位置、速度、姿态、零偏GNSS 位置/速度坐标系与时间同步
电池 SOC荷电状态、极化电压电压、电流、温度非线性 OCV 曲线
目标跟踪位置、速度、加速度雷达斜距、方位角观测非线性与角度跳变

四、常见误区与复盘

初学者最容易把 EKF 当成“万能滤波”。实际上,EKF 的线性化只在估计点附近有效。如果初始误差过大、非线性过强,或者雅可比推导错误,滤波器可能发散。以下误区值得提前警惕:

  • 误区一:忽略雅可比验证。解析雅可比必须用数值差分交叉验证,否则符号错误很难通过观察发现。
  • 误区二:Q 和 R 凭感觉设置。它们应与传感器噪声和过程扰动有物理对应关系,最好通过 Allan 方差或实验统计获得初值。
  • 误区三:不做一致性检验。新息协方差与理论协方差应大致匹配,否则滤波器可能“看起来收敛,实际不可信”。
  • 误区四:忽略数值稳定性。协方差更新建议使用 Joseph 形式或平方根滤波,避免矩阵失去正定性。
排障顺序建议:先查时间戳与坐标系,再查雅可比符号,然后查 Q/R 量级,最后查数值实现。多数“EKF 发散”问题并不在公式,而在工程细节。

本课程后续将沿着“建模—线性化—实现—调参—验证—排障”的主线展开,每一章都围绕可运行的工程案例推进。学习时建议同时准备一份仿真代码和一组真实数据,把每个公式都落到可观测的曲线和指标上。只有把数学、代码和物理对象对应起来,EKF 才会从一组矩阵公式变成真正可用的工程工具。