4. 传感器校准与EKF初始化:加速度计/陀螺仪/磁力计校准流程、EKF3参数配置、传感器数据可视化(mavlink-inspector)
传感器校准,说白了就是给飞控的「眼睛」和「耳朵」做一次精准的配镜。你想想看,如果加速度计告诉你飞机是水平的,实际上它已经歪了10度,那飞控再怎么调参也救不回来。
我个人习惯把校准分成三步走:先校准加速度计和陀螺仪,再处理磁力计,最后才是EKF参数配置。顺序搞反了,后面全是白忙活。
4.1 加速度计与陀螺仪校准
加速度计校准的目标,是消除零偏和尺度因子误差。说白了,就是让传感器在静止时能准确读出1g的重力加速度,在各个轴向上都准。
核心原则:加速度计校准必须在完全静止、水平的地面上进行。任何振动都会污染数据。
4.1.1 六面校准法(Level Calibration)
这是最常用的方法。你需要把飞控的六个面分别朝上放置,每个面保持静止几秒钟。
- 将飞控水平放置(Z轴朝上),点击校准开始
- 等待状态提示,然后翻转至Z轴朝下
- 依次将X轴朝上、X轴朝下、Y轴朝上、Y轴朝下
- 每个位置保持静止3-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度。
- 进入磁力计校准模式
- 手持飞控,先绕Z轴缓慢旋转两圈
- 再绕Y轴旋转两圈
- 最后绕X轴旋转两圈
- 确保每个轴都覆盖了完整的360度
- 校准完成后,检查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 参数配置流程
- 先将所有EK3_SRCn_*参数设为默认值
- 根据传感器配置选择对应的源(GPS/光流/视觉)
- 设置EK3_MAG_CAL为3,只融合偏航
- 设置EK3_GLITCH_RAD为5.0,防止GPS跳变
- 保存参数并重启飞控
重要: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初始化的核心内容就讲完了。记住,校准不是一次性的工作。每次更换硬件、改变安装位置、或者发现飞行姿态异常时,都应该重新走一遍这个流程。