主要内容

基于Allan方差的惯性传感器噪声分析

这个例子展示了如何使用Allan方差来确定MEMS陀螺仪的噪声参数。这些参数可用于陀螺的仿真建模。陀螺仪测量模型为:

$ $ \ω(t) = \ Omega_{理想}(t) + Bias_N (t) + Bias_B (t) + Bias_K (t) $ $

三噪声参数N(角随机游走),K(率随机漫步),和B(偏置不稳定性)是利用固定陀螺仪记录的数据来估计的。

背景

Allan方差最初是由David W. Allan开发的,用于测量精密振荡器的频率稳定性。它也可以用来识别存在于静止陀螺仪测量中的各种噪声源。考虑l采样时间为的陀螺仪的数据样本美元\ tau_ {0} $.形成持续时间的数据集群美元\ tau_ {0} $2美元\ tau_ {0} $、……$m\tau_{0}, (m < (L-1)/2并得到每个聚类中包含的数据点之和除以聚类长度的平均值。Allan方差被定义为数据聚类平均的两样本方差作为聚类时间的函数。这个例子使用重叠Allan方差估计。这意味着计算的集群是重叠的。对于较大的值,该估计器比非重叠估计器性能更好l

阿伦方差计算

Allan方差的计算方法如下:

日志l固定陀螺仪具有采样周期美元\ tau_ {0} $.让ω\美元被记录的样本。

%从三轴陀螺仪的一个轴加载记录数据。这段录音%在6小时内以100赫兹的采样率进行。负载(“LoggedSingleAxisGyroscope”“ω”“Fs”) t0 = 1/Fs;

对于每个样本,计算输出角度\θ美元

$ $ \θ(t) = \ int ^ {t} \ω(t) dt $ $

对于离散样本,累加和乘以美元\ tau_ {0} $可以使用。

= cumsum(1)*t0;

接下来,计算Allan方差:

$ $ \σ^ 2(\τ)= & # xA; \压裂{1}{2 \τ^ 2}< (\ theta_ {k + 2 m} 2 \ theta_ {k + m} + \ theta_ {k}) ^ 2 & # 62; $ $

在哪里\ \τ=美元tau_ {0} $< & # 62;美元为集合平均值。

综上平均可以扩展为:

$ $ \σ^ 2(\τ)= & # xA; \压裂{1}{2 \τ^ 2 (L-2m)} \ sum_ {k = 1} ^ {L-2m} (\ theta_ {k + 2 m} - 2 \ theta_ {k + m} & # xA; + \ theta_ {k}) ^ 2 $ $

maxNumM = 100;L = size(, 1);maxM = 2。^地板(log2 (L / 2));m = logspace(log10(1), log10(maxM), maxNumM).';m =装天花板(m);% m必须为整数。m =独特(m);%删除重复值。τ= m * t0;Avar = 0 (numel(m), 1);I = 1:numel(m) mi = m(I);:阿瓦尔人(我)=总和(...(θ(1 + 2 * mi: L) - 2θ* (1 + mi: L-mi) +θ(1:l2 * mi))。^ 2, 1);结束Avar = Avar ./ (2*tau。^2 * (L - 2*m));

最后是艾伦偏差大概{$ \σ(t) = \ \σ^ 2 (t)} $用于确定陀螺仪噪声参数。

adev =√阿瓦尔人);图loglog(tau, adev)标题(“艾伦偏差”)包含(“\τ”);ylabel (“\σ(\τ)”网格)平等的

Allan方差也可以用allanvar函数。

[avarFromFunc, tauFromFunc] = allanvar(omega, m, Fs);adevFromFunc =√avarFromFunc);图loglog(tau, adev, tauFromFunc, adevFromFunc);标题(“艾伦偏差”)包含(“\τ”) ylabel (“\σ(\τ)”)传说(手工计算的“allanvar函数”网格)平等的

噪声参数识别

