第1章:Allan方差分析法——原理简介、方差曲线解读、噪声项分离
各位工程师朋友,咱们今天聊聊Allan方差。说实话,我刚入行那会儿,看到这个名词就觉得头大——一堆数学公式,看着就劝退。但后来我发现,这玩意儿其实就是个“噪声显微镜”,能把陀螺仪里那些乱七八糟的噪声一个个揪出来。
你想想看,我们做惯导的,最怕什么?怕陀螺仪飘。但飘的原因有很多种,你得知道是哪种噪声在作怪,才能对症下药。Allan方差就是干这个的。
1.1 原理简介:它到底在算什么?
Allan方差的思路其实很朴素。它不直接看原始数据,而是看数据的“平均值”在不同时间尺度下的变化情况。
具体怎么做的?我给你拆解一下:
- 拿一段陀螺仪静态数据,比如采样率100Hz,采了1小时。
- 选一个时间窗口τ,比如τ=1秒。把数据切成一段段,每段1秒长,算每段的平均值。
- 看相邻两段平均值的差,算这个差的方差。这就是τ=1秒时的Allan方差。
- 换一个τ,比如τ=10秒、100秒……重复上面步骤。
- 最后,把不同τ对应的Allan方差画成曲线,就是Allan方差曲线。
用公式表达就是:
σ²(τ) = ½ * ⟨(θ̄_{k+1} - θ̄_k)²⟩
其中θ̄_k是第k段数据的平均值,⟨ ⟩表示取平均。前面那个½,是Allan方差定义里自带的,别问为什么,记住就行。
1.2 方差曲线解读:一条曲线,五种噪声
Allan方差曲线长什么样?横轴是时间τ(对数坐标),纵轴是Allan标准差σ(τ)(也是对数坐标)。典型的曲线像个“V”字,或者更准确地说,像个不对称的浴盆。
为什么会有这种形状?因为不同的噪声在不同的时间尺度上占主导。我习惯把曲线分成五个区域来看:
| 噪声类型 | 斜率(对数坐标) | 物理来源 | 典型τ范围 |
|---|---|---|---|
| 量化噪声 | -1 | AD转换分辨率有限 | 极短τ(<0.1s) |
| 角度随机游走 | -1/2 | 白噪声积分 | 短τ(0.1s~10s) |
| 偏置不稳定性 | 0(平坦区) | 1/f噪声 | 中τ(10s~100s) |
| 速率随机游走 | +1/2 | 低频漂移 | 长τ(100s~1000s) |
| 速率斜坡 | +1 | 温度线性漂移 | 极长τ(>1000s) |
嗯,这里要注意:实际曲线不一定五个区域都完整出现。比如好的光纤陀螺,量化噪声可能被淹没在ARW里,根本看不见。而MEMS陀螺的偏置不稳定性区域往往很窄,甚至没有明显的平坦区。
1.3 噪声项分离:怎么把噪声一个个揪出来?
曲线看懂了,接下来就是算。说白了,就是把Allan方差表达式写成各噪声项的线性叠加:
σ²(τ) = σ²_Q(τ) + σ²_ARW(τ) + σ²_BI(τ) + σ²_RRW(τ) + σ²_RR(τ)
每一项都有明确的数学形式。我直接给结论,你们拿去用:
- 量化噪声: σ_Q(τ) = √3 · Q / τ,Q是量化系数,单位弧度。
- 角度随机游走: σ_ARW(τ) = N / √τ,N是ARW系数,单位°/√h。
- 偏置不稳定性: σ_BI(τ) = B · √(2ln2/π),B是BI系数,单位°/h。注意,这个值在平坦区直接读。
- 速率随机游走: σ_RRW(τ) = K · √(τ/3),K是RRW系数,单位°/h/√h。
- 速率斜坡: σ_RR(τ) = R · τ / √2,R是斜坡系数,单位°/h²。
实际怎么操作?我一般用最小二乘法拟合。把曲线取对数,然后分段拟合斜率。比如在短τ区,斜率接近-0.5,我就用ARW模型去拟合,反算出N值。
给你看一段我常用的Python代码,用Allan方差分析一个实际陀螺仪数据:
import numpy as np
import allantools
# 假设data是陀螺仪静态数据,采样率fs=100Hz
fs = 100.0
tau, adev, adev_err, rate = allantools.oadev(data, rate=fs, data_type='freq')
# 找曲线最低点
min_idx = np.argmin(adev)
best_tau = tau[min_idx]
best_adev = adev[min_idx]
print(f"最佳积分时间: {best_tau:.2f} 秒")
print(f"对应的Allan标准差: {best_adev:.6f} °/s")
# 拟合ARW(取τ在0.1~1秒之间的点)
mask_arw = (tau > 0.1) & (tau < 1.0)
# 用最小二乘拟合 log(adev) = log(N) - 0.5*log(tau)
# 具体拟合代码略,你们懂的
拟合完,你就能得到一份完整的噪声清单。这份清单有什么用?我举个例子:
- 如果ARW太大,说明陀螺仪的本底噪声高,可能是光源或电路问题。
- 如果BI太大,说明低频1/f噪声严重,可能是封装应力或电路1/f噪声。
- 如果RRW明显,说明有缓慢的漂移,可能是温度或磁场影响。
有了这些信息,你就能针对性地改进设计,而不是瞎猜。
好了,Allan方差的基本原理和操作方法就这些。说白了,它就是一把尺子,帮你量清楚陀螺仪噪声的“成分”。下一节我们会聊怎么用这把尺子去校准零偏稳定性,到时候再细说。
公众号:蓝海资料掘金营,微信deep3321