主要内容gydF4y2Ba

免疫传感器gydF4y2Ba

IMU仿真模型gydF4y2Ba

描述gydF4y2Ba

的gydF4y2Ba免疫传感器gydF4y2Ba从惯性测量单元(IMU)接收数据的系统对象模型。gydF4y2Ba

为IMU建模:gydF4y2Ba

  1. 创建gydF4y2Ba免疫传感器gydF4y2Ba对象并设置其属性。gydF4y2Ba

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

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

创造gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

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

例子gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba“加速陀螺仪”gydF4y2Ba)gydF4y2Ba返回一个gydF4y2Ba免疫传感器gydF4y2Ba系统对象带有理想的加速度计和陀螺仪。gydF4y2Ba免疫传感器gydF4y2Ba和gydF4y2BaimuSensor(“accel-gyro”)gydF4y2Ba是等价的创造语法。gydF4y2Ba

例子gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba“加速杂志”gydF4y2Ba)gydF4y2Ba返回一个gydF4y2Ba免疫传感器gydF4y2Ba系统对象采用理想的加速度计和磁力计。gydF4y2Ba

例子gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba)gydF4y2Ba返回一个gydF4y2Ba免疫传感器gydF4y2Ba系统对象带有理想的加速计、陀螺仪和磁强计。gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba___gydF4y2Ba,gydF4y2Ba“ReferenceFrame”gydF4y2Ba,gydF4y2Ba射频gydF4y2Ba)gydF4y2Ba返回一个gydF4y2Ba免疫传感器gydF4y2Ba计算相对于参考坐标系的惯性测量单元读数的系统对象gydF4y2Ba射频gydF4y2Ba.指定gydF4y2Ba射频gydF4y2Ba作为gydF4y2Ba“内德”gydF4y2Ba(东北向下)或gydF4y2Ba‘ENU’gydF4y2Ba(东北向上)。默认值为gydF4y2Ba“内德”gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称、值gydF4y2Ba)gydF4y2Ba每个属性集gydF4y2Ba名称gydF4y2Ba到指定的gydF4y2Ba价值gydF4y2Ba.未指定的属性具有默认值。该语法可以与前面的任何输入参数组合使用。gydF4y2Ba

性质gydF4y2Ba

全部展开gydF4y2Ba

除非另有说明,否则属性为gydF4y2Ba不能gydF4y2Ba,这意味着您在调用对象后无法更改其值。对象在调用时锁定,并且gydF4y2Ba释放gydF4y2Ba函数打开它们。gydF4y2Ba

如果一个属性是gydF4y2Ba可调gydF4y2Ba,您可以随时更改它的值。gydF4y2Ba

有关更改特性值的详细信息,请参见gydF4y2Ba在MATLAB中使用系统对象进行系统设计gydF4y2Ba.gydF4y2Ba

惯性测量单元的类型,指定为gydF4y2Ba“加速陀螺仪”gydF4y2Ba,gydF4y2Ba“加速杂志”gydF4y2Ba,或gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba.gydF4y2Ba

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

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

  • “加速杂志”gydF4y2Ba——加速度计和磁力计gydF4y2Ba

  • “加速陀螺仪磁头”gydF4y2Ba——加速度计、陀螺仪、磁力计gydF4y2Ba

您可以指定gydF4y2Ba模版gydF4y2Ba作为创建期间的纯值参数,或作为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

默认磁场对应于零纬度、零经度和零高度处的磁场。gydF4y2Ba

可调:gydF4y2Ba对gydF4y2Ba

数据类型:gydF4y2Ba仅有一个的gydF4y2Ba|gydF4y2Ba双重的gydF4y2Ba

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

可调:gydF4y2Ba对gydF4y2Ba

陀螺仪传感器参数,由agydF4y2BagyroparamsgydF4y2Ba对象。gydF4y2Ba

可调:gydF4y2Ba对gydF4y2Ba

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

可调:gydF4y2Ba对gydF4y2Ba

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

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

  • “与种子mt19937ar”gydF4y2Ba–使用mt19937ar算法生成随机数,种子由gydF4y2Ba种子gydF4y2Ba财产。gydF4y2Ba