为了获得陀螺仪的噪声参数,使用原始数据集中噪声参数的Allan方差与双边功率谱密度(PSD)之间的以下关系ω\美元.的关系是:

$ $ \σ^ 2(\τ)= 4 \ int_ {0} ^ {\ infty} S_ \ω(f) & # xA; \压裂{罪^ 4 f(\π\τ)}{(f \ \πτ)^ 2}df $ $

由上式可知,当通过传递函数为的滤波器时,Allan方差与陀螺仪的总噪声功率成正比罪^ 4美元(x) / (x) ^ 2美元.这个传递函数产生于创建和操作集群的操作。

使用这种传递函数解释,滤波器带通依赖于\τ美元.这意味着可以通过改变滤波器带通或变化来识别不同的噪声参数\τ美元

角随机游走

通过陀螺仪输出的白噪声谱来表征角随机游走。PSD表示为:

$ $ S_ \ω(f) = N ^ 2 $ $

在哪里

N=角度随机游走系数

代入原PSD方程,计算积分产率:

$ $ \σ^ 2(\τ)= \压裂{N ^ 2}{\τ}$ $

上面的方程是一条斜率为-1/2的直线在的对数曲线上\σ(\τ)美元\τ美元.的价值N可以从这一行直接读出吗\τ= 1美元

找出对数比例的艾伦偏差的斜率相等的指标%到指定的斜率。斜率= -0.5;logtau = log10(τ);logadev = log10 (adev);Dlogadev = diff(logadev) ./ diff(logtau);[~, i] = min(abs(dlogadev - slope));求直线的y轴截距。B = logadev(i) - slope*logtau(i);%确定从直线随机游走的角度系数。logN = log(1) + b;N = 10 ^ logN%绘制结果。较= 1;lineN = N ./平方根(tau);数字对数(tau, adev, tau, lineN,“——”较,N,“o”)标题(“Allan偏差与角度随机行走”)包含(“\τ”) ylabel (“\σ(\τ)”)传说(‘\σ’“\ sigma_N”)文本(较,N,“N”网格)平等的
N = 0.0126

速率随机游走

速率随机游动是由陀螺仪输出的红噪声(布朗噪声)谱来表征的。PSD表示为:

$ $ S_ \ω(f) =(\压裂{K}{2 \π})^ 2 \压裂{1}{f ^ 2} $ $

在哪里

K=速率随机游走系数

代入原PSD方程,计算积分产率:

$ $ \σ^ 2(\τ)= \压裂{K ^ 2 \τ}{3}$ $

上面的方程是一条斜率为1/2的直线在的对数曲线上\σ(\τ)美元\τ美元.的价值K可以从这一行直接读出吗\τ= 3美元

找出对数比例的艾伦偏差的斜率相等的指标%到指定的斜率。斜率= 0.5;logtau = log10(τ);logadev = log10 (adev);Dlogadev = diff(logadev) ./ diff(logtau);[~, i] = min(abs(dlogadev - slope));求直线的y轴截距。B = logadev(i) - slope*logtau(i);%确定率随机游走系数从线。logK = slope*log10(3) + b;K = 10 ^ logK%绘制结果。tauK = 3;= K .*√(tau/3);图loglog(tau, adev, tau, lineK,“——”tauK, K,“o”)标题(" Allan Deviation with Rate Random Walk ")包含(“\τ”) ylabel (“\σ(\τ)”)传说(‘\σ’“\ sigma_K”)文本(tauK, K,“K”网格)平等的
K = 9.0679 e-05

偏见不稳定

偏置不稳定性的特征是陀螺仪输出的粉红色噪声(闪烁噪声)谱。PSD表示为:

