主要内容gydF4y2Ba

imuSensorgydF4y2Ba

IMU仿真模型gydF4y2Ba

描述gydF4y2Ba

的gydF4y2BaimuSensorgydF4y2Ba从惯性测量单元(IMU)接收数据的系统对象™模型。可以将块输入的参考帧指定为gydF4y2Ba内德gydF4y2Ba(North-East-Down)或gydF4y2BaENU表示gydF4y2Ba(东-北-上)框架gydF4y2BaReferenceFramegydF4y2Ba论点。gydF4y2Ba

为IMU建模:gydF4y2Ba

  1. 创建gydF4y2BaimuSensorgydF4y2Ba对象并设置其属性。gydF4y2Ba

  2. 调用带有参数的对象,就像调用函数一样。gydF4y2Ba

要了解更多关于System对象如何工作的信息,请参见gydF4y2Ba什么是系统对象?gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

IMUgydF4y2Ba= imuSensorgydF4y2Ba返回一个System对象,gydF4y2BaIMUgydF4y2Ba,根据惯性输入信号计算惯性测量单元读数。gydF4y2BaIMUgydF4y2Ba具有理想的加速度计和陀螺仪。gydF4y2Ba

例子gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-gyro”gydF4y2Ba)gydF4y2Ba返回一个gydF4y2BaimuSensorgydF4y2Ba系统对象具有理想的加速度计和陀螺仪。gydF4y2BaimuSensorgydF4y2Ba而且gydF4y2BaimuSensor(“accel-gyro”)gydF4y2Ba是等价的创建语法。gydF4y2Ba

例子gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-mag”gydF4y2Ba)gydF4y2Ba返回一个gydF4y2BaimuSensorgydF4y2Ba系统对象具有理想的加速度计和磁强计。gydF4y2Ba

例子gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-gyro-mag”gydF4y2Ba)gydF4y2Ba返回一个gydF4y2BaimuSensorgydF4y2Ba系统对象具有理想的加速度计、陀螺仪和磁强计。gydF4y2Ba

IMU = imuSensor (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba“ReferenceFrame”gydF4y2Ba,gydF4y2Ba射频gydF4y2Ba)gydF4y2Ba返回一个gydF4y2BaimuSensorgydF4y2Ba计算相对于参考系的惯性测量单元读数的系统对象gydF4y2Ba射频gydF4y2Ba.指定gydF4y2Ba射频gydF4y2Ba作为gydF4y2BaNED的gydF4y2Ba(North-East-Down)或gydF4y2Ba“ENU表示”gydF4y2Ba(East-North-Up)。默认值为gydF4y2BaNED的gydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

  • 如果选择NED参考系,请指定在NED参考系中的传感器输入。此外,传感器将重力加速度建模为[0 0 9.81]m/sgydF4y2Ba2gydF4y2Ba.gydF4y2Ba

  • 如果选择ENU参考系,请指定ENU参考系中的传感器输入。此外,传感器将重力加速度建模为[0 0−9.81]m/sgydF4y2Ba2gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