数据类型:gydF4y2Ba烧焦gydF4y2Ba|gydF4y2Ba一串gydF4y2Ba

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

依赖关系gydF4y2Ba

要启用此属性,请设置gydF4y2Ba随机流gydF4y2Ba到gydF4y2Ba“与种子mt19937ar”gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba仅有一个的gydF4y2Ba|gydF4y2Ba双重的gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

用法gydF4y2Ba

描述gydF4y2Ba

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

此语法仅在以下情况下有效:gydF4y2Ba模版gydF4y2Ba设置为gydF4y2Ba“加速陀螺仪”gydF4y2Ba或gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba.gydF4y2Ba

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

此语法仅在以下情况下有效:gydF4y2Ba模版gydF4y2Ba设置为gydF4y2Ba“加速陀螺仪”gydF4y2Ba或gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba.gydF4y2Ba

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

此语法仅在以下情况下有效:gydF4y2Ba模版gydF4y2Ba设置为gydF4y2Ba“加速杂志”gydF4y2Ba.gydF4y2Ba

[gydF4y2Ba加速度计gydF4y2Ba,gydF4y2Ba磁读数gydF4y2Ba) = IMU (gydF4y2BaaccgydF4y2Ba,gydF4y2BaangVelgydF4y2Ba,gydF4y2Ba方向gydF4y2Ba)gydF4y2Ba从加速度、角速度和方向输入生成加速度计和磁力计读数。gydF4y2Ba

此语法仅在以下情况下有效:gydF4y2Ba模版gydF4y2Ba设置为gydF4y2Ba“加速杂志”gydF4y2Ba.gydF4y2Ba

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

此语法仅在以下情况下有效:gydF4y2Ba模版gydF4y2Ba设置为gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba.gydF4y2Ba

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

此语法仅在以下情况下有效:gydF4y2Ba模版gydF4y2Ba设置为gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba.gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

IMU在本地导航坐标系中的加速度,指定为实有限gydF4y2BaNgydF4y2Ba- × 3数组,单位是米每秒的平方。gydF4y2BaNgydF4y2Ba是当前帧中的采样数。gydF4y2Ba

数据类型:gydF4y2Ba仅有一个的gydF4y2Ba|gydF4y2Ba双重的gydF4y2Ba

IMU在局部导航坐标系中的角速度,指定为实的有限值gydF4y2BaNgydF4y2Ba-以每秒弧度为单位的by-3阵列。gydF4y2BaNgydF4y2Ba是当前帧中的采样数。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- × 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对象作为第一个输入参数。例如,释放名为system的对象的系统资源gydF4y2BaobjgydF4y2Ba,请使用以下语法:gydF4y2Ba

释放(obj)gydF4y2Ba

全部展开gydF4y2Ba

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

例子gydF4y2Ba

全部崩溃gydF4y2Ba

的gydF4y2Ba免疫传感器gydF4y2Ba系统对象™ 使您能够对从由陀螺仪、加速计和磁强计组合而成的惯性测量单元接收的数据进行建模。gydF4y2Ba

创建一个默认的gydF4y2Ba免疫传感器gydF4y2Ba对象。gydF4y2Ba

IMU=IMU传感器gydF4y2Ba
IMU=具有以下属性的IMU传感器:IMUType:“加速度陀螺仪”采样器:100温度:25加速计:[1x1加速度参数]陀螺仪:[1x1陀螺仪参数]随机流:“全局流”gydF4y2Ba

的gydF4y2Ba免疫传感器gydF4y2Ba对象,gydF4y2Ba伊姆gydF4y2Ba,包括一个理想的陀螺仪和加速度计。使用点符号来查看陀螺仪的属性。gydF4y2Ba

惯性陀螺仪gydF4y2Ba
ans=具有以下属性的陀螺参数:测量传输:Inf rad/s分辨率:0(rad/s)/LSB ConstantBias:[0 0]rad/s轴对齐:[0 0]%噪声度:[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²)gydF4y2Ba

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

IMU.Gyroscope.MeasurementRange = 4.3;gydF4y2Ba

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

