传感器校准:加速度计、陀螺仪、磁力计、气压计的校准方法与验证

传感器校准这件事,说简单也简单,说复杂也复杂。我见过不少飞手,拿到新机架就急着上天,结果飞起来不是偏航就是飘,最后查来查去,发现是传感器数据就没对过。

说白了,校准就是告诉飞控:「你现在看到的零点和刻度,到底对应真实世界的什么值。」这一步做不好,后面所有的调参都是白费功夫。

核心观点:校准不是可选步骤,而是飞控系统正确工作的前提条件。未校准的传感器数据,误差可能达到 10% 以上,直接导致姿态解算发散。

校准的整体流程

我个人习惯把校准分成四个阶段,按顺序来,不能跳。你想想看,如果加速度计都没校好,那水平姿态就是歪的,磁力计校准时的参考平面也就不对了。

传感器校准流程 加速度计 陀螺仪 磁力计 气压计 校准顺序说明 1. 先校加速度计,确保水平参考面准确 2. 陀螺仪只需静止采样,无需手动操作 3. 磁力计依赖水平姿态,必须放在加速度计之后 4. 气压计校准最简单,但容易被忽略

加速度计校准

加速度计测量的是比力,也就是重力加上运动加速度。校准的目标是消除零偏和刻度因子误差。

校准方法:六面法

把飞控(或整机)依次摆成六个姿态:X轴朝上、X轴朝下、Y轴朝上、Y轴朝下、Z轴朝上、Z轴朝下。每个姿态保持静止 2-3 秒。

为什么是六个面?因为每个轴的正反方向都能测到 ±1g 的重力分量,这样就能解出三个轴的零偏和刻度因子。

我的经验:在校准之前,先把飞控上电预热 1-2 分钟。传感器芯片有温度漂移,冷机状态和热机状态的零偏能差出 0.05g。我曾经遇到过一台机器,冷机校准后飞了 5 分钟就开始飘高,后来发现是温度补偿没做对。

PX4 操作步骤:

1. 连接 QGroundControl,进入「传感器」页面
2. 点击「加速度计」校准按钮
3. 按照屏幕提示,依次摆放六个姿态
4. 每个姿态保持静止,等待状态指示灯变绿
5. 校准完成后,检查校准结果参数:
   - CAL_ACC0_XOFF ~ CAL_ACC0_ZOFF:零偏(理想值接近 0)
   - CAL_ACC0_XSCALE ~ CAL_ACC0_ZSCALE:刻度因子(理想值接近 1.0)

验证方法:

校准完成后,把飞控水平放置,查看加速度计模值:

acc_norm = sqrt(ax² + ay² + az²)
// 理想值应为 9.80665 m/s²,误差应小于 0.1 m/s²

如果模值偏差超过 0.2 m/s²,我建议重新校准。有时候是摆放平面不够水平,或者校准过程中有人碰到了桌子。

陀螺仪校准

陀螺仪测量角速度,校准的核心是消除零偏。说白了,就是让飞控知道「静止时角速度应该为零」。

校准方法:静止采样法

把飞控放在绝对静止的平面上,采集 500-1000 个样本,取平均值作为零偏值。这个过程不需要任何手动操作。

注意:校准陀螺仪时,周围不能有振动源。我曾经在实验室桌上校过一次,隔壁工位在用电钻,结果零偏值大了 0.5 °/s,飞起来后偏航一直在缓慢漂移。后来换到安静的角落重新校准,问题就解决了。

PX4 操作步骤:

1. 将飞行器放置在水平、静止的平面上
2. 在 QGC 中点击「陀螺仪」校准按钮
3. 等待 3-5 秒,系统自动完成采样
4. 检查参数:
   - CAL_GYRO0_XOFF ~ CAL_GYRO0_ZOFF:零偏(理想值 < 0.1 °/s)

验证方法:

校准后,在 QGC 的「Mavlink Inspector」中查看陀螺仪原始数据。静止时三个轴的角速度应在 ±0.1 °/s 以内。如果某个轴持续偏大,可能是传感器硬件问题,也可能是校准过程中有振动干扰。