IMU = imuSensor (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba每个属性集gydF4y2Ba的名字gydF4y2Ba到指定的gydF4y2Ba价值gydF4y2Ba.未指定的属性有默认值。此语法可以与前面的任何输入参数结合使用。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

除非另有说明,属性为gydF4y2BanontunablegydF4y2Ba,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而gydF4y2Ba释放gydF4y2Ba函数打开它们。gydF4y2Ba

如果属性是gydF4y2Ba可调gydF4y2Ba,您可以随时更改其值。gydF4y2Ba

有关更改属性值的更多信息,请参见gydF4y2Ba在MATLAB中使用系统对象设计系统gydF4y2Ba.gydF4y2Ba

惯性测量装置的类型,称为agydF4y2Ba“accel-gyro”gydF4y2Ba,gydF4y2Ba“accel-mag”gydF4y2Ba,或gydF4y2Ba“accel-gyro-mag”gydF4y2Ba.gydF4y2Ba

惯性测量单元的类型指定了要建模的传感器读数:gydF4y2Ba

  • “accel-gyro”gydF4y2Ba——加速度计和陀螺仪gydF4y2Ba

  • “accel-mag”gydF4y2Ba——加速度计和磁力计gydF4y2Ba

  • “accel-gyro-mag”gydF4y2Ba-加速度计,陀螺仪和磁强计gydF4y2Ba

您可以指定gydF4y2BaIMUTypegydF4y2Ba在创建过程中作为仅值参数或作为gydF4y2Ba名称,值gydF4y2Ba对。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

传感器模型的采样率,以Hz为单位,指定为正标量。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

IMU的工作温度,以摄氏度为单位,指定为一个实标量。gydF4y2Ba

当对象计算温度尺度因子和环境漂移噪声时,25gydF4y2BaogydF4y2Ba用C作为标称温度。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

以微特斯拉为单位的磁场矢量,在局部导航坐标系中指定为三元素行向量。gydF4y2Ba

默认磁场对应于纬度0、经度0和海拔0处的磁场。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

加速度计传感器参数,由gydF4y2BaaccelparamsgydF4y2Ba对象。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

陀螺仪传感器参数,由a指定gydF4y2BagyroparamsgydF4y2Ba对象。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

磁强计传感器参数,由a指定gydF4y2BamagparamsgydF4y2Ba对象。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

随机数字源,指定为字符向量或字符串:gydF4y2Ba

  • “全球流”gydF4y2Ba——使用当前全局随机数流生成随机数。gydF4y2Ba

  • “与种子mt19937ar”gydF4y2Ba-使用mt19937ar算法和指定的种子生成随机数gydF4y2Ba种子gydF4y2Ba财产。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

mt19937ar随机数生成器算法的初始种子,指定为实数非负整数标量。gydF4y2Ba

依赖关系gydF4y2Ba

若要启用此属性,请设置gydF4y2BaRandomStreamgydF4y2Ba来gydF4y2Ba“与种子mt19937ar”gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

使用gydF4y2Ba

描述gydF4y2Ba

[gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba)gydF4y2Ba从加速度和角速度输入生成加速度计和陀螺仪读数。gydF4y2Ba

此语法仅在以下情况下有效gydF4y2BaIMUTypegydF4y2Ba被设置为gydF4y2Ba“accel-gyro”gydF4y2Ba或gydF4y2Ba“accel-gyro-mag”gydF4y2Ba.gydF4y2Ba

[gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba,gydF4y2Ba取向gydF4y2Ba)gydF4y2Ba根据加速度、角速度和方向输入生成加速度计和陀螺仪读数。gydF4y2Ba

此语法仅在以下情况下有效gydF4y2BaIMUTypegydF4y2Ba被设置为gydF4y2Ba“accel-gyro”gydF4y2Ba或gydF4y2Ba“accel-gyro-mag”gydF4y2Ba.gydF4y2Ba

[gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba)gydF4y2Ba从加速度和角速度输入生成加速度计和磁强计读数。gydF4y2Ba

此语法仅在以下情况下有效gydF4y2BaIMUTypegydF4y2Ba被设置为gydF4y2Ba“accel-mag”gydF4y2Ba.gydF4y2Ba

[gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba,gydF4y2Ba取向gydF4y2Ba)gydF4y2Ba根据加速度、角速度和方向输入生成加速度计和磁强计读数。gydF4y2Ba

此语法仅在以下情况下有效gydF4y2BaIMUTypegydF4y2Ba被设置为gydF4y2Ba“accel-mag”gydF4y2Ba.gydF4y2Ba

[gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba)gydF4y2Ba从加速度和角速度输入生成加速度计、陀螺仪和磁强计读数。gydF4y2Ba

此语法仅在以下情况下有效gydF4y2BaIMUTypegydF4y2Ba被设置为gydF4y2Ba“accel-gyro-mag”gydF4y2Ba.gydF4y2Ba

[gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba,gydF4y2Ba取向gydF4y2Ba)gydF4y2Ba从加速度、角速度和方向输入生成加速度计、陀螺仪和磁强计读数。gydF4y2Ba

此语法仅在以下情况下有效gydF4y2BaIMUTypegydF4y2Ba被设置为gydF4y2Ba“accel-gyro-mag”gydF4y2Ba.gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

IMU在局部导航坐标系中的加速度,指定为实数,有限值gydF4y2BaNgydF4y2Ba-by-3数组,单位为米每秒的平方。gydF4y2BaNgydF4y2Ba是当前帧中的样本数。不要在这个输入中包含重力加速度,因为传感器默认情况下模拟重力加速度。gydF4y2Ba

要指定IMU传感器体帧相对于本地导航帧的方向,请使用gydF4y2Ba取向gydF4y2Ba输入参数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

IMU在局部导航坐标系中的角速度,指定为实数,有限gydF4y2BaNgydF4y2Ba-by-3数组,单位为弧度/秒。gydF4y2BaNgydF4y2Ba是当前帧中的样本数。要指定IMU传感器体帧相对于本地导航帧的方向,请使用gydF4y2Ba取向gydF4y2Ba输入参数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

IMU相对于本地导航坐标系的方向,指定为gydF4y2Ba四元数gydF4y2BaNgydF4y2Ba-元素列向量或3 × 3 × -gydF4y2BaNgydF4y2Ba旋转矩阵。每一个gydF4y2Ba四元数gydF4y2Ba或旋转矩阵表示从本地导航坐标系到当前IMU传感器体坐标系的帧旋转。gydF4y2BaNgydF4y2Ba是当前帧中的样本数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba四元数gydF4y2Ba

输出参数gydF4y2Ba

全部展开gydF4y2Ba

加速度计测量的IMU在传感器体坐标系中,指定为实数,有限gydF4y2BaNgydF4y2Ba-by-3数组,单位为米每秒的平方。gydF4y2BaNgydF4y2Ba是当前帧中的样本数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

陀螺仪测量的IMU在传感器体坐标系中,指定为实数,有限gydF4y2BaNgydF4y2Ba-by-3数组,单位为弧度/秒。gydF4y2BaNgydF4y2Ba是当前帧中的样本数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

磁强计测量的IMU在传感器体坐标系中,指定为实数,有限gydF4y2BaNgydF4y2Bamicrotelsa中的-by-3数组。gydF4y2BaNgydF4y2Ba是当前帧中的样本数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

对象的功能gydF4y2Ba

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为gydF4y2BaobjgydF4y2Ba,使用以下语法:gydF4y2Ba

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

loadparamsgydF4y2Ba 从JSON文件加载传感器参数gydF4y2Ba
扰动gydF4y2Ba 物体上的摄动gydF4y2Ba
扰乱gydF4y2Ba 对物体施加扰动gydF4y2Ba
一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源并允许更改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 的内部状态重置gydF4y2Ba系统对象gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

的gydF4y2BaimuSensorgydF4y2Ba系统对象™使您能够对从惯性测量单元接收到的数据进行建模,惯性测量单元由陀螺仪、加速度计和磁强计组成。gydF4y2Ba

创建一个默认的gydF4y2BaimuSensorgydF4y2Ba对象。gydF4y2Ba

IMU = imuSensorgydF4y2Ba
IMU = imuSensor属性:IMUType: 'accel- gyams ' SampleRate: 100温度:25加速度计:[1x1 accelerparams]陀螺仪:[1x1 gyroparams] RandomStream: '全局流'gydF4y2Ba

的gydF4y2BaimuSensorgydF4y2Ba对象,gydF4y2BaIMUgydF4y2Ba,包含一个理想的陀螺仪和加速度计。使用点表示法查看陀螺仪的属性。gydF4y2Ba

IMU。陀螺仪gydF4y2Ba
ans = gyroparams with properties: MeasurementRange: Inf rad/s分辨率:0 (rad/s)/LSB ConstantBias: [0 0 0] rad/s AxesMisalignment: [3x3 double] % nois密度:[0 0 0](rad/s)/√Hz biasstability: [0 0 0] rad/s RandomWalk: [0 0 0] (rad/s)*√Hz TemperatureBias: [0 0 0] (rad/s)/°C TemperatureScaleFactor:[0 0 0] %/°C AccelerationBias: [0 0 0] (rad/s)/(m/s²)gydF4y2Ba

传感器属性由相应的参数对象定义。例如,陀螺仪模型所使用的gydF4y2BaimuSensorgydF4y2Ba的实例定义的gydF4y2BagyroparamsgydF4y2Ba类。您可以使用点表示法修改陀螺仪模型的属性。将陀螺仪测量范围设置为4.3 rad/s。gydF4y2Ba

IMU.Gyroscope.MeasurementRange = 4.3;gydF4y2Ba

还可以将传感器属性设置为预设参数对象。创建一个gydF4y2BaaccelparamsgydF4y2Ba对象来模拟特定的硬件,然后设置IMUgydF4y2Ba加速度计gydF4y2Ba财产gydF4y2BaaccelparamsgydF4y2Ba对象。显示gydF4y2Ba加速度计gydF4y2Ba属性以验证属性已正确设置。gydF4y2Ba

SpecSheet1 = accelparams (gydF4y2Ba...gydF4y2Ba“MeasurementRange”gydF4y2Ba, 19.62,gydF4y2Ba...gydF4y2Ba“决议”gydF4y2Ba, 0.00059875,gydF4y2Ba...gydF4y2Ba“ConstantBias”gydF4y2Ba, 0.4905,gydF4y2Ba...gydF4y2Ba“AxesMisalignment”gydF4y2Ba2,gydF4y2Ba...gydF4y2Ba“NoiseDensity”gydF4y2Ba, 0.003924,gydF4y2Ba...gydF4y2Ba“BiasInstability”gydF4y2Ba0,gydF4y2Ba...gydF4y2Ba“TemperatureBias”gydF4y2Ba, [0.34335 0.34335 0.5886],gydF4y2Ba...gydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba, 0.02);IMU。一个ccelero米eter=SpecSheet1; IMU.Accelerometer
MeasurementRange: 19.62 m/s²分辨率:0.00059875 (m/s²)/LSB ConstantBias: [0.4905 0.905 0.905 m/s²AxesMisalignment: [3x3 double] % noisdensity: [0.003924 0.003924 0.003924] (m/s²)/√Hz BiasInstability: [0 00] m/s²RandomWalk: [0 00] (m/s²)*√Hz TemperatureBias: [0.34335 0.34335 0.5886] (m/s²)/℃TemperatureScaleFactor:[0.02 0.02 0.02] %/℃gydF4y2Ba

使用gydF4y2BaimuSensorgydF4y2Ba系统对象™用于模拟从包含加速度计、陀螺仪和磁强计的静止理想IMU接收数据。gydF4y2Ba

创建一个包含加速度计、陀螺仪和磁强计的理想IMU传感器模型。gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-gyro-mag”gydF4y2Ba)gydF4y2Ba
IMU = imussensor属性:IMUType: ' accelerate -gyro-mag' SampleRate: 100温度:25磁场:[27.5550 -2.4169 -16.0849]加速度计:[1x1 accelerparams]陀螺仪:[1x1 gyroparams]磁强计:[1x1 magparams] RandomStream: '全局流'gydF4y2Ba

定义你所建模的IMU的基本真相和基本运动。加速度和角速度是相对于局部NED坐标系定义的。gydF4y2Ba

numSamples = 1000;加速度= 0 (numSamples, 3);angularVelocity = 0 (numSamples, 3);gydF4y2Ba

调用gydF4y2BaIMUgydF4y2Ba用真实的加速度和角速度。对象输出加速度计读数、陀螺仪读数和磁强计读数,这是根据属性建模的gydF4y2BaimuSensorgydF4y2Ba系统对象。加速度计读数、陀螺仪读数和磁强计读数相对于IMU传感器体坐标系。gydF4y2Ba

[accelReading, gyroReading magReading] = IMU(加速度,angularVelocity);gydF4y2Ba

绘制加速度计读数、陀螺仪读数和磁强计读数。gydF4y2Ba

t = (0: (numSamples-1)) / IMU.SampleRate;次要情节(1,1)情节(t, accelReading)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)标题(gydF4y2Ba的加速度计读数gydF4y2Ba) ylabel (gydF4y2Ba“加速度(m / s ^ 2)”gydF4y2Ba(3,1,2)情节(t,陀螺仪)gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)标题(gydF4y2Ba“陀螺仪数据”gydF4y2Ba) ylabel (gydF4y2Ba“角速度(rad / s)”gydF4y2Ba子情节(3、1、3)情节(t)gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)标题(gydF4y2Ba的磁强计读数gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba“磁场(uT)”gydF4y2Ba)gydF4y2Ba

