一、EKF2概述与核心原理

各位同学好,我是你们的飞控算法讲师。今天咱们来聊聊PX4里最核心的传感器融合模块——EKF2。说实话,我接触飞控这么多年,EKF2是我见过最“聪明”也最“倔强”的算法。聪明在于它能从一堆噪声数据里提取出精准的姿态和位置,倔强在于参数没调好时,它能把飞机带沟里去。

嗯,咱们先搞清楚EKF2在PX4里到底是个什么地位。

1.1 EKF2在PX4中的地位

说白了,EKF2就是PX4飞控的“大脑中枢”。所有传感器数据——IMU、GPS、磁力计、气压计、光流、视觉里程计——最终都要汇聚到EKF2这里,由它统一处理,输出我们需要的姿态、位置、速度信息。

我个人习惯把飞控系统比作一个团队:

  • 传感器是“情报员”,各自汇报信息但都有噪声
  • EKF2是“指挥官”,综合各路情报做出最优判断
  • 控制器是“执行者”,根据指挥官的命令去干活

你看,指挥官要是判断错了,整个团队就乱套了。我在项目中遇到过好几次,飞机起飞后莫名其妙地往一边偏,排查到最后发现是EKF2的磁力计融合参数没调好。所以,理解EKF2的工作原理,是每个飞控工程师的必修课。

核心观点:EKF2是PX4中唯一同时融合IMU、GPS、磁力计、气压计、视觉等所有传感器的状态估计器。它的输出质量直接决定了飞控的稳定性和精度。

1.2 EKF2与LPE/EKF1的区别

很多新手会问:为什么PX4要搞这么多估计器?其实这是历史遗留问题。我刚开始做PX4开发时,用的还是EKF1和LPE。后来EKF2出来,基本就把它们淘汰了。

咱们用表格对比一下:

特性 EKF2 LPE EKF1
传感器支持 IMU、GPS、磁力计、气压计、光流、视觉里程计、测距仪 IMU、GPS、磁力计、气压计、测距仪 IMU、GPS、磁力计、气压计
多传感器融合 支持任意组合,动态切换 固定组合 固定组合
状态向量维度 24维(可扩展) 15维 15维
协方差管理 自适应协方差调整 固定协方差 固定协方差
故障检测 内置传感器故障检测与隔离 有限
当前状态 默认推荐,持续维护 已废弃 已废弃

你看,EKF2在传感器支持、灵活性、故障处理上都强太多了。我记得有一次在室内用光流定位,LPE死活融合不好,换成EKF2后问题迎刃而解。所以现在PX4官方也推荐大家直接用EKF2,别在LPE上浪费时间了。

我的建议:如果你还在用LPE或EKF1,赶紧迁移到EKF2。不仅功能更强,而且社区维护更积极,遇到问题也更容易找到解决方案。

1.3 状态向量与协方差矩阵

好,咱们进入正题。EKF2到底在估计什么?说白了,它维护了一个“状态向量”,里面包含了所有我们关心的物理量。

EKF2的24维状态向量长这样:

状态向量 x = [位置(3), 速度(3), 姿态四元数(4), 陀螺零偏(3), 加速度计零偏(3), 
              地磁(3), 风速(3), 气压计偏移(1), 测距仪偏移(1)]

嗯,这里要注意,姿态是用四元数表示的,不是欧拉角。为什么?因为四元数没有万向锁问题,而且计算更稳定。我在项目中吃过万向锁的亏,飞机俯仰到90度时,航向突然就乱跳了。从那以后,我对四元数就特别有好感。

除了状态向量,EKF2还维护了一个协方差矩阵P。这个矩阵描述了我们对每个状态估计的不确定度。你想想看:

  • 如果GPS信号好,位置协方差就小
  • 如果GPS丢了,位置协方差就慢慢变大
  • 如果IMU有噪声,速度协方差就会增大

协方差矩阵是EKF2的“自信指数”。它告诉算法:哪些信息可靠,哪些不可靠。算法会根据协方差的大小,自动调整对不同传感器的信任程度。

避坑指南:我曾经遇到过协方差矩阵发散的情况——所有对角线元素都变得巨大,导致EKF2完全不相信任何传感器。排查后发现是IMU数据异常,协方差更新时数值溢出。所以,监控协方差矩阵的对角线元素,是排查EKF2故障的第一步。

1.4 预测与更新两步走

EKF2的核心逻辑就两个步骤:预测和更新。说白了就是“先猜后改”。

咱们用一张流程图来展示这个过程:

EKF2 预测与更新流程 初始状态 x₀, P₀ 预测步骤(时间更新) 使用IMU数据 + 运动模型 预测下一时刻的状态和协方差 有观测数据? 更新步骤(观测更新) 使用GPS/磁力计/气压计等观测数据 修正预测的状态和协方差 跳过更新,直接使用预测结果 输出状态估计

你看这个流程,其实很直观:

  1. 预测步骤:用IMU数据(加速度计和陀螺仪)通过运动模型,推算下一时刻的状态。这一步频率很高,通常400-1000Hz。说白了就是“根据上一秒的状态,猜下一秒会变成什么样”。
  2. 更新步骤:当GPS、磁力计、气压计等传感器有数据时,用这些观测值来修正预测结果。这一步频率较低,比如GPS只有5-20Hz。说白了就是“用实际测量值来纠正猜测的偏差”。

这里有个关键点:预测步骤依赖IMU,更新步骤依赖其他传感器。如果IMU质量差,预测就会漂移;如果其他传感器噪声大,更新就会引入误差。我在项目中调试时,经常需要平衡这两者的权重。

调试技巧:当你发现EKF2输出有抖动时,先看预测步骤的IMU数据是否干净,再看更新步骤的传感器是否有异常。我曾经遇到一个案例,飞机悬停时高度一直在波动,排查后发现是气压计受到了螺旋桨气流干扰。把气压计移到远离螺旋桨的位置后,问题就解决了。

嗯,到这里,EKF2的核心原理就讲完了。总结一下:

  • EKF2是PX4的“大脑中枢”,负责融合所有传感器
  • 它比LPE和EKF1更强大、更灵活
  • 状态向量包含24个变量,协方差矩阵描述不确定度
  • 预测用IMU,更新用其他传感器,两步循环往复

下一章咱们会深入讲解EKF2的参数配置,包括怎么调协方差、怎么设置传感器权重。到时候我会分享一些实际项目中的调参案例,保证让你少走弯路。


专注资料整理