4. 传感器校准与EKF初始化:加速度计/陀螺仪/磁力计校准流程、EKF3参数配置、传感器数据可视化(mavlink-inspector)

传感器校准,说白了就是给飞控的「眼睛」和「耳朵」做一次精准的配镜。你想想看,如果加速度计告诉你飞机是水平的,实际上它已经歪了10度,那飞控再怎么调参也救不回来。

我个人习惯把校准分成三步走:先校准加速度计和陀螺仪,再处理磁力计,最后才是EKF参数配置。顺序搞反了,后面全是白忙活。

4.1 加速度计与陀螺仪校准

加速度计校准的目标,是消除零偏和尺度因子误差。说白了,就是让传感器在静止时能准确读出1g的重力加速度,在各个轴向上都准。

核心原则:加速度计校准必须在完全静止、水平的地面上进行。任何振动都会污染数据。

4.1.1 六面校准法(Level Calibration)

这是最常用的方法。你需要把飞控的六个面分别朝上放置,每个面保持静止几秒钟。

  1. 将飞控水平放置(Z轴朝上),点击校准开始
  2. 等待状态提示,然后翻转至Z轴朝下
  3. 依次将X轴朝上、X轴朝下、Y轴朝上、Y轴朝下
  4. 每个位置保持静止3-5秒
  5. 校准完成后,检查ACCx/ACCy/ACCz的偏移量是否在±0.05以内

我的经验:我在项目中遇到过一台飞控,怎么校准都偏0.1以上。后来发现是减震海绵太软,导致传感器在静止时还有微小的晃动。换成硬质安装座后,一次通过。

4.1.2 陀螺仪校准

陀螺仪校准相对简单,核心就是让飞控完全静止,采集零偏值。

  • 确保飞控放置在绝对水平的台面上
  • 在Mission Planner中执行「陀螺仪校准」
  • 等待10-15秒,直到状态显示完成
  • 检查GYRx/GYRy/GYRz的偏移量,正常应在±0.01以内

注意:陀螺仪校准最怕的是「你以为它静止了」。我曾经在调试时把飞控放在桌上,但桌子下面就是空调出风口,微弱的振动让陀螺仪零偏一直飘。后来我直接放地板上,一次搞定。

4.2 磁力计校准

磁力计校准,是传感器校准里最容易出幺蛾子的环节。为什么?因为地磁场本来就弱,周围任何铁磁性物质都会干扰它。

4.2.1 旋转校准法

标准做法是让飞控在空中画「8」字,或者绕三个轴各旋转360度。

  1. 进入磁力计校准模式
  2. 手持飞控,先绕Z轴缓慢旋转两圈
  3. 再绕Y轴旋转两圈
  4. 最后绕X轴旋转两圈
  5. 确保每个轴都覆盖了完整的360度
  6. 校准完成后,检查MAGx/MAGy/MAGz的偏移量

关键指标:校准完成后,查看磁力计数据的模长(sqrt(x²+y²+z²)),应该在0.4-0.6高斯之间。如果偏差超过0.1,说明校准不充分或环境有干扰。

4.2.2 常见干扰源排查

干扰源 典型表现 解决方法
电机/电调 上电后磁力计数据突变 增加磁力计与电机的距离,或使用外置磁力计
大电流导线 数据随油门变化 将电源线远离磁力计,使用双绞线
金属螺丝/支架 某个方向数据异常 更换为不锈钢或尼龙材质
地面钢筋 室内校准正常,室外异常 在室外开阔地重新校准

避坑指南:我曾经在停车场旁边校准磁力计,结果数据一直不对。后来才发现地下的钢筋网把磁场搅得一塌糊涂。记住,磁力计校准一定要在开阔、远离建筑物的室外进行。

4.3 EKF3参数配置

EKF3是ArduPilot的扩展卡尔曼滤波器,负责把传感器数据融合成姿态和位置估计。参数配置不对,传感器校准得再好也没用。

4.3.1 核心参数解读

参数名 作用 推荐值 说明
EK3_ENABLE 启用EKF3 1 必须设为1,否则使用EKF2
EK3_SRCn_POSXY 位置源选择 3 (GPS) 室内可用光流或视觉
EK3_SRCn_VELXY 速度源选择 3 (GPS) 与位置源保持一致
EK3_SRCn_POSZ 高度源选择 1 (气压计) 室内可用激光或声纳
EK3_SRCn_VELZ 垂直速度源 1 (气压计) 通常与高度源一致
EK3_MAG_CAL 磁力计融合策略 3 (融合偏航) 只融合偏航,减少干扰
EK3_GLITCH_RAD GPS跳变检测半径 5.0 (米) 超过此值视为跳变,自动隔离

4.3.2 参数配置流程

  1. 先将所有EK3_SRCn_*参数设为默认值
  2. 根据传感器配置选择对应的源(GPS/光流/视觉)
  3. 设置EK3_MAG_CAL为3,只融合偏航
  4. 设置EK3_GLITCH_RAD为5.0,防止GPS跳变
  5. 保存参数并重启飞控

重要:EKF3参数修改后,必须重启飞控才能生效。而且重启后需要重新进行传感器校准,因为EKF3会重新初始化协方差矩阵。

4.4 传感器数据可视化(mavlink-inspector)

校准完参数,怎么知道效果好不好?光看参数面板不够,得看实时数据流。mavlink-inspector就是干这个的。

4.4.1 启动mavlink-inspector

在Mission Planner中,通过「飞行数据」→「MAVLink Inspector」打开。你会看到所有传感器数据的实时波形。

  • 加速度计:看三个轴的波形是否平滑,有没有毛刺
  • 陀螺仪:看零偏是否稳定,有没有漂移
  • 磁力计:看模长是否稳定,有没有周期性波动
  • EKF状态:看协方差是否收敛,位置/速度误差是否在合理范围

4.4.2 关键波形解读

波形特征 可能原因 处理方式
加速度计有高频毛刺 振动过大或安装松动 检查减震、紧固螺丝
陀螺仪零偏缓慢漂移 温度变化或传感器老化 重新校准,检查散热
磁力计模长波动>0.1 电磁干扰或校准不充分 重新校准,排查干扰源
EKF协方差不收敛 传感器数据不一致 检查传感器源配置

我的习惯:每次校准完,我都会在mavlink-inspector里盯着看5分钟。如果波形稳定,我才敢上电起飞。有一次我发现磁力计波形每10秒跳一次,排查了半天发现是手机放在旁边,蓝牙信号干扰了磁力计。

4.5 校准流程总览

下面这张图,是我自己总结的校准流程。每次做新项目,我都会按这个顺序走一遍。

传感器校准与EKF初始化流程 传感器校准与EKF初始化流程 加速度计校准 陀螺仪校准 磁力计校准 EKF参数配置 数据可视化验证 通过? 校准完成 重新校准 提示:任何一步失败,都建议从头开始,不要跳过前面的步骤 EKF参数修改后必须重启飞控,重启后需重新验证传感器数据

嗯,到这里,传感器校准和EKF初始化的核心内容就讲完了。记住,校准不是一次性的工作。每次更换硬件、改变安装位置、或者发现飞行姿态异常时,都应该重新走一遍这个流程。