图中包含3个轴对象。标题为Accelerometer reads的Axes对象1包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。标题为Gyroscope reads的Axes对象2包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。标题为Magnetometer reads的axis对象3包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。gydF4y2Ba

没有指定方向,地面真实运动是静止的,因此整个仿真中IMU传感器体坐标系和局部NED坐标系重叠。gydF4y2Ba

  • 加速度计读数:gydF4y2BazgydF4y2Ba传感器体的-轴对应下轴。9.8 m/s^2的加速度沿着gydF4y2BazgydF4y2Ba-轴是由于重力。gydF4y2Ba

  • 陀螺仪读数:陀螺仪读数沿每轴为零,正如预期的那样。gydF4y2Ba

  • 磁强计读数:由于传感器体坐标系与本地NED坐标系对齐,因此磁强计读数对应于gydF4y2Ba磁场gydF4y2Ba的属性gydF4y2BaimuSensorgydF4y2Ba.的gydF4y2Ba磁场gydF4y2Ba属性在本地NED坐标系中定义。gydF4y2Ba

使用gydF4y2BaimuSensorgydF4y2Ba从包含理想加速度计和理想磁强计的旋转IMU中获得的数据进行建模。使用gydF4y2BakinematicTrajectorygydF4y2Ba来定义地真运动。熔丝的gydF4y2BaimuSensorgydF4y2Ba模型输出使用gydF4y2BaecompassgydF4y2Ba函数确定随时间变化的方向。gydF4y2Ba

