4. EKF参数总览:EKF_TYPE、AHRS_EKF_USE、EK2_/EK3_前缀参数家族

好,咱们进入EKF调参的第一道门——参数总览。很多新手一打开Mission Planner的参数树,看到满屏的EK2_和EK3_前缀就头大。我刚开始接触ArduPilot时也一样,心想这玩意儿怎么比Pixhawk的硬件连线还复杂?

其实没那么玄乎。你只要搞懂三个核心问题:用哪个EKF?怎么让它生效?每个参数家族管什么?今天咱们就把这三件事彻底说清楚。

4.1 EKF_TYPE:选对引擎,事半功倍

EKF_TYPE是定位引擎的“总开关”。它决定了飞控用哪套算法来融合传感器数据。目前主流就两个选项:

参数值 引擎 适用场景 我的建议
2 EKF2 经典四轴、固定翼、车船 稳定可靠,兼容性好
3 EKF3 多传感器融合、VTOL、高动态 新项目首选,功能更全

重要提醒:EKF_TYPE默认值因固件而异。ArduCopter 4.0之后默认是3,老版本可能是2。改这个参数后必须重启飞控,否则不生效。

我个人习惯:新飞机一律用EKF3。为什么?因为EKF3支持最多三个GPS、三个IMU同时输入,还能单独配置每个传感器的权重。我在做一款六旋翼物流无人机时,EKF3让GPS+光流+视觉的组合定位精度提升了30%以上。EKF2虽然稳,但扩展性差了点。

避坑指南:我曾经在Pixhawk 1上把EKF_TYPE从2改成3,结果起飞后飞机疯狂漂移。查了半天才发现——EKF3默认启用了双IMU融合,而我那个老飞控的第二个IMU根本没校准。所以切换引擎后,务必检查所有传感器状态。

4.2 AHRS_EKF_USE:让EKF真正接管姿态

这个参数很多人忽略,但它决定了飞控的“大脑”归谁管。

AHRS_EKF_USE控制是否用EKF的输出替代传统的DCM(方向余弦矩阵)姿态解算。说白了:

  • 设为0:只用DCM,EKF只输出位置和速度,姿态还是老算法管。
  • 设为1:EKF全面接管姿态、位置、速度。

你想想看,既然咱们都花精力调EKF了,干嘛不让它干全套?所以我建议永远设为1。除非你在做某些极低算力的飞控移植,否则没有理由不用EKF做姿态估计。

小技巧:如果你在日志里看到EKF_STATUS里flags始终没有置位“使用EKF姿态”,那八成是AHRS_EKF_USE没开。去检查一下,别在别的地方瞎折腾。

4.3 EK2_与EK3_参数家族:一张图看懂

这两个前缀下的参数加起来上百个。但别慌,它们有清晰的分类逻辑。我画了张图,帮你一眼看透:

EK2_ / EK3_ 参数家族结构图 EKF核心引擎 传感器配置 噪声参数 使能开关 输出控制 GPS/光流/视觉 气压计/磁力计 空速/测距 位置/速度噪声 姿态/角速率噪声 陀螺/加计噪声 GPS使能 光流使能 视觉/测距使能 延迟补偿 磁力计融合模式 高度源选择 每个分支下都有具体参数,例如 EK2_GPS_TYPE、EK3_MAG_CAL、EK2_VELNE_NOISE EKF3 比 EKF2 多出“视觉/雷达”等现代传感器支持 调参口诀:先配传感器 → 再调噪声 → 最后管输出

4.4 参数家族速查表

下面这张表是我在实际项目中整理的“高频调参清单”。你不需要背,但调参时拿出来对照,效率翻倍。

参数前缀 分类 典型参数 一句话作用
EK2_ / EK3_ 传感器使能 GPS_TYPE, FLOW_ENABLE, RNG_ENABLE 告诉EKF用哪些传感器
噪声模型 VELNE_NOISE, ACC_NOISE, GYR_NOISE 定义传感器“有多不准”
融合控制 MAG_CAL, HGT_MODE, DELAY 控制融合策略和时序

我的习惯:每次拿到新飞机,我会先把所有_ENABLE参数过一遍。确保该开的传感器都开了,不该开的别乱开。比如你没装光流,就别把EK3_FLOW_ENABLE设为1,否则EKF会一直等光流数据,导致定位发散。

4.5 实战:如何快速定位问题参数

假设你的飞机在空中高度漂移,你会怎么查?

  1. 先看HGT_MODE:高度源是气压计还是GPS?EKF3默认用气压计,但如果气压计坏了而你没改,高度必然漂。
  2. 再看BARO_NOISE:气压计噪声太大,EKF会不信任它,转而依赖加速度积分,越积越飘。
  3. 最后检查RNG_ENABLE:如果你装了测距雷达但没使能,EKF就少了一个关键的高度修正源。

你看,顺着参数家族的分类去排查,思路就清晰了。我曾经帮一个用户远程调试,他抱怨飞机悬停时上下晃动。我让他把EK3_BARO_NOISE从默认的0.5改成1.2,问题立刻解决。说白了,就是EKF太相信那个有问题的气压计了。

注意:EKF2和EKF3的参数虽然前缀不同,但很多参数名和含义是相同的。比如EK2_GPS_TYPE和EK3_GPS_TYPE功能一样。但别混用——你改EK2_的参数对EKF3无效,反之亦然。

4.6 本章小结

咱们今天把EKF参数体系拆成了三块:

  • EKF_TYPE:选引擎,新项目无脑EKF3。
  • AHRS_EKF_USE:让EKF全面接管,别犹豫。
  • EK2_/EK3_参数家族:传感器使能→噪声调参→融合控制,三步走。