这个例子展示了如何使用Allan方差来确定MEMS陀螺仪的噪声参数。这些参数可用于陀螺的仿真建模。陀螺仪测量模型为:
三噪声参数N(角随机游走),K(率随机漫步),和B(偏置不稳定性)是利用固定陀螺仪记录的数据来估计的。
Allan方差最初是由David W. Allan开发的,用于测量精密振荡器的频率稳定性。它也可以用来识别存在于静止陀螺仪测量中的各种噪声源。考虑l采样时间为的陀螺仪的数据样本.形成持续时间的数据集群,、……并得到每个聚类中包含的数据点之和除以聚类长度的平均值。Allan方差被定义为数据聚类平均的两样本方差作为聚类时间的函数。这个例子使用重叠Allan方差估计。这意味着计算的集群是重叠的。对于较大的值,该估计器比非重叠估计器性能更好l.
Allan方差的计算方法如下:
日志l固定陀螺仪具有采样周期.让被记录的样本。
%从三轴陀螺仪的一个轴加载记录数据。这段录音%在6小时内以100赫兹的采样率进行。负载(“LoggedSingleAxisGyroscope”,“ω”,“Fs”) t0 = 1/Fs;
对于每个样本,计算输出角度:
对于离散样本,累加和乘以可以使用。
= cumsum(1)*t0;
接下来,计算Allan方差:
在哪里和为集合平均值。
综上平均可以扩展为:
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));
最后是艾伦偏差用于确定陀螺仪噪声参数。
adev =√阿瓦尔人);图loglog(tau, adev)标题(“艾伦偏差”)包含(“\τ”);ylabel (“\σ(\τ)”网格)在轴平等的
Allan方差也可以用allanvar
函数。
[avarFromFunc, tauFromFunc] = allanvar(omega, m, Fs);adevFromFunc =√avarFromFunc);图loglog(tau, adev, tauFromFunc, adevFromFunc);标题(“艾伦偏差”)包含(“\τ”) ylabel (“\σ(\τ)”)传说(手工计算的,“allanvar函数”网格)在轴平等的
为了获得陀螺仪的噪声参数,使用原始数据集中噪声参数的Allan方差与双边功率谱密度(PSD)之间的以下关系.的关系是:
由上式可知,当通过传递函数为的滤波器时,Allan方差与陀螺仪的总噪声功率成正比.这个传递函数产生于创建和操作集群的操作。
使用这种传递函数解释,滤波器带通依赖于.这意味着可以通过改变滤波器带通或变化来识别不同的噪声参数.
通过陀螺仪输出的白噪声谱来表征角随机游走。PSD表示为:
在哪里
N=角度随机游走系数
代入原PSD方程,计算积分产率:
上面的方程是一条斜率为-1/2的直线在的对数曲线上与.的价值N可以从这一行直接读出吗.
找出对数比例的艾伦偏差的斜率相等的指标%到指定的斜率。斜率= -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表示为:
在哪里
K=速率随机游走系数
代入原PSD方程,计算积分产率:
上面的方程是一条斜率为1/2的直线在的对数曲线上与.的价值K可以从这一行直接读出吗.
找出对数比例的艾伦偏差的斜率相等的指标%到指定的斜率。斜率= 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表示为:
在哪里
B偏置不稳定系数
=截止频率
代入原PSD方程,计算积分产率:
在哪里
Ci=余弦积分函数
当比截止频率的倒数长得多,PSD方程为:
上面的方程是一条斜率为0的直线,在的对数-对数曲线上与.的价值B可以直接从这一行读取.
找出对数比例的艾伦偏差的斜率相等的指标%到指定的斜率。斜率= 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标准规范格式指南和测试程序