第3章:传感器模型与噪声特性

各位同学,今天我们来聊聊传感器。说实话,做飞控这么多年,我最大的体会就是——算法再牛,也架不住传感器数据是坨屎。你想想看,姿态控制说白了就是「测量-计算-执行」的闭环,测量这一步要是歪了,后面全白搭。

这一章我会把陀螺仪、加速度计、磁力计、GPS这几个核心传感器的模型和噪声特性掰开揉碎了讲。嗯,还会重点说说Allan方差分析——这可是我当年被坑过好几次才真正搞明白的工具。

3.1 陀螺仪与加速度计模型

先说陀螺仪。它的核心输出是角速度,单位一般是 °/s 或 rad/s。理想情况下,陀螺仪的输出就是真实的角速度。但现实嘛……

我习惯把陀螺仪模型写成这样:

ω_meas = ω_true + b_gyro + n_gyro + S_gyro · ω_true + ...

这里面:

  • ω_meas:测量值
  • ω_true:真实角速度
  • b_gyro:零偏(bias),随时间缓慢漂移
  • n_gyro:白噪声,高频随机波动
  • S_gyro:比例因子误差,说白了就是刻度不准

加速度计呢?它测量的是比力(specific force),也就是物体受到的惯性力减去重力。模型类似:

a_meas = a_true - g + b_acc + n_acc + S_acc · a_true

这里有个关键点——加速度计分不清重力加速度和运动加速度。我在做四旋翼悬停测试时就遇到过,电机振动导致加速度计数据全是毛刺,姿态解算直接崩了。后来加了低通滤波才稳住。

实战建议: 陀螺仪适合短时间高动态的姿态跟踪,加速度计适合长时间低动态的姿态参考。两者互补,这就是互补滤波和卡尔曼滤波的底层逻辑。

3.2 磁力计与GPS模型

磁力计,说白了就是个电子指南针。它测量的是地球磁场矢量。模型长这样:

m_meas = R · m_earth + b_mag + n_mag + H_mag · m_meas

其中 R 是旋转矩阵,b_mag 是硬铁偏差(比如电路板上的永磁体),H_mag 是软铁偏差(磁场畸变)。

我曾经在某个项目中,磁力计数据怎么校准都不对。折腾了两天,最后发现是机架上的一颗螺丝钉被磁化了……嗯,从那以后我每次装机都会用消磁器处理所有金属件。

GPS模型相对简单一些:

p_meas = p_true + n_gps

位置误差 n_gps 一般是高斯白噪声,水平精度在 2-5 米左右(单点定位)。但要注意,GPS 的更新频率很低(5-10Hz),而且高楼遮挡时信号会跳变。

注意: 磁力计在室内或靠近高压线时基本废掉。GPS 在隧道或密集城区也会失效。所以飞控系统必须有多传感器冗余,不能依赖单一来源。

3.3 传感器噪声与漂移特性

噪声和漂移,这是传感器最让人头疼的两个问题。我简单分个类:

特性 来源 频率特征 影响
白噪声 热噪声、量化噪声 高频,均匀分布 短期抖动
闪烁噪声 半导体缺陷 1/f 低频 长期漂移
随机游走 积分累积 低频 姿态发散
零偏稳定性 温度、老化 超低频 稳态误差

你想想看,陀螺仪的角速度积分一次就是角度。如果零偏是 0.1°/s,积分 10 秒就偏了 1°。这就是为什么纯陀螺仪姿态解算会越飘越远——说白了就是漂移在作怪。

加速度计也有类似问题,但它的漂移主要来自温度变化和安装误差。我习惯在每次上电后做一次静态校准,采集 100 组数据取平均,把零偏先扣掉。

3.4 Allan方差分析

好了,终于到了我最想讲的部分——Allan方差。这玩意儿是分析传感器噪声特性的利器。为什么用它?因为传统的方差只能告诉你「数据有多散」,但Allan方差能告诉你「不同时间尺度上的噪声成分」。

说白了,Allan方差就是把数据按不同时间长度分段,然后看每段的方差变化。公式长这样:

σ²(τ) = ½ · E[(θ(t+τ) - θ(t))²]

其中 θ(t) 是累积角度,τ 是相关时间。实际计算时,我们取不同 τ 值,画出 log-log 曲线。

我画了一张图,帮你理解Allan方差的分析流程:

Allan方差分析流程图 原始传感器数据 陀螺仪/加速度计输出 数据分段 按时间τ分组计算均值 计算Allan方差 σ²(τ) = ½·E[(θ₂-θ₁)²] 重复不同τ值 τ = 1s, 2s, 5s, 10s... 绘制log-log曲线 σ(τ) vs τ 噪声成分辨识 斜率-1/2:白噪声, 斜率0:闪烁噪声 噪声参数提取

从图上你能看到,Allan方差曲线在不同 τ 区间有不同的斜率。我总结一下规律:

  • 斜率 -1/2:白噪声主导,对应角度随机游走(ARW)
  • 斜率 0:闪烁噪声,对应零偏稳定性
  • 斜率 +1/2:速率随机游走,低频漂移
  • 斜率 +1:量化噪声

实际项目中,我一般会采集 2-3 小时的静态数据来做Allan方差分析。为什么这么久?因为你要看到低频段的漂移特性,时间太短根本看不出来。

核心结论: Allan方差曲线的最低点对应的 τ 值,就是传感器的最佳积分时间。在这个时间尺度上,噪声对姿态估计的影响最小。

举个例子,某款MEMS陀螺仪的Allan方差曲线在 τ=100s 时达到最小值 0.01°/s。这意味着如果你用 100 秒的滑动窗口做零偏估计,精度最高。我当年做无人机长航时飞行时,就用这个参数设计了自适应零偏补偿算法,效果立竿见影。

小技巧: 如果你手头没有Allan方差分析工具,可以用 MATLAB 的 allanvar 函数,或者 Python 的 allantools 库。我自己写了个脚本,每次拿到新传感器都会跑一遍,把噪声参数存到配置文件里。

好了,这一章的内容就到这里。传感器模型和噪声特性是飞控系统设计的基石,你把这些搞清楚了,后面的滤波器和控制器设计才能有的放矢。记住一句话:知己知彼,百战不殆——传感器就是你的「知彼」工具。


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