这个例子展示了如何模拟惯性测量单元(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(陀螺仪)')
以下参数模拟硬件限制或缺陷。有些可以通过校准进行校正。
测量范围
确定陀螺仪报告的最大绝对值。较大的绝对值是饱和的。通过将测量范围设置为一个小于正弦地面真实角速度振幅的值来显示这种效果。
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(陀螺仪)')
决议
影响数字测量的步长。使用此参数来模拟模数转换器(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(陀螺仪)')
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(陀螺)')
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(陀螺仪)')
以下参数模拟传感器测量中的随机噪声。有关这些参数的更多信息可在使用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(陀螺仪)')
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(陀螺仪)')
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(陀螺仪)')
以下参数描述了由于传感器环境变化而产生的噪声。
温度纤维纤维
是由于与默认工作温度的温差而增加到传感器测量中的偏差。大多数传感器数据表列出默认操作温度为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(陀螺仪)')
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(陀螺仪)')
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(陀螺仪)')