定义一个在4秒内旋转360度的平台的地面真实运动,然后在2秒内再旋转360度。使用gydF4y2BakinematicTrajectorygydF4y2Ba,输出在NED坐标系下的方向、加速度和角速度。gydF4y2Ba

fs = 100;firstLoopNumSamples = f * 4;secondLoopNumSamples = f * 2;totalNumSamples = firstLoopNumSamples + secondLoopNumSamples;traj = kinematicTrajectory (gydF4y2Ba“SampleRate”gydF4y2Bafs);accBody = 0 (totalNumSamples, 3);angVelBody = 0 (totalNumSamples, 3);angVelBody (1: firstLoopNumSamples, 3) =(2 *π)/ 4;angVelBody (firstLoopNumSamples + 1:结束,3)=(2 *π)/ 2;[取向,~ ~,accNED angVelNED] = traj (accBody angVelBody);gydF4y2Ba

创建一个gydF4y2BaimuSensorgydF4y2Ba带有理想加速度计和理想磁强计的物体。调用gydF4y2BaIMUgydF4y2Ba与地面真实的加速度,角速度,和方向输出加速度计读数和磁强计读数。策划的结果。gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-mag”gydF4y2Ba,gydF4y2Ba“SampleRate”gydF4y2Bafs);[accelReadings, magReadings] = IMU (accNED、angVelNED取向);图(1)t = (0:(totalNumSamples-1))/fs;次要情节(2,1,1)情节(t, accelReadings)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba“加速度(m / s ^ 2)”gydF4y2Ba)标题(gydF4y2Ba的加速度计读数gydF4y2Ba子图(2,1,2)子图(t, magreading)gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba“磁场(\狗)”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)标题(gydF4y2Ba的磁强计读数gydF4y2Ba)gydF4y2Ba