SpecSheet1 = accelparams (gydF4y2Ba...gydF4y2Ba“测量技术”gydF4y2Ba,19.62,gydF4y2Ba...gydF4y2Ba“决议”gydF4y2Ba, 0.00059875,gydF4y2Ba...gydF4y2Ba“ConstantBias”gydF4y2Ba,0.4905,gydF4y2Ba...gydF4y2Ba“轴不对齐”gydF4y2Ba2.gydF4y2Ba...gydF4y2Ba“NoiseDensity”gydF4y2Ba,0.003924,gydF4y2Ba...gydF4y2Ba“BiasInstability”gydF4y2Ba,0,gydF4y2Ba...gydF4y2Ba“TemperatureBias”gydF4y2Ba, [0.34335 0.34335 0.5886],gydF4y2Ba...gydF4y2Ba“温度校准系数”gydF4y2Ba, 0.02);IMU。一个ccelero米eter=SpecSheet1; IMU.Accelerometer
ans = accelparams with properties: MeasurementRange: 19.62 m/s²分辨率:0.00059875 (m/s²)/LSB ConstantBias: [0.4905 0.4905 0.4905 0.4905] m/s²[2 2 2]% noiseddensity: [0.003924 0.003924 0.003924] (m/s²)/√Hz bias不稳定性:[0 00]m/s²RandomWalk: [0 00] (m/s²)*√Hz[0.34335 0.34335 0.5886] (m/s²)/°CgydF4y2Ba

使用gydF4y2Ba免疫传感器gydF4y2Ba系统对象™从包含加速度计、陀螺仪和磁力计的静止理想IMU接收数据。gydF4y2Ba

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

IMU=IMU传感器(gydF4y2Ba“加速陀螺仪磁头”gydF4y2Ba)gydF4y2Ba
IMU=具有以下特性的IMU传感器:IMUType:“加速度陀螺磁”采样器:100温度:25磁场:[27.5550-2.4169-16.0849]加速计:[1x1加速度参数]陀螺仪:[1x1陀螺参数]磁强计:[1x1磁参数]随机流:“全局流”gydF4y2Ba

定义地面真实情况,即正在建模的IMU的基本运动。加速度和角速度是相对于本地NED坐标系定义的。gydF4y2Ba

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

调用gydF4y2Ba伊姆gydF4y2Ba加速度和角速度。对象输出加速度计读数、陀螺仪读数和磁力计读数,作为模型的属性gydF4y2Ba免疫传感器gydF4y2Ba系统对象。加速度计读数、陀螺仪读数和磁强计读数是相对于IMU传感器体坐标系的。gydF4y2Ba

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

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

t=(0:(numSamples-1))/IMU.SampleRate;子批次(3,1,1)绘图(t,加速度读数)图例(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、magReading)图例(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba)头衔(gydF4y2Ba的磁强计读数gydF4y2Ba)包含(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba‘磁场(uT)’gydF4y2Ba)gydF4y2Ba

图中包含3个轴。带有标题加速计读数的轴1包含3个类型线对象。这些对象表示X轴、Y轴、Z轴。带有标题陀螺仪读数的轴2包含3个类型线对象。这些对象表示X轴、Y轴、Z轴。带有标题磁强计读数的轴3包含3个类型线对象。这些对象s代表X轴、Y轴、Z轴。gydF4y2Ba

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

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

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

  • 磁强计读数:由于传感器主体坐标系与本地NED坐标系对齐,因此磁强计读数与gydF4y2Ba磁场gydF4y2Ba性质gydF4y2Ba免疫传感器gydF4y2Ba这个gydF4y2Ba磁场gydF4y2Ba属性在局部坐标系中定义。gydF4y2Ba

使用gydF4y2Ba免疫传感器gydF4y2Ba对从包含理想加速度计和理想磁强计的旋转IMU获得的数据进行建模。使用gydF4y2Ba运动学gydF4y2Ba定义地面真实运动。融合gydF4y2Ba免疫传感器gydF4y2Ba使用gydF4y2Ba生态公司gydF4y2Ba函数来确定随时间变化的方向。gydF4y2Ba

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

