3. 传感器模型与噪声特性:IMU、磁力计、GPS

各位同学,咱们今天聊聊传感器。做飞控,说白了就是跟传感器打交道。你算法再牛,传感器数据不准,那都是白搭。我这些年踩过的坑,十有八九都跟传感器噪声有关。所以这一节,咱们把几个核心传感器的模型和噪声特性彻底讲透。

3.1 IMU模型:加速度计与陀螺仪

IMU是飞控的“内感官”。它告诉你自己身体在怎么动。但IMU的原始数据,嗯,直接拿来用是会出事的。

3.1.1 加速度计模型

加速度计测量的是比力,不是单纯的加速度。这个区别很重要。模型可以写成:

a_m = a_true + g + b_a + n_a + S_a * a_true + ...

其中:

  • a_m:测量值
  • a_true:真实运动加速度
  • g:重力加速度(这个必须分离)
  • b_a:零偏(Bias)
  • n_a:高斯白噪声
  • S_a:尺度因子误差

我个人习惯,拿到一个新IMU芯片,第一件事就是测它的零偏稳定性。你想想看,如果零偏漂移了0.1m/s²,积分10秒就是1m/s的速度误差,这谁受得了?

关键点:加速度计在静态时,测量值就是重力向量。这是初始化姿态的重要依据。

3.1.2 陀螺仪模型

陀螺仪测量角速度。模型类似:

ω_m = ω_true + b_g + n_g + S_g * ω_true + ...

陀螺仪最怕什么?零偏漂移。我在项目中遇到过,一个低成本的MEMS陀螺仪,开机半小时后零偏漂了0.5°/s。你想想,积分一分钟就是30°的姿态误差,飞机早翻过来了。

避坑指南:我曾经因为没做陀螺仪温漂补偿,导致飞机在高温环境下悬停时,航向角持续漂移。后来加了温度模型,才解决问题。

3.2 磁力计模型

磁力计是飞控的“指南针”。但它特别娇气,容易受干扰。模型如下:

m_m = R * m_true + b_h + n_m + A * m_true
  • m_m:测量值
  • R:旋转矩阵
  • m_true:真实地磁场向量
  • b_h:硬铁干扰(Hard Iron)
  • n_m:高斯白噪声
  • A:软铁干扰矩阵(Soft Iron)

说白了,硬铁干扰是固定的偏移,比如电路板上的电流产生的磁场。软铁干扰是材料磁导率不同导致的扭曲。我建议,每次装机后,一定要做磁力计校准。怎么校?让飞机绕各个轴转几圈,采集数据拟合椭球。

小技巧:磁力计数据如果出现“跳变”,多半是附近有大电流设备在工作。我一般会在代码里加一个“磁异常检测”,发现异常就暂时不用磁力计数据。

3.3 GPS模型

GPS提供位置和速度。但它更新频率低,而且有延迟。模型可以简化为:

p_gps = p_true + n_p + b_p
v_gps = v_true + n_v
  • p_gps:位置测量值
  • v_gps:速度测量值
  • n_p:位置噪声(通常1-3米)
  • n_v:速度噪声(通常0.1-0.3 m/s)
  • b_p:多径效应导致的偏差

GPS的噪声特性很有意思。开阔天空下,噪声是高斯白噪声。但在城市峡谷里,多径效应会导致偏差,这个偏差可不是白噪声,是低频的、有色的。我遇到过,在楼宇间飞行时,GPS位置突然跳了10米,差点撞墙。

重要提醒:GPS的更新频率一般是5-10Hz,而IMU是100-400Hz。融合时,必须做时间戳对齐和插值。

3.4 噪声类型详解

搞懂噪声类型,才能设计好滤波器。咱们重点说两种:

3.4.1 高斯白噪声

这是最基础的噪声。特点是:

  • 均值为0
  • 方差固定
  • 不同时刻的噪声不相关

说白了,就是“纯随机”。卡尔曼滤波器就是假设噪声是高斯白噪声。但实际中,IMU的噪声往往不是纯白的,尤其是低频部分。

3.4.2 随机游走(Random Walk)

这个要重点讲。随机游走是白噪声的积分。比如陀螺仪的角速度白噪声,积分后就成了角度随机游走。公式:

θ(t) = ∫ ω(τ) dτ → 方差随时间线性增长

为什么会这样?因为白噪声的积分是布朗运动。你想想看,如果陀螺仪有0.01°/s的白噪声,积分10秒后,角度误差的标准差就是0.1°。积分100秒,就是1°。这就是为什么纯积分姿态会越飘越厉害。

避坑指南:我曾经在项目里,直接用陀螺仪积分做姿态,没考虑随机游走。结果飞行3分钟后,姿态误差超过20°,飞机直接失控。从那以后,我所有项目都必加加速度计或磁力计的修正。

3.5 知识体系总览

下面这张图,是我自己总结的传感器模型与噪声关系图。你看一眼,就能明白整体脉络。

传感器模型与噪声特性知识体系 IMU 加速度计 + 陀螺仪 磁力计 地磁场测量 GPS 位置 + 速度 IMU模型 • 加速度计:a_m = a_true + g + b_a + n_a • 陀螺仪:ω_m = ω_true + b_g + n_g • 零偏稳定性、尺度因子误差 • 温漂补偿 磁力计模型 • m_m = R*m_true + b_h + n_m + A*m_true • 硬铁干扰:固定偏移 • 软铁干扰:椭球扭曲 • 椭球拟合校准 GPS模型 • p_gps = p_true + n_p + b_p • v_gps = v_true + n_v • 多径效应导致有色噪声 • 更新频率低(5-10Hz) 核心噪声类型 高斯白噪声 均值0,方差固定,不相关 随机游走 白噪声积分,方差随时间增长 理解噪声特性 → 设计滤波器 → 提升飞控精度

3.6 实际应用建议

讲了这么多理论,最后给点实际建议:

  1. IMU选型时,重点关注零偏稳定性和角度随机游走参数。这两个参数直接决定了纯惯性导航的精度。
  2. 磁力计校准,我建议每次上电后做一次快速校准。环境变了,磁场就变了。
  3. GPS和IMU融合,一定要考虑时间延迟。我一般会在代码里维护一个延迟缓冲区。
  4. 噪声建模,别只盯着高斯白噪声。实际中,低频噪声(如随机游走)才是主要误差源。

个人经验:我习惯在飞控代码里加一个“传感器健康诊断”模块。实时监测各传感器的噪声方差,如果发现异常增大,就及时切换融合策略。这招救过我很多次。

好了,传感器模型和噪声特性就讲到这里。记住一句话:理解噪声,才能驾驭传感器;驾驭传感器,才能做好飞控。


专注资料整理