4、EKF2参数详解:核心参数与调优实战

EKF2,说白了就是飞控的「大脑」。它把GPS、IMU、视觉这些传感器的数据揉在一起,算出一个最靠谱的位置和姿态。我见过不少飞手,硬件堆得挺猛,但EKF2参数没调好,飞出来精度就是上不去。嗯,这一章咱们就把EKF2的核心参数掰开揉碎讲清楚。

4.1 EKF2核心参数一览

EKF2的参数很多,但真正影响测绘精度的,其实就那么十几个。我习惯把它们分成三组:GPS相关、IMU相关、视觉融合相关。下面这张图能帮你快速建立整体认知。

EKF2 核心参数知识体系 EKF2 状态估计器 GPS 融合参数 EKF2_GPS_POS_X/Y/Z EKF2_GPS_VEL_NOISE EKF2_GPS_POS_NOISE IMU 融合参数 EKF2_IMU_POS_X/Y/Z EKF2_ACC_NOISE EKF2_GYR_NOISE 视觉融合参数 EKF2_EV_POS_X/Y/Z EKF2_EV_NOISE EKF2_EV_DELAY 调优核心:先校准硬件安装位置,再调噪声参数,最后微调延迟 —— 顺序错了,效果会大打折扣

4.2 GPS参数:位置与速度的信任度

GPS参数决定了EKF2有多「相信」GPS的数据。你想想看,如果GPS信号不好,你还给它很高的权重,那定位肯定飘。

4.2.1 安装位置补偿:EKF2_GPS_POS_X/Y/Z

这三个参数是GPS天线相对于飞控重心的物理偏移。单位是米。我见过太多人忽略这个,结果飞机悬停时位置一直在漂。说白了,GPS天线装在机尾,飞控在中心,你不告诉EKF2这个偏移,它算出来的位置就是错的。

实测案例: 我去年帮一个客户调测绘机,他用的机架GPS天线在机尾后方30cm。默认参数是0,结果RTK定位精度始终在10cm以上。我把EKF2_GPS_POS_Y设为-0.3(假设Y轴朝后),精度直接进到3cm。

4.2.2 噪声参数:EKF2_GPS_POS_NOISE 与 EKF2_GPS_VEL_NOISE

这两个参数控制EKF2对GPS位置和速度的信任程度。数值越小,EKF2越信任GPS。

参数默认值测绘推荐值说明
EKF2_GPS_POS_NOISE1.0 m0.5 - 1.0 mRTK模式下可设0.3-0.5
EKF2_GPS_VEL_NOISE0.5 m/s0.3 - 0.5 m/s动态飞行时建议保持0.5

注意: 不要为了追求精度把噪声设得太低。我曾经在一个电磁干扰强的工地试过,把POS_NOISE设到0.2,结果EKF2直接发散,飞机差点飘走。建议从默认值开始,每次降20%,观察log里的innovation值。

4.3 IMU参数:加速度计与陀螺仪的信任度

IMU是EKF2的「内耳」。它更新频率高,但会漂。调IMU参数,本质上是平衡「短期精度」和「长期稳定性」。

4.3.1 IMU安装位置:EKF2_IMU_POS_X/Y/Z

和GPS一样,IMU也有物理偏移。虽然大多数飞控的IMU就在板子中心,但如果你用了外置IMU或者减震结构,这个值必须改。

4.3.2 加速度计噪声:EKF2_ACC_NOISE

这个参数影响EKF2对加速度计数据的信任度。数值越小,EKF2越依赖加速度计来估计姿态和位置。

  • 默认值: 0.01 m/s²
  • 测绘场景: 建议 0.008 - 0.015 m/s²
  • 高振动环境: 可以放宽到 0.02,防止振动导致估计发散

4.3.3 陀螺仪噪声:EKF2_GYR_NOISE

陀螺仪噪声决定了EKF2对角速度的信任度。我个人的习惯是,如果飞机在悬停时航向有缓慢漂移,先检查这个参数。

调参技巧: 在QGC的Mavlink Console里运行 ekf2 status,观察innovation值。如果GPS innovation大于1.0,说明EKF2不太信任GPS,可以适当降低GPS_NOISE。如果ACC innovation偏大,说明振动太大,应该先做减震,而不是硬调参数。