fs=100;firstLoopNumSamples=fs*4;secondLoopNumSamples=fs*2;totalNumSamples=firstLoopNumSamples+secondLoopNumSamples;traj=运动轨迹(gydF4y2Ba“采样器”gydF4y2Ba,fs);accBody=零(totalNumSamples,3);angVelBody=零(总样本数,3);angVelBody(1:firstLoopNumSamples,3)=(2*pi)/4;angVelBody(firstLoopNumSamples+1:end,3)=(2*pi)/2;[~,定向,~,加速,加速]=traj(加速体,加速体);gydF4y2Ba

创建一个gydF4y2Ba免疫传感器gydF4y2Ba物体有一个理想的加速度计和一个理想的磁力仪。调用gydF4y2Ba伊姆gydF4y2Ba使用地面真实加速度、角速度和方向输出加速计读数和磁强计读数。绘制结果。gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba“加速杂志”gydF4y2Ba,gydF4y2Ba“采样器”gydF4y2Ba,fs);[加速度读数、磁读数]=IMU(加速度、角度、定向);图(1)t=(0:(totalNumSamples-1))/fs;子地块(2,1,1)图(t,加速度读数)图例(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba'加速度(m/s^2)'gydF4y2Ba)头衔(gydF4y2Ba“加速度计读数”gydF4y2Ba)子地块(2,1,2)图(t、磁读数)图例(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba'磁场(\muT)'gydF4y2Ba)包含(gydF4y2Ba‘时间’gydF4y2Ba)头衔(gydF4y2Ba的磁强计读数gydF4y2Ba)gydF4y2Ba

图中包含2个轴。带有标题的加速度计读数轴1包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。轴2标题磁强计读数包含3种类型的对象线。这些对象代表x轴,y轴,z轴。gydF4y2Ba

加速计读数表明平台没有平移。磁强计读数表明平台正在绕轨道旋转gydF4y2BazgydF4y2Ba-轴心国。gydF4y2Ba

把加速度计和磁力计的读数输入gydF4y2Ba生态公司gydF4y2Ba函数来估计随时间变化的方向。的gydF4y2Ba生态公司gydF4y2Ba函数以四元数格式返回方向。将方向转换为欧拉角并绘制结果。方向图表明平台围绕gydF4y2BazgydF4y2Ba-仅限axis。gydF4y2Ba

取向= ecompass (accelReadings magReadings);orientationEuler = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“框架”gydF4y2Ba);图(2)绘图(t,方向仪)图例(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)包含(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba)头衔(gydF4y2Ba“定位”gydF4y2Ba)gydF4y2Ba

图中包含一个坐标轴。具有标题方向的轴包含3个类型为line的对象。这些对象代表z轴,y轴,x轴。gydF4y2Ba

使用gydF4y2Ba免疫传感器gydF4y2Ba对包含真实加速度计和真实磁力计的旋转IMU所获得的数据进行建模。使用gydF4y2Ba运动学gydF4y2Ba定义地面真实运动。融合gydF4y2Ba免疫传感器gydF4y2Ba使用gydF4y2Ba生态公司gydF4y2Ba函数来确定随时间变化的方向。gydF4y2Ba

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

fs=100;firstLoopNumSamples=fs*4;secondLoopNumSamples=fs*2;totalNumSamples=firstLoopNumSamples+secondLoopNumSamples;traj=运动轨迹(gydF4y2Ba“采样器”gydF4y2Ba,fs);accBody=零(totalNumSamples,3);angVelBody=零(总样本数,3);angVelBody(1:firstLoopNumSamples,3)=(2*pi)/4;angVelBody(firstLoopNumSamples+1:end,3)=(2*pi)/2;[~,定向,~,加速,加速]=traj(加速体,加速体);gydF4y2Ba

创建一个gydF4y2Ba免疫传感器gydF4y2Ba带有真实加速度计和真实磁强计的对象。呼叫gydF4y2Ba伊姆gydF4y2Ba使用地面真实加速度、角速度和方向输出加速计读数和磁强计读数。绘制结果。gydF4y2Ba

