主要内容

模拟IMU测量的简介

此示例显示如何使用该示例模拟惯性测量单元(IMU)测量imusvesor.(传感器融合与跟踪工具箱)系统对象。IMU可以包括单个传感器的组合,包括陀螺仪、加速度计和磁力计。使用。可以指定单个传感器的属性gyroparams(传感器融合与跟踪工具箱),加速(传感器融合与跟踪工具箱), 和magparams(传感器融合与跟踪工具箱),分别。

在下面的图中,除非另有说明,只显示x轴的测量值。

默认参数

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

params = gyroparams%以S正弦频率的FS的采样率生成N个样本%的Fc。n = 1000;FS = 100;Fc = 0.25;t =(0:(1 / fs):((n-1)/ fs))。';ACC =零(n,3);angvel =零(n,3);agvel(:,1)= sin(2 * pi * fc * t);imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题('理想的陀螺数据')传说(“x(地面实况),“x(陀螺仪)')
params = gyroparams属性:MeasurementRange:正rad / s决议:0 (rad / s) / LSB ConstantBias: [0 0 0] rad / s AxesMisalignment: [0 0 0] % 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²)

硬件参数调优

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

MeasurementRange确定陀螺仪报告的最大绝对值。较大的绝对值是饱和的。通过将测量范围设定为小于正弦地面真理角速度的幅度的值来示出效果。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.gyroscope.measurementrange = 0.5;%rad / s[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题('饱和陀螺数据')传说(“x(地面实况),“x(陀螺仪)')

解析度影响数字测量的步长。使用此参数对模数转换器(ADC)的量化效果进行建模。将参数增加到一个比一般情况大得多的值,这就表明了这种效果。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.gyroscope.resolution = 0.5;% (rad / s) / LSB[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题(“量子化的陀螺仪数据”)传说(“x(地面实况),“x(陀螺仪)')

Axesmisalign.是传感器轴中的歪斜量。当传感器安装到PCB时,这种倾斜通常会发生,并且可以通过校准进行校正。通过略微偏斜X轴并绘制X轴和Y轴来示出效果。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.gyroscope.axesmisalignment = [2 0 0];% %[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (:, 1:2),“——”,t,gyrodata(:,1:2))Xlabel('时间'')ylabel('角速度(rad / s)') 标题(“偏差陀螺仪数据”)传说(“x(地面实况),“y”(地面实况),“x(陀螺仪)',y(陀螺仪)')

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

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.ConstantBias = [0.4 0 0];%rad / s[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题(“有偏见的陀螺仪数据”)传说(“x(地面实况),“x(陀螺仪)')

随机噪声参数调谐

以下参数模拟传感器测量中的随机噪声。关于这些参数的更多信息可以在惯性传感器噪声的Allan方差分析(传感器融合与跟踪工具箱)例子。

黑暗度是传感器测量中的白噪声量。对于加速度计,有时被称为陀螺仪或速度随机行走的角度随机行走。

RNG('默认')imu = imusensor(“SampleRate”Fs,“陀螺”、参数);imu.gyroscope.noisedensity = 1.25e-2;%(rad / s)/ sqrt(hz)[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题('白色噪音陀螺数据')传说(“x(地面实况),“x(陀螺仪)')

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

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.gyroscope.biasinstability = 2.0e-2;%rad / s[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题(“偏差不稳定陀螺仪数据”)传说(“x(地面实况),“x(陀螺仪)')

随机散步是传感器测量中的布朗噪声的数量。它有时被称为随机行走的陀螺仪或加速随机行走,用于加速度计。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.RandomWalk = 9.1依照;%(rad / s)* sqrt(hz)[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题(“随机漫步陀螺仪数据”)传说(“x(地面实况),“x(陀螺仪)')

环境参数调优

以下参数模型噪声源于传感器的环境的变化。

TemperatureBias由于与默认工作温度的温差,偏置是传感器测量。大多数传感器数据表列出默认工作温度为25摄氏度。通过将参数设置为非零值并将工作温度设置为25摄氏度高于25摄氏度的值来示出该偏差。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.TemperatureBias = 0.06;% (rad / s) /(摄氏度)imu。温度= 35;[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题(“Temperature-Biased陀螺仪数据”)传说(“x(地面实况),“x(陀螺仪)')

温度劳动力是由于工作温度的变化而引起的传感器刻度因子中的误差。这将导致测量的缩放误差;换句话说,较小的理想值比较大的值误差小。这个误差可以通过线性增加温度来表示。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.TemperatureScaleFactor = 3.2;% % /(摄氏度)standardtemperature = 25;%摄氏度温度= 2;%(摄氏度)/ s温度=温度升温* T +标准化;gyrodata =零(n,3);i = 1:N imu。温度=温度(我);[~, gyroData(i,:)] = imu(acc(i,:), angvel(i,:));结束图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题('温度缩放的陀螺仪数据')传说(“x(地面实况),“x(陀螺仪)')

加速纤维是由于线性加速度而添加到陀螺仪测量中的偏差。这个参数是陀螺仪特有的。通过将参数设置为非零值并使用非零输入加速度来显示这种偏差。

imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.gyroscope.accelerationBias = 0.3;% (rad / s) / (m / s ^ 2)acc (: 1) = 1;[~, gyroData] = imu(acc, angvel);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel('时间'')ylabel('角速度(rad / s)') 标题('加速 - 偏见陀螺数据')传说(“x(地面实况),“x(陀螺仪)')