磁力计校准

磁力计这东西,最让人头疼。它测的是地磁场,但周围任何铁磁性物质都会干扰它。电机、电调、电池、甚至地面上的钢筋,都能让数据跑偏。

校准方法:旋转法(椭球拟合)

拿着飞行器,在空中画「8」字,或者绕三个轴各旋转 360 度。目的是让磁力计采集到各个方向上的磁场数据,然后通过椭球拟合算法计算出硬铁和软铁干扰。

关键点:旋转速度不要太快,每秒转一圈左右就行。太快了磁力计响应跟不上,数据点会集中在某个区域,拟合出来的椭球就不准。

PX4 操作步骤:

1. 断开电机电源(安全第一)
2. 在 QGC 中点击「磁力计」校准按钮
3. 按照提示,绕 X、Y、Z 轴各旋转 360 度
4. 观察屏幕上的数据点分布,应均匀覆盖球面
5. 校准完成后检查参数:
   - CAL_MAG0_XOFF ~ CAL_MAG0_ZOFF:硬铁偏移(单位:高斯)
   - CAL_MAG0_XSCALE ~ CAL_MAG0_ZSCALE:软铁缩放(理想值接近 1.0)

验证方法:

校准完成后,在 QGC 中查看磁力计模值:

mag_norm = sqrt(mx² + my² + mz²)
// 理想值应在 0.4 - 0.6 高斯之间(取决于纬度)
// 旋转飞行器时,模值变化应小于 0.1 高斯

如果模值变化超过 0.15 高斯,说明校准不充分。我遇到过一种情况:用户在校准时把飞行器放在金属桌子上,结果磁力计数据一直不对。后来换到木质桌面重新校准,一次就过了。

避坑指南:每次更换电机、电调或电池位置后,都建议重新校准磁力计。我曾经因为换了一根更粗的电源线,导致磁力计偏移了 0.2 高斯,飞起来后航向角偏差了 15 度。

气压计校准

气压计用来测高度,原理很简单:气压随高度变化。但实际使用中,气压计受温度影响很大,而且对环境气流敏感。

校准方法:零高设置

气压计校准其实不是传统意义上的「校准」,而是设置一个参考气压值。飞控会把当前气压作为零高度基准,后续的高度变化都基于这个基准计算。

PX4 操作步骤:

1. 确保飞行器在地面,且周围没有强风
2. 在 QGC 中点击「气压计」校准按钮
3. 系统自动读取当前气压并设置为参考值
4. 检查参数:
   - CAL_BARO0_OFF:气压偏移(单位:Pa)
   - 校准后该值应为当前海平面气压与传感器读数的差值

验证方法:

校准后,观察 QGC 中的高度显示。在静止状态下,高度波动应小于 ±0.3 米。如果波动超过 0.5 米,可能是气压计暴露在阳光直射下,或者风太大。

注意:气压计对温度非常敏感。不要把飞控从空调房直接拿到室外就校准,温差会导致气压计读数漂移。我建议在室外静置 3-5 分钟,等传感器温度稳定后再校准。

校准后的综合验证

四个传感器都校准完成后,别急着起飞。先做一次综合验证:

验证项目 方法 合格标准
加速度计 水平放置,查看模值 9.80665 ± 0.1 m/s²
陀螺仪 静止,查看三轴角速度 ±0.1 °/s 以内
磁力计 旋转飞行器,查看模值变化 变化 < 0.1 高斯
气压计 静止,查看高度波动 ±0.3 米以内

如果某个传感器没通过验证,不要强行飞。回头检查校准过程,或者看看是不是硬件安装有问题。我见过最离谱的一次,是用户把飞控装反了,加速度计 Z 轴一直显示 -1g,校准怎么都过不了。

嗯,校准这部分就讲到这里。记住一句话:校准花 10 分钟,能省下后面 10 小时的排故时间。