IMU=IMU传感器(gydF4y2Ba“加速杂志”gydF4y2Ba,gydF4y2Ba“采样器”gydF4y2Bafs);IMU.加速计=加速度参数(gydF4y2Ba...gydF4y2Ba“测量技术”gydF4y2Ba,19.62,gydF4y2Ba...gydF4y2Ba%m/s^2gydF4y2Ba“决议”gydF4y2Ba,0.0023936,gydF4y2Ba...gydF4y2Ba%m/s^2/LSBgydF4y2Ba“温度校准系数”gydF4y2Ba,0.008,gydF4y2Ba...gydF4y2BaCgydF4y2Ba“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“测量技术”gydF4y2Ba, 1200,gydF4y2Ba...gydF4y2Ba% uTgydF4y2Ba“决议”gydF4y2Ba, 0.1,gydF4y2Ba...gydF4y2Ba%uT/LSBgydF4y2Ba“温度校准系数”gydF4y2Ba, 0.1,gydF4y2Ba...gydF4y2BaCgydF4y2Ba“ConstantBias”gydF4y2Ba1.gydF4y2Ba...gydF4y2Ba% uTgydF4y2Ba“TemperatureBias”gydF4y2Ba,[0.8 0.8 2.4],gydF4y2Ba...gydF4y2Ba% uT /度CgydF4y2Ba“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、磁读数)图例(gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Baz轴的gydF4y2Ba) ylabel (gydF4y2Ba'磁场(\muT)'gydF4y2Ba)包含(gydF4y2Ba‘时间’gydF4y2Ba)头衔(gydF4y2Ba的磁强计读数gydF4y2Ba)gydF4y2Ba

图中包含2个轴。带有标题的加速度计读数轴1包含3个类型为line的对象。这些对象代表x轴,y轴,z轴。轴2标题磁强计读数包含3种类型的对象线。这些对象代表x轴,y轴,z轴。gydF4y2Ba

加速计读数表明平台没有平移。磁强计读数表明平台正在绕轨道旋转gydF4y2BazgydF4y2Ba-轴心国。gydF4y2Ba

把加速度计和磁力计的读数输入gydF4y2Ba生态公司gydF4y2Ba函数来估计随时间变化的方向。的gydF4y2Ba生态公司gydF4y2Ba函数以四元数格式返回方向。将方向转换为欧拉角并绘制结果。方向图表明平台围绕gydF4y2BazgydF4y2Ba-仅限axis。gydF4y2Ba

取向= ecompass (accelReadings magReadings);orientationEuler = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“框架”gydF4y2Ba);图(2)绘图(t,方向仪)图例(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)包含(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba)头衔(gydF4y2Ba“定位”gydF4y2Ba)gydF4y2Ba

图中包含一个坐标轴。具有标题方向的轴包含3个类型为line的对象。这些对象代表z轴,y轴,x轴。gydF4y2Ba

%gydF4y2Ba

模型一个倾斜的IMU,包含一个加速度计和陀螺仪使用gydF4y2Ba免疫传感器gydF4y2Ba系统对象™. 使用理想模型和现实模型来比较使用gydF4y2Ba过滤器gydF4y2Ba系统对象。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.0材料gydF4y2Ba运动gydF4y2Ba财政司司长gydF4y2BaaccNED=运动.加速度;angVelNED=运动.角度速度;Orientationed=运动.方向;numSamples=大小(运动.方向,1);t=(0:(numSamples-1))。/fs;gydF4y2Ba

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

IMU=IMU传感器(gydF4y2Ba“加速陀螺仪”gydF4y2Ba,gydF4y2Ba“采样器”gydF4y2Ba,fs);aFilter=imufilter(gydF4y2Ba“采样器”gydF4y2Bafs);gydF4y2Ba

在循环中:gydF4y2Ba

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

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

取向= 0 (numSamples 1gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1:numSamples [accelBody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:),orientationNED(i,:));方向(i) = aFilter (accelBody gyroBody);gydF4y2Ba终止gydF4y2Ba释放(过滤器)gydF4y2Ba

绘制随时间变化的方向图。gydF4y2Ba

