第二章 传感器融合基础:IMU原理、GPS/RTK定位、气压计与磁力计、传感器标定

各位同学,欢迎来到传感器融合这一章。

说实话,飞控系统里最让我头疼的,不是控制算法本身,而是怎么把一堆“各有脾气”的传感器伺候好。你想想看,IMU 告诉你飞机在转,GPS 说位置没动,气压计又喊高度变了——到底信谁?

这一章,我们就来把这些传感器的底细摸清楚。我做了十几年飞控,踩过的坑不少,今天一并倒给你们。

2.1 IMU 原理:加速度计与陀螺仪

IMU 是飞控的“内感官”。它不依赖外部信号,全靠自身感知运动。

2.1.1 加速度计

加速度计测量的是比力,不是单纯的速度变化率。说白了,它测的是“自身感受到的加速度”,包括重力。

静止时,加速度计输出的是 1g 的重力矢量。这个特性,可以用来计算俯仰角和横滚角。

我在项目中遇到过一个问题:飞机在剧烈振动时,加速度计数据全是毛刺。后来发现,是安装支架的共振频率没避开。嗯,机械设计也得懂一点。

关键公式:
俯仰角 θ = atan2(-ax, sqrt(ay² + az²))
横滚角 φ = atan2(ay, az)

2.1.2 陀螺仪

陀螺仪测量角速度。积分后得到角度。但积分有个致命问题——漂移。

我曾经做过一个实验:把陀螺仪放在桌上不动,10 分钟后积分出来的角度已经偏了 30 度。这就是零偏误差在作祟。

避坑指南: 陀螺仪积分前,一定要减去静态零偏。我曾经因为忘记做这一步,导致飞机在空中疯狂自旋,差点炸机。

2.2 GPS/RTK 定位:从米级到厘米级

GPS 是飞控的“外感官”。普通 GPS 精度在 2-5 米,对于 eVTOL 来说,这远远不够。你想想看,降落平台可能只有 3 米宽,误差 5 米就直接砸到旁边了。

2.2.1 标准 GPS 定位

原理很简单:卫星发射信号,接收机计算传播时间,乘以光速得到距离。至少 4 颗卫星才能解算出三维位置和时间。

但误差源很多:电离层延迟、对流层延迟、多路径效应、卫星钟差……

2.2.2 RTK 定位

RTK 是差分定位的一种。它用一个已知位置的基准站,计算出误差修正值,发给移动站。

我建议你在 eVTOL 项目中,至少用 RTK 作为主定位源。普通 GPS 只能用来做粗略导航。

个人经验: RTK 初始化需要几秒到几十秒。我习惯在起飞前,先确认 RTK 状态是“固定解”(Fix),而不是“浮点解”(Float)。固定解精度 2-3 厘米,浮点解可能差到 20-30 厘米。

2.3 气压计与磁力计

这两个传感器,一个管高度,一个管方向。看似简单,坑却不少。

2.3.1 气压计

气压计通过测量大气压力推算高度。每升高 8.5 米,气压下降约 1 hPa。

但气压计对气流非常敏感。我记得有一次在室内测试,空调一开,高度数据直接跳了 2 米。

避坑指南: 气压计一定要加海绵或防风罩。我曾经因为省了这个步骤,飞机在悬停时高度波动达到 ±1.5 米。

2.3.2 磁力计

磁力计测量地磁场方向,用来计算航向。但它太容易被干扰了——电机电流、铁磁材料、甚至地下的钢筋都能让它“发疯”。

我做过一个测试:把磁力计装在电机旁边 5 厘米处,航向误差直接偏了 40 度。

安装建议:
- 远离电机和电源线(至少 10 厘米)
- 使用外部磁力计,不要集成在飞控板上
- 每次上电后做“8 字校准”

2.4 传感器标定:让数据说真话

传感器出厂时都有误差。标定,就是把这些误差找出来并补偿掉。

2.4.1 加速度计标定

六面法:把传感器分别朝上、朝下、朝左、朝右、朝前、朝后,记录六个面的数据。然后拟合出零偏和比例因子。

// 加速度计标定示例代码
// 假设六个面采集的数据
float acc_calib[6][3] = {
    {0.02, 0.01, 9.81},   // Z轴向上
    {0.01, 0.02, -9.79},  // Z轴向下
    {9.80, 0.01, 0.02},   // X轴向上
    {-9.78, 0.02, 0.01},  // X轴向下
    {0.01, 9.79, 0.02},   // Y轴向上
    {0.02, -9.77, 0.01}   // Y轴向下
};

// 计算零偏和比例因子
float bias_x = (acc_calib[2][0] + acc_calib[3][0]) / 2.0f;
float scale_x = (acc_calib[2][0] - acc_calib[3][0]) / (2.0f * 9.81f);

2.4.2 陀螺仪标定

陀螺仪标定相对简单:静止采集 1000 个样本,取平均值作为零偏。

个人习惯: 我每次上电后,都会让飞机静止 5 秒,自动采集陀螺仪零偏。这样能有效补偿温度变化引起的漂移。

2.4.3 磁力计标定

磁力计标定最麻烦。需要让传感器在三维空间内旋转,采集足够多的点,然后拟合椭球到球体的变换参数。

避坑指南: 磁力计标定必须在远离铁磁材料的环境中进行。我曾经在金属桌面上做标定,结果标定参数全是错的,飞机一上天就往一个方向偏。

2.5 传感器融合框架

好了,现在每个传感器都标定好了。但怎么把它们融合在一起?

我个人最常用的是扩展卡尔曼滤波(EKF)。它把 IMU 作为预测模型,GPS、气压计、磁力计作为观测更新。

传感器融合框架(EKF) IMU 加速度计+陀螺仪 GPS/RTK 位置+速度 气压计 高度 磁力计 航向 扩展卡尔曼滤波 预测(IMU) 更新(GPS/气压/磁力计) 输出:位置+速度+姿态 100-400 Hz 5-20 Hz 10-50 Hz 10-50 Hz 状态估计

这张图展示了传感器融合的核心逻辑。IMU 以 100-400 Hz 的高频率提供预测,GPS、气压计、磁力计以较低频率修正累积误差。

核心要点:
- IMU 提供短时间高精度,但会漂移
- GPS/气压计/磁力计提供绝对参考,但更新慢
- EKF 把两者结合,取长补短

嗯,这一章的内容就到这里。传感器融合是飞控的基石,基础打牢了,后面的控制算法才能发挥威力。


公众号:蓝海资料掘金营,微信deep3321