imuSensorgydF4y2Ba

IMU仿真模型gydF4y2Ba

描述gydF4y2Ba

的gydF4y2BaimuSensorgydF4y2Ba系统对象™模型接收数据从一个惯性测量单元(IMU)。gydF4y2Ba

模型一个IMU:gydF4y2Ba

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

  2. 调用对象的参数,就好像它是一个函数。gydF4y2Ba

了解更多关于系统对象是如何工作的,看到的gydF4y2Ba系统对象是什么?gydF4y2Ba。gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

IMUgydF4y2Ba= imuSensorgydF4y2Ba返回一个系统对象,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

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

惯性测量单元类型,指定为一个gydF4y2Ba“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

在赫兹传感器模型的采样率,指定为一个积极的标量。gydF4y2Ba

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

IMU的操作温度摄氏度,指定为一个真正的标量。gydF4y2Ba

当物体计算规模因素和环境温度漂移噪声,25岁gydF4y2BaogydF4y2BaC作为名义上的温度。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

microtesla磁场向量,作为三元素指定行向量在当地导航坐标系。gydF4y2Ba

默认的磁场与磁场在纬度零,经度零,高度为零。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

加速度计传感器参数,指定的gydF4y2BaaccelparamsgydF4y2Ba对象。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

可调:gydF4y2Ba是的gydF4y2Ba

磁强计传感器参数,指定的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在当地导航坐标系,指定为一个真正的、有限的gydF4y2BaNgydF4y2Ba3米每秒的平方的数组。gydF4y2BaNgydF4y2Ba在当前帧的样本数量。gydF4y2Ba

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

乌兹别克斯坦伊斯兰运动的角速度当地导航坐标系,指定为一个真正的,有限的gydF4y2BaNgydF4y2Ba3数组弧度每秒。gydF4y2BaNgydF4y2Ba在当前帧的样本数量。gydF4y2Ba

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

IMU的取向对当地的导航坐标系,指定为一个gydF4y2Ba四元数gydF4y2BaNgydF4y2Ba元列向量或3-by-3-by -gydF4y2BaNgydF4y2Ba旋转矩阵。每一个gydF4y2Ba四元数gydF4y2Ba旋转或旋转矩阵代表一个框架从本地导航坐标系到当前IMU传感器坐标系。gydF4y2BaNgydF4y2Ba在当前帧的样本数量。gydF4y2Ba

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

输出参数gydF4y2Ba

全部展开gydF4y2Ba

乌兹别克斯坦伊斯兰运动的加速度计测量传感器坐标系,指定为一个真正的、有限的gydF4y2BaNgydF4y2Ba3米每秒的平方的数组。gydF4y2BaNgydF4y2Ba在当前帧的样本数量。gydF4y2Ba

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

IMU的陀螺仪测量传感器坐标系,指定为一个真正的、有限的gydF4y2BaNgydF4y2Ba3数组弧度每秒。gydF4y2BaNgydF4y2Ba在当前帧的样本数量。gydF4y2Ba

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

乌兹别克斯坦伊斯兰运动的磁强计测量传感器坐标系,指定为一个真正的、有限的gydF4y2BaNgydF4y2Ba3在microtelsa数组。gydF4y2BaNgydF4y2Ba在当前帧的样本数量。gydF4y2Ba

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

对象的功能gydF4y2Ba

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名gydF4y2BaobjgydF4y2Ba使用这个语法:gydF4y2Ba

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

loadparamsgydF4y2Ba 从JSON文件装载传感器参数gydF4y2Ba
一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源,并允许修改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

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

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

IMU = imuSensorgydF4y2Ba
IMU = imuSensor属性:IMUType:“accel-gyro”SampleRate: 100温度:25加速度计:[1 x1 accelparams]陀螺仪:[1 x1 gyroparams] RandomStream:“全球流”gydF4y2Ba

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

IMU.GyroscopegydF4y2Ba
ans = 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²)gydF4y2Ba

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

IMU.Gyroscope。MeasurementRange = 4.3;gydF4y2Ba

你也可以设置传感器属性预设参数对象。创建一个gydF4y2BaaccelparamsgydF4y2Ba对象来模拟特定的硬件,然后设置乌兹别克斯坦伊斯兰运动gydF4y2Ba加速度计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.Accelerometer=SpecSheet1; IMU.Accelerometer
ans = accelparams属性:MeasurementRange: 19.62 m / s²决议:0.00059875 (m / s²) / LSB ConstantBias: [0.4905 0.4905 0.4905] m / s²AxesMisalignment: [2 2 2] % NoiseDensity: [0.003924 0.003924 0.003924] (m / s²) /√赫兹BiasInstability: [0 0 0] m / s²随机散步:[0 0 0](m / s²) *√赫兹TemperatureBias: [0.34335 0.34335 0.5886] (m / s²) /°C TemperatureScaleFactor: [0.02 0.02 0.02] % /°CgydF4y2Ba

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

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

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