图(1)曲线图(t,eulerd)(方向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“框架”gydF4y2Ba))xlabel(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba)头衔(gydF4y2Ba'方向估计-理想IMU数据,默认IMU过滤器'gydF4y2Ba)传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba

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

IMU.加速计=加速度参数(gydF4y2Ba...gydF4y2Ba“测量技术”gydF4y2Ba,19.62,gydF4y2Ba...gydF4y2Ba“决议”gydF4y2Ba, 0.00059875,gydF4y2Ba...gydF4y2Ba“ConstantBias”gydF4y2Ba,0.4905,gydF4y2Ba...gydF4y2Ba“轴不对齐”gydF4y2Ba2.gydF4y2Ba...gydF4y2Ba“NoiseDensity”gydF4y2Ba,0.003924,gydF4y2Ba...gydF4y2Ba“BiasInstability”gydF4y2Ba,0,gydF4y2Ba...gydF4y2Ba“TemperatureBias”gydF4y2Ba, [0.34335 0.34335 0.5886],gydF4y2Ba...gydF4y2Ba“温度校准系数”gydF4y2Ba,0.02);惯性陀螺仪=陀螺参数(gydF4y2Ba...gydF4y2Ba“测量技术”gydF4y2Ba,4.3633,gydF4y2Ba...gydF4y2Ba“决议”gydF4y2Ba,0.00013323,gydF4y2Ba...gydF4y2Ba“轴不对齐”gydF4y2Ba2.gydF4y2Ba...gydF4y2Ba“NoiseDensity”gydF4y2Ba,8.7266e-05,gydF4y2Ba...gydF4y2Ba“TemperatureBias”gydF4y2Ba,0.34907,gydF4y2Ba...gydF4y2Ba“温度校准系数”gydF4y2Ba,0.02,gydF4y2Ba...gydF4y2Ba“AccelerationBias”gydF4y2Ba,0.00017809,gydF4y2Ba...gydF4y2Ba“ConstantBias”gydF4y2Ba,[0.3491,0.5,0]);方向故障=零(numSamples,1,gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1:numSamples [accelBody,gyroBody] = IMU(accNED(i,:),angVelNED(i,:),orientationNED(i,:));orientationDefault (i) = aFilter (accelBody gyroBody);gydF4y2Ba终止gydF4y2Ba释放(过滤器)图(2)曲线图(t、eulerd、故障、,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“框架”gydF4y2Ba))xlabel(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba)头衔(gydF4y2Ba方向估计——真实IMU数据,默认IMU滤波器gydF4y2Ba)传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba

能力gydF4y2Ba过滤器gydF4y2Ba在对真实IMU建模时,跟踪地面真实数据的数量显著减少。若要提高性能,请修改gydF4y2Ba过滤器gydF4y2Ba对象。这些值是根据经验确定的。再次运行循环并绘制随时间变化的方向估计。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(i,:),angVelNED(i,:),定向(i,:);定向非默认(i)=过滤器(accelBody,gyroBody);gydF4y2Ba终止gydF4y2Ba发布(过滤器)图(3)图(t、eulerd(方向非默认、,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“框架”gydF4y2Ba))xlabel(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba)头衔(gydF4y2Ba'方向估计-真实IMU数据,非默认IMU过滤器'gydF4y2Ba)传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba

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

qDistDefault=rad2deg(距离(定向,定向故障));QDISTNDEFAULT=rad2deg(距离(定向,定向故障));图(4)绘图(t,[qDistDefault,QDISTNDEFAULT])标题(gydF4y2Ba“与真实方向的四元数距离”gydF4y2Ba)传奇(gydF4y2Ba真实的IMU数据,默认的IMU过滤器gydF4y2Ba,gydF4y2Ba...gydF4y2Ba'真实IMU数据,非默认IMU过滤器'gydF4y2Ba)包含(gydF4y2Ba‘时间’gydF4y2Ba) ylabel (gydF4y2Ba“四元数距离(度)gydF4y2Ba)gydF4y2Ba

算法gydF4y2Ba

全部展开gydF4y2Ba

扩展能力gydF4y2Ba

另请参阅gydF4y2Ba

类gydF4y2Ba

对象gydF4y2Ba

介绍了R2018bgydF4y2Ba