图中包含2个轴对象。标题为Accelerometer reads的Axes对象1包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。标题为Magnetometer reads的Axes对象2包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。gydF4y2Ba

加速度计读数显示平台没有平移。磁强计的读数显示平台在绕着gydF4y2BazgydF4y2Ba设在。gydF4y2Ba

把加速度计和磁强计的读数输入gydF4y2BaecompassgydF4y2Ba函数估计随时间变化的方向。的gydF4y2BaecompassgydF4y2Ba函数返回四元数格式的方向。将方向转换为欧拉角并绘制结果。方向图表明平台绕gydF4y2BazgydF4y2Ba设在。gydF4y2Ba

取向= ecompass (accelReadings magReadings);orientationEuler = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(2)情节(t, orientationEuler)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba“定位”gydF4y2Ba)gydF4y2Ba

图中包含一个axes对象。标题为Orientation的axis对象包含3个类型为line的对象。这些对象代表z轴,y轴,x轴。gydF4y2Ba

使用gydF4y2BaimuSensorgydF4y2Ba来模拟从一个旋转IMU中获得的数据,该IMU包含一个真实的加速度计和一个真实的磁强计。使用gydF4y2BakinematicTrajectorygydF4y2Ba来定义地真运动。熔丝的gydF4y2BaimuSensorgydF4y2Ba模型输出使用gydF4y2BaecompassgydF4y2Ba函数确定随时间变化的方向。gydF4y2Ba

