1. 课程导入
当你第一次把一架多旋翼或固定翼无人机切到Loiter、Auto或RTL模式,飞控真正依赖的并不是GPS给出的那一个经纬度点,而是EKF3在后台融合出来的“位置、速度、姿态、航向”这一整套状态估计。ArduPilot之所以能在GPS短时丢失、磁罗盘受扰、气压计漂移的情况下仍然保持稳定飞行,核心就在于EKF3这套24状态扩展卡尔曼滤波器。本课程不讨论“怎么装桨、怎么校准遥控器”,而是聚焦一个工程问题:如何让EKF3在真实飞行中持续输出可信的导航状态,并在它不可信时及时发现、正确处置。
一、核心原理:EKF3在ArduPilot中的位置
ArduPilot的导航栈可以粗略分为三层:传感器层(IMU、磁罗盘、气压计、GPS、光流、视觉、空速)、估计层(EKF3)、控制层(位置控制器、姿态控制器、电机混控)。EKF3位于中间,它把不同频率、不同噪声特性、不同失效模式的传感器数据统一到同一个状态向量中,用预测—更新两步递推输出连续、平滑、可用的导航解。
EKF3的状态量包括位置、速度、姿态四元数、陀螺零偏、加速度计零偏、地磁矢量、风估计、气压计偏置等,典型配置下为24阶。它内部并行运行多个“核心”(core),每个核心使用不同的传感器组合与门限,由EKF选择逻辑根据创新序列、GPS质量、罗盘一致性等指标投票选出主核心。这意味着:EKF3不是单一滤波器,而是一组带健康管理的滤波器集群。
二、方法流程:从传感器到可用导航解
理解EKF3的工作链路,有助于后续调参与排障。其数据流可概括为:
- IMU以高频(通常1kHz以上)做惯性递推,提供预测步;
- 磁罗盘、气压计、GPS、光流、视觉等以较低频率做量测更新;
- 每次更新计算创新(测量值减预测值),并按门限判断是否接受;
- 多核心并行运行,EKF选择逻辑根据创新、GPS状态、罗盘一致性打分;
- 主核心输出位置、速度、姿态、航向,供控制层与日志记录使用。
下面这段参数片段来自典型多旋翼配置,展示了EKF3最常被调整的入口:
EK3_ENABLE = 1
EK3_PRIMARY = 0
EK3_IMU_MASK = 3 # 使用IMU0与IMU1
EK3_GPS_MASK = 3 # 使用GPS0与GPS1
EK3_SRC1_POSXY = 3 # 位置XY来源:GPS
EK3_SRC1_VELXY = 3 # 速度XY来源:GPS
EK3_SRC1_POSZ = 1 # 高度来源:气压计
EK3_SRC1_YAW = 1 # 航向来源:磁罗盘
EK3_GLITCH_RAD = 25 # 位置跳变门限(米)
这些参数决定了“谁参与融合、谁作为主源、异常时如何降级”。课程后续会逐项展开,但导入阶段先建立整体印象:EKF3的可靠性,一半来自滤波器本身,一半来自你对源选择与门限的配置。
三、课程整体框架与实战路线
本课程共30章,按“认知—配置—观测—排障—实战”五段推进。下表给出整体路线,便于你建立学习地图:
| 阶段 | 章节主题 | 核心产出 |
|---|---|---|
| 认知 | EKF3原理、状态量、多核心机制 | 能说清EKF3在导航栈中的位置 |
| 配置 | 源选择、IMU/GPS掩码、门限参数 | 能按机型配置EK3参数 |
| 观测 | 日志字段、创新、方差、核心切换 | 能从日志判断EKF健康度 |
| 排障 | GPS丢失、罗盘受扰、高度跳变、EKF失败 | 能定位并处置典型故障 |
| 实战 | 多旋翼/固定翼案例、飞行复盘 | 能完成一次完整EKF调优 |
学习目标可以归纳为四条:第一,理解EKF3的状态估计与多核心选择逻辑;第二,掌握EK3关键参数的工程含义与配置方法;第三,能够通过日志与地面站判断EKF是否可信;第四,能够在真实故障场景中做出正确处置,而不是盲目重启或关闭EKF。
四、案例与场景:为什么EKF3值得单独学
设想一个典型场景:多旋翼在Auto任务中飞入城市峡谷,GPS卫星数从14降到6,HDOP升高,随后GPS位置出现约30米跳变。若没有EKF3的健康管理,飞控会直接采信跳变位置,飞机可能瞬间“以为”自己偏航而猛打舵。EKF3的做法是:计算GPS位置创新,若超过EK3_GLITCH_RAD等门限则拒绝该量测,同时依靠IMU与气压计继续递推,并在GPS恢复后重新收敛。若GPS长时间不可用,EKF会选择无GPS核心,触发EKF failsafe,切换飞行模式或降落。
另一个常见场景是磁罗盘受扰。飞机起飞后航向缓慢漂移,EKF3会通过磁罗盘与GPS航向、IMU积分航向的一致性检查发现异常,降低磁罗盘权重甚至切换核心。若你从未看过XKF1、XKF2、XKF3、XKF4这些日志字段,就很难判断问题出在罗盘、GPS还是参数配置。
五、常见误区与复盘要点
初学者最容易陷入三个误区。其一,把EKF3当成“黑盒”,只调PID不关注估计质量,结果姿态控制再好,位置环仍然抖动。其二,一遇到EKF报错就关闭EKF或降低门限,掩盖了真正的传感器故障。其三,只看GPS卫星数,不看创新与方差,误以为“星多就一定准”。
正确的复盘方式是:每次飞行后检查EKF核心是否发生切换、创新是否长期偏大、方差是否收敛、GPS与罗盘一致性是否正常。把这些指标与飞行表现对应起来,才能形成工程判断力。