第三章 磁力计与气压计:地磁场模型与磁力计校准
各位同学,今天我们来聊聊飞控里两个容易被忽视、但关键时刻能救命的传感器——磁力计和气压计。
说实话,我早年做飞控时,觉得只要有IMU就够了。直到有一次,一架四轴在GPS信号弱的桥洞下突然偏航,我才意识到磁力计的重要性。嗯,那次经历让我明白:磁力计是飞控的“电子指南针”,气压计则是“电子高度尺”。两者配合,才能让无人机在复杂环境中稳住姿态和高度。
3.1 地磁场模型:为什么磁力计能指北?
地球本身就是一个大磁铁。地磁场从南极附近发出,进入北极附近。磁力计测量的,就是这个小区域内的磁场矢量。
地磁场有几个关键参数:
- 总强度:约25-65 μT,随纬度变化
- 磁偏角:地理北极与磁北极的夹角
- 磁倾角:磁场线与水平面的夹角
我个人习惯用国际地磁参考场(IGRF)模型来估算当地磁场。这个模型每5年更新一次,精度在0.1°以内。你想想看,如果飞控不知道当地的磁偏角,那航向误差可能达到十几度。
核心公式:地磁场矢量 B = B₀ + ΔB(t) + 局部异常
其中B₀是主磁场,ΔB(t)是随时间变化的扰动,局部异常由铁磁性物质引起。
3.2 磁力计校准:硬铁与软铁
磁力计最头疼的问题就是干扰。我在项目中遇到过一架无人机,只要电机一转,磁力计数据就乱跳。后来发现是电机里的永磁体在作怪。
干扰分为两类:
- 硬铁干扰:由永磁体产生,表现为固定偏移。校准后就是一个常数向量。
- 软铁干扰:由铁磁性材料产生,会扭曲磁场方向。校准后是一个3x3矩阵。
3.2.1 硬铁校准:椭球拟合
说白了,硬铁校准就是找到磁力计数据的“中心点”。理想情况下,磁力计在三维空间旋转时,数据点应该落在一个球面上。但硬铁干扰会让球心偏移。
我常用的方法是:
- 让无人机在空中缓慢旋转,采集至少200个点
- 用最小二乘法拟合椭球
- 提取偏移量并补偿
// 硬铁校准代码示例(简化版)
void calibrate_hard_iron(float mag[3], float offset[3]) {
// 采集N个点,求平均值即为偏移
float sum[3] = {0};
for (int i = 0; i < N; i++) {
sum[0] += mag[i][0];
sum[1] += mag[i][1];
sum[2] += mag[i][2];
}
offset[0] = sum[0] / N;
offset[1] = sum[1] / N;
offset[2] = sum[2] / N;
}
避坑指南:我曾经在室内校准磁力计,结果发现数据点分布不均匀。后来才意识到,室内有钢筋和金属家具,造成了局部磁场异常。所以校准最好在开阔、无铁磁干扰的室外进行。
3.2.2 软铁校准:椭球到球
软铁干扰更隐蔽。它会让球面变成椭球面。校准的目标就是把这个椭球“拉回”成球。
具体做法是:
- 采集数据后,用椭球拟合得到3x3的变换矩阵
- 对每个测量值左乘这个矩阵的逆
- 再减去硬铁偏移
嗯,这里要注意:软铁校准矩阵是时不变的,但硬铁偏移会随温度变化。所以有些高端飞控会做温度补偿。
3.3 气压计测高原理
气压计测高,说白了就是利用大气压强随高度变化的规律。标准大气模型下,每上升100米,气压下降约12 hPa。
核心公式是压高公式:
h = (T₀ / L) * [ (P / P₀)^(-R*L/g) - 1 ]
其中T₀是海平面温度,L是温度递减率,P是当前气压,P₀是海平面气压。
但实际应用中,这个公式有个大坑——温度变化。你想想看,夏天中午和凌晨的气温能差20°C,这会导致高度误差超过50米。
3.4 温度补偿:让气压计更靠谱
我早期做的一个项目,无人机在中午飞行时高度漂移严重。排查后发现,气压计芯片自身发热,加上环境温度变化,导致读数不准。
温度补偿有两种思路:
- 硬件补偿:使用带温度传感器的气压计(如MS5611),内部自动校准
- 软件补偿:建立温度-气压模型,实时修正
警告:千万不要直接用气压计测得的绝对高度作为控制量。我见过有人这么干,结果无人机在热气流中上下乱窜。正确的做法是:用气压计计算相对高度变化,再与加速度计融合。
3.5 磁力计与IMU的融合校准
最后,我们来聊聊磁力计和IMU的联合校准。为什么需要联合?因为磁力计和IMU的坐标系可能不重合。
我常用的方法是:
- 将无人机固定在一个转台上
- 同时记录IMU的加速度和磁力计数据
- 利用加速度计确定重力方向,从而确定磁力计的安装角度
说白了,就是用IMU的姿态来“矫正”磁力计的指向。这样即使磁力计装歪了,也能得到正确的航向。
经验之谈:我曾经在无人机上同时使用两个磁力计,一个装在机头,一个装在机尾。通过对比两者的数据,可以检测出局部磁场异常。如果两个磁力计的读数差异超过5°,我就知道附近有强干扰源。
知识体系图
好了,这一章的内容就到这里。磁力计和气压计虽然不如IMU那么“显眼”,但它们是飞控系统里不可或缺的“稳定器”。下次你的无人机在GPS信号弱的地方还能稳稳飞行,记得感谢这两个默默工作的传感器。