主要内容

IMU测量模拟简介

这个例子展示了如何模拟惯性测量单元(IMU)测量使用imuSensor系统对象。IMU可以包括各个传感器的组合,包括陀螺仪,加速度计和磁力计。您可以使用以下方法指定单个传感器的属性Gyroparams.accelparams,magparams., 分别。

在下列图中,除非另有说明,否则只显示x轴的测量值。使用滑块交互式地调整参数。

默认参数

陀螺仪模型的默认参数模拟了理想的信号。鉴于正弦输入,陀螺仪输出应完全匹配。

params = gyroparams.
params = gyroparams属性:MeasurementRange:正rad / s决议:0 (rad / s) / LSB ConstantBias: [0 0 0] rad / s AxesMisalignment: [3 x3双]% NoiseDensity: [0 0 0] (rad / s) /√赫兹BiasInstability: [0 0 0] rad / s随机散步:[0 0 0](rad / s) *√赫兹TemperatureBias: [0 0 0] (rad / s) /°C TemperatureScaleFactor:[0 0 0] % /°C AccelerationBias:[0 0 0] (rad/s)/(m/s²)
%生成N个样本,采样率为Fs,频率为正弦占FC的百分比。N = 1000;Fs = 100;Fc = 0.25;t = (0: (1 / Fs): ((n - 1) / Fs)。”;acc = 0 (N, 3);角度= 0 (N, 3);angvel(: 1) =罪(2 *π* Fc * t);imu = imusensor('采样率',fs,'陀螺仪'、参数);[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题(“理想的陀螺仪数据”) 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。标题为理想陀螺仪数据的轴对象包含2个类型为线的对象。这些对象代表x(地面真相),x(陀螺仪)。

硬件参数调整

以下参数模拟硬件限制或缺陷。有些可以通过校准进行校正。

测量范围确定陀螺仪报告的最大绝对值。较大的绝对值是饱和的。通过将测量范围设置为一个小于正弦地面真实角速度振幅的值来显示这种效果。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.Gyroscope.MeasurementRange =0.5;% rad /秒[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题(“饱和陀螺仪数据”) 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。标题为饱和陀螺仪数据的轴对象包含2个类型为line的对象。这些对象代表x(地面真相),x(陀螺仪)。

决议影响数字测量的步长。使用此参数来模拟模数转换器(ADC)的量化效果。通过将参数增加到比典型值更大的值更大的值来显示效果。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.gyroscope.resolution =.0.5;%(rad / s)/ lsb[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题('量化陀螺数据') 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。具有标题量化陀螺数据的轴对象包含2个类型的2个对象。这些对象代表x(地面真相),x(陀螺仪)。

AxesMisalignment为传感器轴上的倾斜量。这种倾斜通常发生在传感器安装到PCB上时,可以通过校准来校正。这种效果是通过略微倾斜x轴和绘制x轴和y轴来显示的。

imu = imusensor('采样率',fs,'陀螺仪'、参数);Xmisalignment =.2;% 百分imu.gyroscope.axesmisalignment = [xmisalignment,0,0];% 百分[~, gyroData] = imu(acc,角度);图绘图(T,Angvel(:,1:2),' - ', t, gyroData(:,1:2)) xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题('错位陀螺数据') 传奇(“x(地面实况)'y(地面真相)'......“x(陀螺仪)''Y(陀螺)'

图中包含一个轴对象。具有标题未对齐陀螺仪数据的轴对象包含4个类型的线。这些对象代表x(地面真相),y(地面真相),x(陀螺仪),y(陀螺)。

Constantbias.由于硬件缺陷在传感器测量中发生。由于这种偏差不是由温度等环境因素造成的,因此可以通过校准进行校正。

imu = imusensor('采样率',fs,'陀螺仪'、参数);xBias =0.4;% rad /秒imu.Gyroscope.ConstantBias = [xBias, 0,0];% rad /秒[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题(“有偏见的陀螺仪数据”) 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。标题为偏置陀螺仪数据的轴对象包含两个类型为线的对象。这些对象代表x(地面真相),x(陀螺仪)。

随机噪声参数调整

以下参数模拟传感器测量中的随机噪声。有关这些参数的更多信息可在使用Allan方差的惯性传感器噪声分析的例子。

NoiseDensity为传感器测量中的白噪声量。它有时被称为陀螺仪的角度随机行走或加速度计的速度随机行走。

rng (“默认”) imu = imussensor ('采样率',fs,'陀螺仪'、参数);imu.Gyroscope.NoiseDensity =0.0125;% (rad / s) /√(赫兹)[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题(“白噪声陀螺仪数据”) 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。标题为白噪声陀螺仪数据的轴对象包含2个类型为line的对象。这些对象代表x(地面真相),x(陀螺仪)。

BiasInstability是传感器测量中的粉红色或闪烁噪声的量。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.Gyroscope.BiasInstability =0.02;% rad /秒[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题('偏见不稳定陀螺数据') 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。标题为“偏置不稳定陀螺仪数据”的轴对象包含2个类型为线的对象。这些对象代表x(地面真相),x(陀螺仪)。

randywalk.为传感器测量中布朗噪声的量。它有时被称为陀螺仪的速率随机游动或加速度计的加速度随机游动。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.Gyroscope.RandomWalk =0.091;% (rad / s) * sqrt(赫兹)[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题('随机步行陀螺数据') 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。具有标题随机步行陀螺仪数据的轴对象包含2个类型的物体。这些对象代表x(地面真相),x(陀螺仪)。

环境参数调整

以下参数描述了由于传感器环境变化而产生的噪声。

温度纤维纤维是由于与默认工作温度的温差而增加到传感器测量中的偏差。大多数传感器数据表列出默认操作温度为25摄氏度。通过将参数设置为非零值,并将操作温度设置为大于25摄氏度的值,可以显示这种偏差。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.gyroscope.temperaturebias =.0.06;%(rad / s)/(volesc)imu。温度= 35;[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题('温度偏置陀螺数据') 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。具有标题温度偏置陀螺仪数据的轴对象包含2个类型的2个物体。这些对象代表x(地面真相),x(陀螺仪)。

TemperatureScaleFactor由于工作温度的变化,传感器比例因子中的错误是由于工作温度的变化。这导致测量缩放中的错误;换句话说,较小的理想值具有比较大值更少的误差。通过线性增加温度显示此误差。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.gyroscope.temperaturescalefactor =.3.2;%% /(volesc)standardTemperature = 25;%摄氏度temperatureSlope = 2;%(度C)/ s温度=温度值*t +标准温度;gyroData = 0 (N, 3);为了i = 1:n imu.temperature =温度(i);[〜,gyrodata(我,:)] = imu(acc(我,:),agvel(我,:));结尾图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题(“Temperature-Scaled陀螺仪数据”) 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。标题为“温度缩放陀螺仪数据”的轴对象包含2个类型为line的对象。这些对象代表x(地面真相),x(陀螺仪)。

AccelerationBias是否由于线性加速而添加到陀螺仪测量中的偏差。此参数特定于陀螺仪。通过将参数设置为非零值并使用非零输入加速来示出该偏差。

imu = imusensor('采样率',fs,'陀螺仪'、参数);imu.Gyroscope.AccelerationBias =0.3;%(rad / s)/(m / s ^ 2)ACC(:,1)= 1;[~, gyroData] = imu(acc,角度);图绘图(t,angvel(:,1),' - ',t,gyrodata(:,1))xlabel(“时间(s)”) ylabel (“角速度(rad / s)”)标题(“Acceleration-Biased陀螺仪数据”) 传奇(“x(地面实况)“x(陀螺仪)'

图中包含一个轴对象。具有标题加速 - 偏置陀螺仪数据的轴对象包含2个类型的类型。这些对象代表x(地面真相),x(陀螺仪)。