定义一个在4秒内旋转360度的平台的地面真实运动,然后在2秒内再旋转360度。使用gydF4y2BakinematicTrajectorygydF4y2Ba,输出在NED坐标系下的方向、加速度和角速度。gydF4y2Ba

fs = 100;firstLoopNumSamples = f * 4;secondLoopNumSamples = f * 2;totalNumSamples = firstLoopNumSamples + secondLoopNumSamples;traj = kinematicTrajectory (gydF4y2Ba“SampleRate”gydF4y2Bafs);accBody = 0 (totalNumSamples, 3);angVelBody = 0 (totalNumSamples, 3);angVelBody (1: firstLoopNumSamples, 3) =(2 *π)/ 4;angVelBody (firstLoopNumSamples + 1:结束,3)=(2 *π)/ 2;[取向,~ ~,accNED angVelNED] = traj (accBody angVelBody);gydF4y2Ba

创建一个gydF4y2BaimuSensorgydF4y2Ba带有真实的加速度计和真实的磁强计的物体。调用gydF4y2BaIMUgydF4y2Ba与地面真实的加速度,角速度,和方向输出加速度计读数和磁强计读数。策划的结果。gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-mag”gydF4y2Ba,gydF4y2Ba“SampleRate”gydF4y2Bafs);IMU。一个ccelero米eter=accelparams(gydF4y2Ba...gydF4y2Ba“MeasurementRange”gydF4y2Ba, 19.62,gydF4y2Ba...gydF4y2Ba% m / s ^ 2gydF4y2Ba“决议”gydF4y2Ba, 0.0023936,gydF4y2Ba...gydF4y2Ba% m/s^2 / LSBgydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba, 0.008,gydF4y2Ba...gydF4y2Ba% % /度gydF4y2Ba“ConstantBias”gydF4y2Ba, 0.1962,gydF4y2Ba...gydF4y2Ba% m / s ^ 2gydF4y2Ba“TemperatureBias”gydF4y2Ba, 0.0014715,gydF4y2Ba...gydF4y2Ba% m/s^2 /℃gydF4y2Ba“NoiseDensity”gydF4y2Ba, 0.0012361);gydF4y2Ba% m/s^2 / Hz^(1/2)gydF4y2BaIMU。磁强计= magparams (gydF4y2Ba...gydF4y2Ba“MeasurementRange”gydF4y2Ba, 1200,gydF4y2Ba...gydF4y2Ba% uTgydF4y2Ba“决议”gydF4y2Ba, 0.1,gydF4y2Ba...gydF4y2Ban . ngydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba, 0.1,gydF4y2Ba...gydF4y2Ba% % /度gydF4y2Ba“ConstantBias”gydF4y2Ba, 1gydF4y2Ba...gydF4y2Ba% uTgydF4y2Ba“TemperatureBias”gydF4y2Ba(0.8 0.8 2.4),gydF4y2Ba...gydF4y2BauT /度gydF4y2Ba“NoiseDensity”gydF4y2Ba,(0.6 0.6 0.9) /√(100));gydF4y2Ba% uT / Hz^(1/2)gydF4y2Ba[accelReadings, magReadings] = IMU (accNED、angVelNED取向);图(1)t = (0:(totalNumSamples-1))/fs;次要情节(2,1,1)情节(t, accelReadings)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba“加速度(m / s ^ 2)”gydF4y2Ba)标题(gydF4y2Ba的加速度计读数gydF4y2Ba子图(2,1,2)子图(t, magreading)gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba“磁场(\狗)”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)标题(gydF4y2Ba的磁强计读数gydF4y2Ba)gydF4y2Ba