4.4 视觉融合参数:视觉定位的信任度

视觉融合是测绘精度的「倍增器」。但前提是你得把参数调对。我见过不少团队,视觉里程计跑得挺好,但EKF2就是不认,问题就出在延迟和噪声上。

4.4.1 视觉传感器位置:EKF2_EV_POS_X/Y/Z

视觉传感器(比如双目相机或视觉里程计模块)相对于飞控重心的偏移。这个必须精确测量,误差超过1cm就会影响融合效果。

4.4.2 视觉噪声:EKF2_EV_NOISE

视觉位置估计的噪声标准差。单位是米。不同视觉方案差异很大:

视觉方案推荐EKF2_EV_NOISE说明
Intel T2650.05 - 0.10 m室内效果较好,室外易受光照影响
VISLAM(如RTAB-Map)0.10 - 0.20 m取决于特征点质量
光流+声纳0.30 - 0.50 m精度有限,主要用于辅助

4.4.3 视觉延迟:EKF2_EV_DELAY

这是最容易踩坑的参数。视觉处理有延迟,从图像采集到位置输出,通常有20-100ms的延迟。EKF2需要知道这个延迟,才能正确对齐时间戳。

我曾经踩过的坑: 有一次用T265做室内测绘,定位总是跳变。查了两天log,发现EKF2_EV_DELAY设的是0(默认值),但实际T265的延迟在40ms左右。设成0.04之后,定位瞬间稳了。所以,一定要用log里的delay estimator工具去实测延迟,不要靠猜。

4.5 EKF2参数对定位精度的影响

参数调得好不好,直接体现在三个指标上:

  1. 位置精度: 水平位置误差(cm级 vs dm级)
  2. 姿态精度: 横滚俯仰误差(0.1° vs 0.5°)
  3. 航向精度: 偏航角漂移(°/min)

我习惯用下面这个表格来快速定位问题:

现象可能原因优先调整参数
悬停时位置漂移GPS噪声过大或安装偏移未补偿EKF2_GPS_POS_X/Y/Z, EKF2_GPS_POS_NOISE
飞行中高度跳动气压计受气流干扰或ACC噪声过小EKF2_ACC_NOISE, EKF2_BARO_NOISE
航向缓慢漂移磁力计干扰或GYR噪声过大EKF2_GYR_NOISE, EKF2_MAG_NOISE
视觉融合后位置跳变视觉延迟设置错误或噪声不匹配EKF2_EV_DELAY, EKF2_EV_NOISE

4.6 EKF2调优实战流程

下面是我自己总结的一套调优流程,按这个顺序走,基本不会出大问题。

  1. 第一步:硬件校准
    • 测量GPS、IMU、视觉传感器的物理偏移,写入EKF2_*_POS_X/Y/Z
    • 校准加速度计、陀螺仪、磁力计
  2. 第二步:飞行日志采集
    • 在典型测绘场景下飞一次,采集ulog文件
    • 确保包含悬停、直线飞行、转弯等动作
  3. 第三步:分析innovation
    • 用FlightPlot或PX4的ekf2_status模块查看各传感器的innovation值
    • 理想值应在±1.0以内,超过±2.0说明参数有问题
  4. 第四步:逐参数微调
    • 每次只改一个参数,改完飞一次看效果
    • 先调噪声参数,再调延迟参数
  5. 第五步:验证精度
    • 用RTK基站或已知控制点验证定位精度
    • 记录调参前后的误差对比

我的经验: 调参最忌讳「一次改一堆」。你想想看,如果同时改了GPS_NOISE和ACC_NOISE,飞出来精度变好了,你根本不知道是哪个参数起了作用。每次只改一个,改完飞一次,这是最笨但最有效的方法。

4.7 实战案例:从10cm到3cm

最后分享一个实际案例。上个月帮一个做电力巡检的团队调机,他们的测绘无人机用RTK+视觉融合,但定位精度一直在8-10cm徘徊。

我拿到log一看,发现两个问题:

  • EKF2_GPS_POS_Y设的是0,但GPS天线装在机头前方15cm处
  • EKF2_EV_DELAY设的是0.02,但实际视觉延迟是0.045

改完这两个参数,精度直接降到3cm以内。嗯,有时候问题就是这么简单,但你不看log根本发现不了。