$ $ S_{\ω}左(f) = \ \{\{数组}{lr}开始(\压裂{B ^ 2}{2 \π})\压裂{1}{f} & # xA; & # 38;: f \leq f_0\\0 &: f & # 62;f_0 \结束数组{}\ $ $

在哪里

B偏置不稳定系数

f_0美元=截止频率

代入原PSD方程,计算积分产率:

$ $ \σ^ 2(\τ)= \压裂{2 b ^ 2}{\π}[\ ln {2} + \ \ & # xA; - \压裂{罪^ 3 x} {2 x ^ 2} (sinx + 4 xcosx) + Ci (2 x) - Ci (4 x)) $ $

在哪里

$x = f_0 $

Ci=余弦积分函数

\τ美元比截止频率的倒数长得多,PSD方程为:

$ $ \σ^ 2(\τ)= \压裂{2 b ^ 2}{\π}\ ln {2} $ $

上面的方程是一条斜率为0的直线,在的对数-对数曲线上\σ(\τ)美元\τ美元.的价值B可以直接从这一行读取$ \√6{\压裂{2 \ ln{2}}{\π}}\大约0.664美元

找出对数比例的艾伦偏差的斜率相等的指标%到指定的斜率。斜率= 0;logtau = log10(τ);logadev = log10 (adev);Dlogadev = diff(logadev) ./ diff(logtau);[~, i] = min(abs(dlogadev - slope));求直线的y轴截距。B = logadev(i) - slope*logtau(i);从直线上确定偏差不稳定系数。scfB =√2 *日志(2)/ pi);logB = b - log10(scfB);B = 10 ^ logB%绘制结果。陶布=τ(i);linb = B * scfB * ones(size(tau));图loglog(tau, adev, tau, lineB,“——”陶布,scfB * B,“o”)标题(“带有偏置不稳定性的Allan偏差”)包含(“\τ”) ylabel (“\σ(\τ)”)传说(‘\σ’“\ sigma_B”)文本(陶布scfB * B,“0.664”网格)平等的
B = 0.0020

现在,所有的噪声参数已经计算,绘制Allan偏差与所有用于量化参数的线。

tauParams = [tauN, tauK, tauB];参数= [N, K, scfB*B];图loglog(tau, adev, tau, [lineN, lineK, linb],“——”...tauParams参数,“o”)标题(“Allan与噪声参数的偏差”)包含(“\τ”) ylabel (“\σ(\τ)”)传说(‘\σ’“\ sigma_N”“\ sigma_K”“\ sigma_B”) text(tauParams, params, {“N”“K”“0.664”})网格平等的

陀螺仪模拟

使用imuSensor目标用上述确定的噪声参数来模拟陀螺仪测量。

%模拟陀螺仪测量需要一些时间。为了避免这种情况,%测量被生成并保存到mat -文件中。默认情况下,这个%示例使用mat -文件。要生成度量值,请更改%此逻辑变量为true。generateSimulatedData = false;如果generateSimulatedData将陀螺仪参数设置为所确定的噪声参数%以上。陀螺= gyroparams (“NoiseDensity”N“随机散步”、钾、...“BiasInstability”, B);omegaSim = helperAllanVarianceExample(L, Fs,陀螺仪);其他的负载(“SimulatedSingleAxisGyroscope”“omegaSim”结束

计算模拟Allan偏差,并将其与记录数据进行比较。

[avarSim, tauSim] = allanvar(“八度”Fs);adevSim =√avarSim);adevSim = mean(adevSim, 2);%使用模拟的平均值。图loglog(tau, adev, tauSim, adevSim,“——”)标题(HW和模拟的Allan偏差)包含(“\τ”);ylabel (“\σ(\τ)”)传说(“HW”“SIM卡”网格)平等的

图中显示了陀螺仪模型的创建imuSensor生成与记录数据具有相似Allan偏差的测量值。模型测量包含稍微少的噪声,因为量化和温度相关的参数没有使用gyroparams.陀螺仪模型可以用来生成测量,使用的运动是不容易捕获的硬件。

参考文献

  • 单轴激光陀螺的IEEE标准规范格式指南和测试程序