图中包含2个轴对象。标题为Accelerometer reads的Axes对象1包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。标题为Magnetometer reads的Axes对象2包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。gydF4y2Ba

加速度计读数显示平台没有平移。磁强计的读数显示平台在绕着gydF4y2BazgydF4y2Ba设在。gydF4y2Ba

把加速度计和磁强计的读数输入gydF4y2BaecompassgydF4y2Ba函数估计随时间变化的方向。的gydF4y2BaecompassgydF4y2Ba函数返回四元数格式的方向。将方向转换为欧拉角并绘制结果。方向图表明平台绕gydF4y2BazgydF4y2Ba设在。gydF4y2Ba

取向= ecompass (accelReadings magReadings);orientationEuler = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(2)情节(t, orientationEuler)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba“定位”gydF4y2Ba)gydF4y2Ba

图中包含一个axes对象。标题为Orientation的axis对象包含3个类型为line的对象。这些对象代表z轴,y轴,x轴。gydF4y2Ba

%gydF4y2Ba

模型一个包含加速度计和陀螺仪的倾斜IMUgydF4y2BaimuSensorgydF4y2Ba系统对象™。利用理想模型和现实模型,比较了用该方法进行方向跟踪的结果gydF4y2BaimufiltergydF4y2Ba系统对象。gydF4y2Ba

加载一个描述地面真实运动和采样率的结构。运动结构描述了连续的旋转:gydF4y2Ba

  1. 偏航:两秒120度gydF4y2Ba

  2. 倾角:60度/秒gydF4y2Ba

  3. 旋转:30度/半秒gydF4y2Ba

  4. 旋转:-30度,半秒gydF4y2Ba

  5. 倾角:-60度/秒gydF4y2Ba

  6. 偏航:-120度,两秒gydF4y2Ba

在最后阶段,运动结构将第1、2和3个旋转组合成单轴旋转。加速度、角速度和方向在局部NED坐标系中定义。gydF4y2Ba

