3、软件参数调优:EKF2 核心参数详解
电调校准完了,飞控也重启了,结果一解锁飞机还是飘?
别急。很多时候,定位漂移的根子不在硬件,而在 EKF2 的这几个参数上。我见过不少团队,换 GPS、换飞控板,折腾半天,最后发现就是 EKF2_AID_MASK 没设对。
今天咱们就把它讲透。
3.1 EKF2_AID_MASK:告诉 EKF 用哪些传感器
这个参数说白了,就是一张“传感器准入名单”。EKF2 会根据这个掩码决定:GPS 数据能不能用?光流能不能用?视觉能不能用?
核心原则:只开启你实际安装且可靠的传感器。多开一个不可靠的源,EKF 就会被“带偏”。
| Bit 位 | 值 | 含义 | 我的建议 |
|---|---|---|---|
| Bit 0 | 1 | 启用 GPS 位置/速度 | 必开(除非室内) |
| Bit 1 | 2 | 启用光流 | 有光流才开 |
| Bit 2 | 4 | 启用视觉位置 | 谨慎,需标定 |
| Bit 3 | 8 | 启用视觉速度 | 同上 |
| Bit 4 | 16 | 启用外部航向 | 一般不开 |
| Bit 5 | 32 | 启用外部气压计 | 很少用 |
我的习惯:室外标准配置,EKF2_AID_MASK 设成 1(仅 GPS)。如果装了光流,设成 3(1+2)。千万别图省事直接设成 63 全开——我吃过这个亏,飞机在天上乱窜,最后发现视觉没标定,EKF 被假数据污染了。
3.2 EKF2_HGT_REF:高度参考源的选择
高度漂移是另一个常见问题。EKF2_HGT_REF 决定了 EKF 用哪个传感器作为高度主参考。
| 值 | 参考源 | 适用场景 | 注意 |
|---|---|---|---|
| 0 | 气压计 | 室外飞行 | 受温度、气流影响 |
| 1 | GPS 高度 | 开阔环境 | 精度差,易跳变 |
| 2 | 激光雷达/声纳 | 室内/低空 | 量程有限 |
| 3 | 视觉高度 | VIO 系统 | 需标定 |
| 4 | 气压计+GPS 融合 | 默认推荐 | 兼顾动态与稳态 |
我个人建议,大多数情况下用 4(气压计+GPS 融合)。纯气压计在快速爬升时会滞后,纯 GPS 高度又太糙。融合一下,两边互补。
我曾经遇到过一个案例:用户反映飞机悬停时高度忽上忽下,换了三个气压计都没用。最后发现是 EKF2_HGT_REF 设成了 1(纯 GPS),而当天卫星几何分布很差,高度误差达到 ±5 米。改成 4 之后,问题立刻消失。
3.3 EKF2_MAG_TYPE:磁力计融合策略
磁力计是 EKF 里最“娇气”的传感器。EKF2_MAG_TYPE 控制着磁力计数据怎么参与航向估计。
| 值 | 模式 | 说明 |
|---|---|---|
| 0 | 自动 | 由 EKF 自行判断 |
| 1 | 仅 3D 磁力计 | 标准模式 |
| 2 | 仅 2D 磁力计 | 忽略倾角补偿 |
| 3 | 无磁力计 | 纯 GPS 航向 |
关键点:如果你发现飞机在悬停时不断“画圈”或者航向慢慢偏转,多半是磁力计干扰。这时候可以试试 EKF2_MAG_TYPE = 3,让 EKF 只用 GPS 速度推算航向。代价是起飞前需要先让飞机移动一段距离才能收敛。
3.4 通过 QGC 实时调整
参数改完不用重启飞控?对,QGC 支持在线调参。
- 打开 QGC,连接飞控。
- 进入 参数 页面,搜索 EKF2_。
- 修改目标参数,点击 保存。
- 观察 HUD 上的 EKF 状态指示器——如果变成绿色,说明参数生效。
一个小技巧:改完 EKF2_AID_MASK 后,最好在 QGC 的 MAVLink Inspector 里检查一下 GPS_GLOBAL_ORIGIN 和 EKF_STATUS_REPORT 这两个消息。前者告诉你 EKF 的参考原点,后者告诉你当前融合了哪些传感器。如果发现不该有的传感器被激活了,赶紧回头检查掩码。
3.5 知识体系总览
下面这张图帮你理清三个参数的关系:
3.6 调优实战建议
嗯,这里要注意。参数调优不是一蹴而就的。我一般按这个顺序来:
- 第一步:确认 EKF2_AID_MASK。关掉所有不用的传感器源。
- 第二步:检查 EKF2_HGT_REF。如果高度漂移明显,先切到 4 试试。
- 第三步:观察航向稳定性。如果飞机“画圈”,考虑 EKF2_MAG_TYPE = 3。
重要提醒:每次只改一个参数。改完后在 QGC 里观察至少 30 秒,看 EKF 状态是否稳定。如果同时改多个参数,出了问题你根本不知道是哪个引起的——我当年就犯过这个错,排查了整整两天。
这三个参数调好了,定位漂移的问题基本能解决七八成。剩下的,就要看传感器本身的硬件质量了。