定义真实,IMU的底层运动建模。加速度和角速度的定义相对于当地的NED坐标系统。gydF4y2Ba

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

调用gydF4y2BaIMUgydF4y2Ba真实的加速度和角速度。对象输出加速度计读数,陀螺仪阅读,和磁强计读数的属性建模gydF4y2BaimuSensorgydF4y2Ba系统对象。加速度计读数、陀螺仪读数和磁强计读数是身体相对于乌兹别克斯坦伊斯兰运动传感器坐标系。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, gyroReading)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)标题(gydF4y2Ba“陀螺仪数据”gydF4y2Ba)ylabel (gydF4y2Ba“角速度(rad / s)”gydF4y2Ba次要情节(3,1,3)情节(t, magReading)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)标题(gydF4y2Ba的磁强计读数gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba“磁场(uT)”gydF4y2Ba)gydF4y2Ba

没有指定方向和真实的运动是静止的,所以乌兹别克斯坦伊斯兰运动传感器的身体NED坐标系坐标系统和当地整个仿真的重叠。gydF4y2Ba

  • 加速度计读数:gydF4y2BazgydF4y2Ba设在Down-axis身体传感器对应的。9.8米/秒^ 2加速度沿gydF4y2BazgydF4y2Ba设在是由于重力。gydF4y2Ba

  • 陀螺仪数据:沿着每个轴陀螺仪的读数为零,如预期。gydF4y2Ba

  • 磁强计读数:因为身体传感器坐标系是与当地NED坐标系统,磁强计的读数对应gydF4y2Ba磁场gydF4y2Ba的属性gydF4y2BaimuSensorgydF4y2Ba。的gydF4y2Ba磁场gydF4y2Ba房地产是当地NED坐标系中定义。gydF4y2Ba

使用gydF4y2BaimuSensorgydF4y2Ba获得的模型数据从一个旋转IMU包含一个理想的加速度计和理想磁强计。使用gydF4y2BakinematicTrajectorygydF4y2Ba定义真实运动。熔丝的gydF4y2BaimuSensorgydF4y2Ba模型输出使用gydF4y2BaecompassgydF4y2Ba随着时间的推移函数来确定方向。gydF4y2Ba

定义一个平台的真实运动,旋转360度4秒,然后在两秒钟内另一个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, magReadings)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)ylabel (gydF4y2Ba“磁场(\狗)”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)标题(gydF4y2Ba的磁强计读数gydF4y2Ba)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

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

定义一个平台的真实运动,旋转360度4秒,然后在两秒钟内另一个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.Accelerometer=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…gydF4y2Ba% uT / LSBgydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba,0.1,gydF4y2Ba…gydF4y2Ba% % /度gydF4y2Ba“ConstantBias”gydF4y2Ba,1gydF4y2Ba…gydF4y2Ba% uTgydF4y2Ba“TemperatureBias”gydF4y2Ba(0.8 0.8 2.4),gydF4y2Ba…gydF4y2Ba% uT /度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, magReadings)传说(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)ylabel (gydF4y2Ba“磁场(\狗)”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)标题(gydF4y2Ba的磁强计读数gydF4y2Ba)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

%gydF4y2Ba

模型包含一个加速度计和陀螺仪的倾斜IMU使用gydF4y2BaimuSensorgydF4y2Ba系统对象™。用理想和现实的模型比较结果取向跟踪使用gydF4y2BaimufiltergydF4y2Ba系统对象。gydF4y2Ba

加载一个结构描述真实运动和采样率。旋转运动结构描述顺序):gydF4y2Ba

  1. 偏航:120度/ 2秒gydF4y2Ba

  2. 情节:60度超过一秒gydF4y2Ba

  3. 卷:30度超过1/2秒gydF4y2Ba

  4. 卷:-30度超过1/2秒gydF4y2Ba

  5. 情节:-60度超过一秒gydF4y2Ba

  6. 偏航:-120度/ 2秒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乌兹别克斯坦伊斯兰运动传感器通过喂养真实动态输出对象。gydF4y2Ba

  2. 过滤IMU输出使用默认IMU过滤器对象。gydF4y2Ba

取向= 0 (numSamples 1gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1: numSamples [accelBody gyroBody] = IMU (accNED(我,:),angVelNED(我:),取向(我,:));方向(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.Accelerometer=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.Gyroscope=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 [accelBody gyroBody] = IMU (accNED(我,:),angVelNED(我:),取向(我,:));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 [accelBody gyroBody] = IMU (accNED(我,:),angVelNED(我:),取向(我,:));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

类gydF4y2Ba

对象gydF4y2Ba

介绍了R2018bgydF4y2Ba