EKF核心概念:状态向量、协方差矩阵、预测与更新步骤的通俗理解

说实话,很多飞控开发者一听到「卡尔曼滤波」就头大。我当年刚接触ArduPilot时也是这样,看着EKF源码里一堆矩阵运算,心里直打鼓。后来调了几年实机,踩了不少坑,才慢慢摸清门道。

这一章,咱们就把EKF的四个核心概念掰开揉碎讲清楚。不堆公式,不讲天书,用你能听懂的大白话。

2.1 状态向量:飞控在猜什么?

EKF本质上是个「猜谜游戏」。飞控不知道自己的真实状态,只能靠传感器数据去猜。那它猜的是什么呢?

状态向量,就是飞控当前猜测的所有变量。在ArduPilot的EKF2/EKF3里,典型的状态向量包含这些:

状态类别 具体变量 通俗理解
位置 北、东、地 (NED) 飞机在三维空间中的坐标
速度 北向、东向、地向速度 飞机往哪个方向飞、多快
姿态 四元数 (q0,q1,q2,q3) 飞机当前是正着飞还是歪着飞
陀螺零偏 三轴陀螺仪偏差 陀螺仪「偷懒」了多少
加速度计零偏 三轴加速度计偏差 加速度计「撒谎」了多少
地磁 磁场矢量或偏角 地球磁场在飞机坐标系下的投影

关键点:状态向量的大小决定了EKF的计算量。EKF2默认用23维状态,EKF3可以扩展到更多。我个人习惯在调参时先确认状态维度,否则后面排查问题会一头雾水。

2.2 协方差矩阵:飞控有多自信?

光有猜测值还不够,飞控还得知道自己猜得准不准。这就是协方差矩阵的作用。

你可以把协方差矩阵想象成一张「不确定度地图」。矩阵对角线上的数字,表示每个状态变量的方差——数字越大,说明飞控对这个变量的猜测越没底。

举个例子:

  • 如果GPS信号很好,位置协方差会很小,飞控很自信
  • 如果GPS丢了,位置协方差会迅速增大,飞控开始「心虚」
  • 如果飞机剧烈震动,加速度计协方差也会变大

非对角线元素呢?它们表示不同状态之间的相关性。比如位置和速度肯定是相关的——位置变化快,速度就大。EKF利用这些相关性来「交叉验证」各个状态。

调参小技巧:在Mission Planner里查看EKF的协方差值,如果某个状态协方差突然跳变,说明对应的传感器可能出问题了。我曾经遇到过一架飞机,协方差一直偏大,排查了半天发现是GPS天线松了。

2.3 预测步骤:飞控的「直觉」

预测步骤,说白了就是飞控凭「直觉」猜下一秒的状态。它用当前的状态和IMU数据,推算下一时刻的状态。

这个过程分两步:

  1. 状态预测:用加速度计和陀螺仪的数据,结合运动方程,算出下一时刻的位置、速度、姿态
  2. 协方差预测:同时更新不确定度——因为IMU有噪声,预测后的协方差会变大

为什么会变大?你想想看,IMU数据本身就有误差,用有误差的数据去推算,结果肯定越来越不准。就像你闭着眼睛走路,走一步还行,走十步就偏到姥姥家去了。

注意:预测步骤完全依赖IMU。如果IMU有严重的零偏或噪声,预测出来的状态会迅速发散。这就是为什么EKF需要不断用其他传感器(GPS、磁力计、气压计)来「纠偏」。

2.4 更新步骤:飞控的「纠偏」

预测完了,飞控会问自己一句:「我猜得对吗?」

更新步骤就是拿实际传感器数据来验证猜测。如果GPS说位置在A点,但EKF预测在B点,那就要修正。

具体流程:

  • 计算残差:实际观测值减去预测值,差值就是「偏差」
  • 计算卡尔曼增益:这是个权重系数,决定「信传感器多一点,还是信预测多一点」
  • 更新状态:用残差乘以增益,加到预测状态上
  • 更新协方差:修正后的不确定度会变小

卡尔曼增益是关键。如果传感器很准(协方差小),增益就大,飞控更相信传感器。如果传感器噪声大(协方差大),增益就小,飞控更相信自己的预测。

核心逻辑:预测让不确定度变大,更新让不确定度变小。EKF就在这两个步骤之间来回切换,不断收敛到真实状态。

2.5 一张图看懂EKF流程

下面这张SVG图,把整个EKF的预测-更新循环画清楚了。建议你多看几遍,理解这个循环,后面调参就顺了。

EKF预测-更新循环流程图 初始状态向量 + 协方差 预测步骤(时间更新) 用IMU数据推算下一时刻状态 协方差增大(不确定度上升) 更新步骤(观测更新) 用GPS/磁力计/气压计修正状态 协方差减小(不确定度下降) 输出最优估计状态 下一时刻循环 💡 说明: 预测步骤让不确定度变大,更新步骤让不确定度变小。EKF就在这两个步骤之间来回切换,不断收敛到真实状态。

2.6 调参时你需要关注什么?

理解了核心概念,调参就有方向了。我个人总结了几条经验:

  • 关注协方差收敛速度:如果EKF启动后协方差迟迟不收敛,说明传感器噪声参数设置不合理
  • 注意残差大小:残差过大说明预测和观测打架了,可能是传感器故障或参数错误
  • 检查状态向量维度:确认EKF2还是EKF3,以及启用了哪些状态

避坑指南:我曾经遇到过一架飞机,EKF协方差一直不收敛,排查了三天。最后发现是磁力计校准没做,导致地磁状态一直在漂。所以,调参前一定要确保传感器校准到位。

嗯,这一章的内容就到这儿。核心概念搞懂了,后面讲具体参数怎么调,你就能理解每个参数在改什么了。