负载gydF4y2Bay120p60r30.matgydF4y2Ba运动gydF4y2BafsgydF4y2BaaccNED = motion.Acceleration;angVelNED = motion.AngularVelocity;取向= motion.Orientation;numSamples =大小(motion.Orientation, 1);t = (0: (numSamples-1)。/ fs;gydF4y2Ba

创建一个理想的IMU传感器对象和一个默认的IMU过滤器对象。gydF4y2Ba

IMU = imuSensor (gydF4y2Ba“accel-gyro”gydF4y2Ba,gydF4y2Ba“SampleRate”gydF4y2Bafs);aFilter = imufilter (gydF4y2Ba“SampleRate”gydF4y2Bafs);gydF4y2Ba

在一个循环:gydF4y2Ba

  1. 通过向IMU传感器对象提供真实的地面运动来模拟IMU输出。gydF4y2Ba

  2. 使用默认IMU筛选对象筛选IMU输出。gydF4y2Ba

取向= 0 (numSamples 1gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1:numSamples [accelerbody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:), orientned (i,:));方向(i) = aFilter (accelBody gyroBody);gydF4y2Ba结束gydF4y2Ba发行版(aFilter)gydF4y2Ba

画出随时间变化的方向。gydF4y2Ba

图(1)情节(t, eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba“方向估计—理想IMU数据,默认IMU滤波器”gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba

修改您的gydF4y2BaimuSensorgydF4y2Ba模拟真实世界的传感器。再次运行循环并绘制随时间变化的方向估计值。gydF4y2Ba

IMU。一个ccelero米eter=accelparams(gydF4y2Ba...gydF4y2Ba“MeasurementRange”gydF4y2Ba, 19.62,gydF4y2Ba...gydF4y2Ba“决议”gydF4y2Ba, 0.00059875,gydF4y2Ba...gydF4y2Ba“ConstantBias”gydF4y2Ba, 0.4905,gydF4y2Ba...gydF4y2Ba“AxesMisalignment”gydF4y2Ba2,gydF4y2Ba...gydF4y2Ba“NoiseDensity”gydF4y2Ba, 0.003924,gydF4y2Ba...gydF4y2Ba“BiasInstability”gydF4y2Ba0,gydF4y2Ba...gydF4y2Ba“TemperatureBias”gydF4y2Ba, [0.34335 0.34335 0.5886],gydF4y2Ba...gydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba, 0.02);IMU。陀螺仪= gyroparams (gydF4y2Ba...gydF4y2Ba“MeasurementRange”gydF4y2Ba, 4.3633,gydF4y2Ba...gydF4y2Ba“决议”gydF4y2Ba, 0.00013323,gydF4y2Ba...gydF4y2Ba“AxesMisalignment”gydF4y2Ba2,gydF4y2Ba...gydF4y2Ba“NoiseDensity”gydF4y2Ba8.7266 e-05gydF4y2Ba...gydF4y2Ba“TemperatureBias”gydF4y2Ba, 0.34907,gydF4y2Ba...gydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba, 0.02,gydF4y2Ba...gydF4y2Ba“AccelerationBias”gydF4y2Ba, 0.00017809,gydF4y2Ba...gydF4y2Ba“ConstantBias”gydF4y2Ba, 0.3491, 0.5, 0);orientationDefault = 0 (numSamples 1gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1:numSamples [accelerbody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:), orientned (i,:));orientationDefault (i) = aFilter (accelBody gyroBody);gydF4y2Ba结束gydF4y2Ba发行版(aFilter)图(2)情节(t, eulerd (orientationDefault,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba“方向估计—实际IMU数据,默认IMU滤波器”gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba

的能力gydF4y2BaimufiltergydF4y2Ba在建模一个真实的IMU时,跟踪地面真实数据的方法显著减少。要提高性能,请修改gydF4y2BaimufiltergydF4y2Ba对象。这些价值是根据经验确定的。再次运行循环并绘制随时间变化的方向估计值。gydF4y2Ba

aFilter。GyroscopeNoise = 7.6154 e;aFilter。一个ccelero米eterNoise = 0.0015398; aFilter.GyroscopeDriftNoise = 3.0462e-12; aFilter.LinearAccelerationNoise = 0.00096236; aFilter.InitialProcessNoise = aFilter.InitialProcessNoise*10; orientationNondefault = zeros(numSamples,1,“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1:numSamples [accelerbody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:), orientned (i,:));orientationNondefault (i) = aFilter (accelBody gyroBody);gydF4y2Ba结束gydF4y2Ba发行版(aFilter)图(3)图(t, eulerd (orientationNondefault,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba“方向估计—实际IMU数据,非默认IMU滤波器”gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba

量化改进后的性能gydF4y2BaimufiltergydF4y2Ba,绘制地面真实运动与返回的方向之间的四元数距离gydF4y2BaimufiltergydF4y2Ba具有默认和非默认属性。gydF4y2Ba

qDistDefault = rad2deg (dist(取向,orientationDefault));qDistNondefault = rad2deg (dist(取向,orientationNondefault));图(4)图(t) [qDistDefault qDistNondefault])标题(gydF4y2Ba“四元数到真实方向的距离”gydF4y2Ba)传说(gydF4y2Ba“实际IMU数据,默认IMU过滤器”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“真实的IMU数据,非默认IMU过滤器”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba“四元数距离(度)gydF4y2Ba)gydF4y2Ba

算法gydF4y2Ba

全部展开gydF4y2Ba

扩展功能gydF4y2Ba

版本历史gydF4y2Ba

介绍了R2019bgydF4y2Ba

另请参阅gydF4y2Ba

类gydF4y2Ba

对象gydF4y2Ba

Baidu
map