2、传感器标定基础:加速度计、陀螺仪、磁力计、气压计的工作原理与标定必要性
传感器标定,说白了就是给飞控的「眼睛」和「耳朵」做一次视力听力检查。你想想看,一个刚出厂的加速度计,它读出来的数据能直接信吗?我做了这么多年飞控,还真没见过哪个传感器上来就是准的。
这一节,咱们把四种核心传感器挨个捋一遍。不讲太深的理论,重点说清楚它们怎么工作、为什么需要标定、以及不标定会出什么幺蛾子。
2.1 加速度计:飞控的「水平仪」
加速度计测量的是物体受到的比力(Specific Force),说白了就是重力加运动加速度的合力。三轴加速度计输出三个值:Ax、Ay、Az,单位通常是 m/s² 或 g。
工作原理:内部有个微小的质量块,挂在弹簧结构上。当芯片加速或倾斜时,质量块会位移,电容值随之变化。通过测量电容差,反算出加速度。
关键点:静止时,加速度计只感受重力。所以理论上,水平放置时 Ax=0, Ay=0, Az=1g。但实际读出来往往不是这样——这就是标定的原因。
标定必要性:
- 零偏误差:静止时输出不为0。比如水平放,Ax 读出来是 0.05g。
- 比例因子误差:1g 的输入,输出可能是 1.02g。
- 轴间非正交:三个轴不是完美的 90° 夹角。
我在项目中遇到过一架四旋翼,起飞后总是缓慢朝一个方向漂移。查了半天,发现是加速度计零偏没标定,导致水平估计一直有 0.3° 的偏差。嗯,这种问题最坑人,因为地面站上看不出明显异常。
标定方法:六面法。把传感器分别朝上、朝下、朝左、朝右、朝前、朝后各放一会儿,采集数据拟合出零偏和比例因子。PX4 和 ArduPilot 的自动标定流程就是这个原理。
2.2 陀螺仪:飞控的「角速度计」
陀螺仪测量的是绕各轴的旋转角速度,单位 rad/s 或 °/s。它用的是 MEMS 谐振结构——一个高速振动的质量块,当有角速度输入时,科里奥利力会让质量块在垂直方向产生位移。
标定必要性:
- 零偏(Bias):静止时输出不为0。比如静止时读出来是 0.1°/s。
- 温度漂移:零偏随温度变化,这是最头疼的。
- 比例因子误差:输入 100°/s,输出可能是 98°/s。
陀螺仪的零偏会积分成角度误差。1°/s 的零偏,飞 10 秒就偏了 10°。你想想看,这飞机还能稳住吗?
避坑指南:我曾经遇到过一批陀螺仪,常温下标定完零偏只有 0.02°/s,但飞到 60°C 时零偏漂到了 0.5°/s。后来我养成了一个习惯——每次上电后先让飞控预热 2 分钟,再执行陀螺仪零偏采集。这个细节救了我好几次。
标定方法:静止采集 100-200 组数据,取平均作为零偏。比例因子标定需要转台,一般消费级飞控只标零偏。
2.3 磁力计:飞控的「指南针」
磁力计测量的是地球磁场在三个轴上的分量。它利用的是霍尔效应或磁阻效应——磁场变化会引起材料电阻或电压变化。
标定必要性:
- 硬铁干扰:电路板上的永磁体、电机磁钢、电流产生的磁场,这些是固定的偏移。
- 软铁干扰:铁磁性材料(如机架、螺丝)会扭曲磁场,导致不同方向上的灵敏度不同。
- 比例因子和轴间误差:和加速度计类似。
磁力计不标定,后果很严重。我见过一架六旋翼,因为磁力计没标定,航向角误差达到 30°。飞机一解锁就往错误方向飞,差点撞墙。
核心概念:理想情况下,磁力计在三维空间旋转时,输出轨迹是一个球心在原点的球面。硬铁干扰会让球心偏移,软铁干扰会让球面变成椭球。标定的目的就是把这个椭球拉回标准球。
标定方法:拿着飞机在空中画「8」字,或者绕各轴旋转。采集足够多的点后,用椭球拟合算法算出偏移和缩放矩阵。PX4 的 mag calibration 就是这个流程。
个人经验:我建议每次更换机架、电机或电池位置后,都重新标定磁力计。因为硬铁干扰源变了,旧标定参数就废了。另外,标定时要远离钢筋建筑和高压线,这些外部磁场会污染数据。
2.4 气压计:飞控的「高度计」
气压计测量的是大气压强,通过气压-高度公式换算成海拔高度。它内部有一个 MEMS 薄膜,气压变化会让薄膜形变,改变电容值。
标定必要性:
- 绝对精度差:出厂时每个气压计的零偏都不一样。
- 温度漂移:气压计对温度极其敏感。
- 动态响应滞后:气压变化传到传感器需要时间。
气压计不标定,高度估计会有一个固定偏差。比如实际高度 10 米,飞控可能认为只有 8 米。不过好消息是,飞控用的是相对高度(起飞点归零),所以绝对偏差影响不大。
注意:气压计最怕的是风。我曾经在户外测试时,一阵风吹过,气压计高度跳了 2 米。后来我把气压计用海绵包裹起来,装在机腹的静压腔内,效果好了很多。
标定方法:上电后采集 50 组数据取平均,作为当前海平面气压的参考值。这个值会随天气变化,所以每次上电都要重新采集。
2.5 四种传感器标定对比
| 传感器 | 主要误差 | 标定参数 | 标定方法 | 标定频率 |
|---|---|---|---|---|
| 加速度计 | 零偏、比例因子、非正交 | 6 个(3 零偏 + 3 比例因子) | 六面法 | 出厂一次,更换安装位置后重做 |
| 陀螺仪 | 零偏、温度漂移 | 3 个(零偏) | 静止采集平均 | 每次上电 |
| 磁力计 | 硬铁、软铁、比例因子 | 9 个(偏移 + 缩放矩阵) | 旋转画 8 字 + 椭球拟合 | 更换硬件后必做 |
| 气压计 | 零偏、温度漂移 | 1 个(参考气压) | 上电采集平均 | 每次上电 |
2.6 标定的核心逻辑
说了这么多,其实标定的本质就一句话:建立传感器原始输出到真实物理量的映射关系。
数学上,这个映射通常是一个线性模型:
真实值 = 比例因子 × (原始值 - 零偏)
对于加速度计和磁力计,还要加上轴间非正交的修正矩阵:
真实向量 = M × (原始向量 - 零偏向量)
其中 M 是一个 3×3 的矩阵,包含了比例因子和轴间耦合的修正。
我的习惯:每次拿到新飞控板,第一件事就是跑一遍完整的传感器标定流程。加速度计六面法、陀螺仪零偏采集、磁力计画 8 字、气压计参考值记录。全部做完后,把标定参数保存到参数文件里,标注日期和硬件版本。这个习惯帮我省了无数排查时间。
2.7 不标定的后果
咱们来点实际的。如果不标定,飞控会出什么问题?
- 加速度计不标:水平估计有偏差,飞机悬停时漂移,甚至解锁后直接侧翻。
- 陀螺仪不标:角速度积分出角度误差,姿态发散,飞机抖振或自旋。
- 磁力计不标:航向角误差大,GPS 模式下飞机画圈或飞偏。
- 气压计不标:高度控制有静差,定高模式忽高忽低。
你想想看,这些故障在飞行中任何一个出现,都可能导致炸机。所以标定不是可选项,是必选项。
最后一句:标定参数不是一劳永逸的。温度变化、机械冲击、元器件老化都会让参数漂移。我建议每飞行 50 小时或每 3 个月,重新做一次完整标定。安全第一,别偷懒。