此示例演示如何使用免疫传感器
系统对象。IMU可以包括单个传感器的组合,包括陀螺仪、加速度计和磁力计。您可以使用命令指定单个传感器的属性gyroparams
,加速度参数
和magparams
,分别。
在以下图中,除非另有说明,否则仅显示x轴测量值。使用滑块以交互方式调整参数。
陀螺仪模型的默认参数模拟一个理想信号。给定一个正弦输入,陀螺仪输出应该完全匹配。
params = gyroparams
参数=具有以下属性的陀螺参数:测量传输:Inf rad/s分辨率:0(rad/s)/LSB ConstantBias:[0 0]rad/s轴对齐:[3x3 double]%噪声:[0 0](rad/s)/√Hz BiasInstability:[0 0]rad/s RandomWalk:[0 0 0](rad/s)*√赫兹温度基准:[0.0](rad/s)/°C温度标度系数:[0.0]/°C加速度偏差:[0.0](rad/s)/(m/s²)
%以Fs的采样率以正弦频率生成N个样本%的Fc。N=1000;Fs=100;Fc=0.25;t=(0:(1/Fs):((N-1)/Fs));acc=0(N,3);angvel=0(N,3);angvel(:,1)=sin(2*pi*Fc*t);imu=imuSensor(“SampleRate”Fs,“陀螺”,参数);[~,陀螺仪数据]=imu(加速度,安电平);图1(t,angvel(:,1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“理想陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
以下参数为硬件限制或缺陷建模。有些可以通过校准进行校正。
MeasurementRange
确定陀螺仪报告的最大绝对值。较大的绝对值是饱和的。通过将测量范围设置为小于正弦地面真实角速度振幅的值来显示效果。
imu = imuSensor (“SampleRate”Fs,“陀螺”,参数);惯性陀螺仪;测量=0.5;%拉德/秒[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“饱和陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
决议
影响数字测量的步长。使用这个参数来模拟模数转换器(ADC)的量化效果。通过将参数增加到一个比典型值大得多的值来显示这种效果。
imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.Resolution =0.5;% (rad / s) / LSB[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“量子化的陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
轴错位
是传感器轴上的倾斜量。传感器安装到PCB上时通常会发生这种倾斜,可以通过校准进行校正。这种效果通过稍微倾斜x轴并绘制x轴和y轴来显示。
imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);xMisalignment =2;% %imu.Gyroscope.AxesMisalignment = [xMisalignment, 0,0];% %[~, gyroData] = imu(acc,角度);图绘制(t, angvel (:, 1:2),“——”,t,陀螺数据(:,1:2))xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“偏差陀螺仪数据”)传说(“x(地面实况),“y”(地面实况),...‘x(陀螺仪)’,y(陀螺仪)')
ConstantBias
由于硬件缺陷在传感器测量中发生。由于该偏差不是由环境因素(如温度)引起的,因此可以通过校准进行校正。
imu = imuSensor (“SampleRate”Fs,“陀螺”,参数);西比亚斯=0.4;%拉德/秒imu.Gyroscope.ConstantBias = [xBias, 0,0];%拉德/秒[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“偏置陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
以下参数模拟传感器测量中的随机噪声。有关这些参数的更多信息可在基于Allan方差的惯性传感器噪声分析实例
噪音
是传感器测量中的白噪声量。它有时被称为陀螺仪的角度随机游动或加速度计的速度随机游动。
rng (“默认”)imu=imu传感器(“SampleRate”Fs,“陀螺”,参数);陀螺噪声=0.0125;% (rad / s) /√(赫兹)[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“白噪声陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
双星稳定性
是传感器测量中粉红色或闪烁噪声的量。
imu = imuSensor (“SampleRate”Fs,“陀螺”,参数);惯性陀螺仪偏置稳定性=0.02;%拉德/秒[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“偏置不稳定陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
随机散步
为传感器测量中布朗噪声的量。它有时被称为陀螺仪的速率随机游动或加速度计的加速度随机游动。
imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.RandomWalk =0.091;%(拉德/秒)*平方米(赫兹)[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“随机行走陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
以下参数为传感器环境变化引起的噪声建模。
TemperatureBias
是由于与默认工作温度的温差而增加到传感器测量中的偏差。大多数传感器数据表列出默认操作温度为25摄氏度。通过将参数设置为非零值,并将操作温度设置为大于25摄氏度的值,可以显示这种偏差。
imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.TemperatureBias =0.06;% (rad / s) /(摄氏度)imu.温度=35;[~,陀螺仪数据]=imu(加速度,安电平);图1(t,angvel(:,1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“Temperature-Biased陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
温度刻度因子
为由于工作温度变化而引起的传感器比例因子的误差。这导致测量的比例误差;换句话说,较小的理想值比较大的值误差更小。这个误差用线性增加温度来表示。
imu = imuSensor (“SampleRate”Fs,“陀螺”、参数);imu.Gyroscope.TemperatureScaleFactor =3.2;% % /(摄氏度)标准温度=25;%摄氏度温度斜率=2;%(摄氏度)/ s温度=温度斜率*t+标准温度;陀螺数据=零(N,3);为i = 1:N imu。温度=温度(我);[~, gyroData(i,:)] = imu(acc(i,:),角度(i,:)));结束图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“温度标度陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)
加速偏压
为由于线性加速度而增加到陀螺仪测量中的偏置。这个参数是陀螺仪特有的。通过将参数设置为非零值并使用非零输入加速度来显示该偏差。
imu = imuSensor (“SampleRate”Fs,“陀螺”,参数);陀螺加速度偏差=0.3;% (rad / s) / (m / s ^ 2)acc (: 1) = 1;[~, gyroData] = imu(acc,角度);图绘制(t, angvel (: 1),“——”, t, gyroData(:,1)) xlabel(‘时间’)伊拉贝尔('角速度(rad/s)')头衔(“加速度偏置陀螺仪数据”)传说(“x(地面实况),‘x(陀螺仪)’)