ahrsfilterGÿdF4ÿ2Ba

来自加速度计、陀螺仪和磁强计读数的方向GÿdF4ÿ2Ba

描述GÿdF4ÿ2Ba

该GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2BaSystem object™融合了加速度计、磁强计和陀螺仪传感器数据来估计设备的方向。GÿdF4ÿ2Ba

估计设备方向:GÿdF4ÿ2Ba

  1. 创建GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba对象并设置其属性。GÿdF4ÿ2Ba

  2. 调用带参数的对象,就好像它是一个功能。GÿdF4ÿ2Ba

有关系统对象如何工作的更多信息,请参见GÿdF4ÿ2Ba什么是系统对象?GÿdF4ÿ2Ba(MATLAB)。GÿdF4ÿ2Ba

创建GÿdF4ÿ2Ba

描述GÿdF4ÿ2Ba

例GÿdF4ÿ2Ba

保险丝GÿdF4ÿ2Ba= ahrsfilterGÿdF4ÿ2Ba返回一个间接卡尔曼滤波系统对象,GÿdF4ÿ2Ba保险丝GÿdF4ÿ2Ba用于加速度计、陀螺仪和磁强计数据的传感器融合,以估计设备的方向和角速度。该滤波器使用一个12元状态向量来跟踪方向、陀螺仪偏差、线性加速度和磁干扰的估计误差。GÿdF4ÿ2Ba

保险丝GÿdF4ÿ2Ba= ahrsfilter (GÿdF4ÿ2Ba'参考范围'GÿdF4ÿ2Ba,GÿdF4ÿ2Ba射频GÿdF4ÿ2Ba)GÿdF4ÿ2Ba返回一个ahrsfilter系统对象熔丝加速度计,陀螺仪和磁强计的数据到设备取向相对于所述参考帧估计GÿdF4ÿ2Ba射频GÿdF4ÿ2Ba。指定GÿdF4ÿ2Ba射频GÿdF4ÿ2Ba如GÿdF4ÿ2BaNED的GÿdF4ÿ2Ba(North-East-Down)或GÿdF4ÿ2Ba'ENU'GÿdF4ÿ2Ba(East-North-Up)。默认值是'NED'。GÿdF4ÿ2Ba

例GÿdF4ÿ2Ba

保险丝GÿdF4ÿ2Ba= ahrsfilter (GÿdF4ÿ2Ba___GÿdF4ÿ2Ba,GÿdF4ÿ2Ba名称,值GÿdF4ÿ2Ba)GÿdF4ÿ2Ba设置每个属性GÿdF4ÿ2Ba名称GÿdF4ÿ2Ba到指定的GÿdF4ÿ2Ba价值GÿdF4ÿ2Ba。未指定的属性具有默认值。GÿdF4ÿ2Ba

属性GÿdF4ÿ2Ba

全部展开GÿdF4ÿ2Ba

除非另有说明,性质GÿdF4ÿ2BanontunableGÿdF4ÿ2Ba,这意味着您不能在调用对象后更改它们的值。对象在您调用它们时锁定,以及GÿdF4ÿ2Ba释放GÿdF4ÿ2Ba函数打开它们。GÿdF4ÿ2Ba

如果属性GÿdF4ÿ2Ba可调GÿdF4ÿ2Ba,你可以在任何时候改变它的值。GÿdF4ÿ2Ba

有关更改属性值的更多信息,请参阅GÿdF4ÿ2Ba使用系统对象的系统设计在MATLABGÿdF4ÿ2Ba(MATLAB)。GÿdF4ÿ2Ba

在赫兹传感器数据的输入采样率,指定为正标量。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba没有GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

其中抽取因子作为降低传感器输入数据率的融合算法的一部分,指定为正整数。GÿdF4ÿ2Ba

输入的行数GÿdF4ÿ2BaaccelReadingsGÿdF4ÿ2Ba,GÿdF4ÿ2BagyroReadingsGÿdF4ÿ2Ba,GÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba——必须是小数因子的倍数。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

加速度计信号噪声的方差(m/s)GÿdF4ÿ2Ba2GÿdF4ÿ2Ba)GÿdF4ÿ2Ba2GÿdF4ÿ2Ba,指定为正的实标量。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

在μT磁力计信号噪声的方差GÿdF4ÿ2Ba2GÿdF4ÿ2Ba,指定为正的实标量。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

在陀螺仪信号中的噪声的方差(弧度/秒)GÿdF4ÿ2Ba2GÿdF4ÿ2Ba,指定为正的实标量。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

陀螺仪偏移方差(rad/s)GÿdF4ÿ2Ba2GÿdF4ÿ2Ba,指定为正的实标量。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

线性加速度噪声的方差(m/s)GÿdF4ÿ2Ba2GÿdF4ÿ2Ba)GÿdF4ÿ2Ba2GÿdF4ÿ2Ba,指定为正的实标量。将线性加速度模型化为低通滤波白噪声过程。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

线性加速漂移的衰减因子,指定为[0,1]范围内的标量。如果线性加速度变化很快,设置GÿdF4ÿ2BaLinearAcclerationDecayFactorGÿdF4ÿ2Ba到一个更低的值。如果线性加速度变化缓慢,设置GÿdF4ÿ2BaLinearAcclerationDecayFactorGÿdF4ÿ2Ba到一个更高的值。将线性加速度漂移建模为低通滤波白噪声过程。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

在μT磁干扰噪声的方差GÿdF4ÿ2Ba2GÿdF4ÿ2Ba,为实有限正标量。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

衰减因子为磁扰,指定为在范围[0,1]的正标量。电磁干扰建模为一阶马尔可夫过程。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

过程噪声的协方差矩阵,指定为12×12矩阵。默认的是:GÿdF4ÿ2Ba

列1到6 0 0 0 0 0 0 0.000006092348396 0.000006092348396 0.000006092348396 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000076154354947 0.000076154354947 0.000076154354947 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0列7到12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.009623610000000 0.009623610000000 0.009623610000000 0 0 0 0 0 0 0 0 0 0 0 0 0.600000000000000 0.600000000000000 0 0 0 0 0 0 0 0 0 0 000。600000000000000

初始过程协方差矩阵解释了过程模型中的误差。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

在μT磁场强度的预期估计,指定作为一个真正的正标量。预期的磁场强度是在当前位置的地球磁场强度的估计。GÿdF4ÿ2Ba

可调:GÿdF4ÿ2Ba是GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

输出方向格式,指定为GÿdF4ÿ2Ba“四元”GÿdF4ÿ2Ba或GÿdF4ÿ2Ba“旋转矩阵”GÿdF4ÿ2Ba。输出的大小依赖于输入大小,GÿdF4ÿ2BañGÿdF4ÿ2Ba,输出方向格式:GÿdF4ÿ2Ba

  • “四元”GÿdF4ÿ2Ba——输出为GÿdF4ÿ2BañGÿdF4ÿ2Ba1GÿdF4ÿ2Ba四元GÿdF4ÿ2Ba。GÿdF4ÿ2Ba

  • “旋转矩阵”GÿdF4ÿ2Ba——输出是一个3×3×-的矩阵GÿdF4ÿ2BañGÿdF4ÿ2Ba旋转矩阵。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba字符GÿdF4ÿ2Ba|GÿdF4ÿ2Ba串GÿdF4ÿ2Ba

使用GÿdF4ÿ2Ba

描述GÿdF4ÿ2Ba

例GÿdF4ÿ2Ba

[GÿdF4ÿ2Ba取向GÿdF4ÿ2Ba,GÿdF4ÿ2Ba角速度GÿdF4ÿ2Ba)=保险丝(GÿdF4ÿ2BaaccelReadingsGÿdF4ÿ2Ba,GÿdF4ÿ2BagyroReadingsGÿdF4ÿ2Ba,GÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba)GÿdF4ÿ2Ba融合加速度计,陀螺仪和磁强计的数据,以计算方向和角速度的测量。该算法假设设备在第一次调用之前是静止的。GÿdF4ÿ2Ba

输入参数GÿdF4ÿ2Ba

全部展开GÿdF4ÿ2Ba

加速度计在传感器体坐标系中的读数为m/sGÿdF4ÿ2Ba2GÿdF4ÿ2Ba,指定为GÿdF4ÿ2BañGÿdF4ÿ2Ba-by-3矩阵。GÿdF4ÿ2BañGÿdF4ÿ2Ba是试样的三列的数目,并GÿdF4ÿ2BaaccelReadingsGÿdF4ÿ2Ba代表[GÿdF4ÿ2BaXGÿdF4ÿ2BaÿGÿdF4ÿ2BažGÿdF4ÿ2Ba)测量。加速计读数被假定为对应于由指定的采样率GÿdF4ÿ2Ba采样率GÿdF4ÿ2Ba属性。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

陀螺仪在传感器体坐标系中的读数为rad/s,指定为GÿdF4ÿ2BañGÿdF4ÿ2Ba-by-3矩阵。GÿdF4ÿ2BañGÿdF4ÿ2Ba是试样的三列的数目,并GÿdF4ÿ2BagyroReadingsGÿdF4ÿ2Ba代表[GÿdF4ÿ2BaXGÿdF4ÿ2BaÿGÿdF4ÿ2BažGÿdF4ÿ2Ba)测量。陀螺仪读数被假定为对应于由指定的采样率GÿdF4ÿ2Ba采样率GÿdF4ÿ2Ba属性。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

磁强计读数在µT传感器体坐标系中,指定为一个GÿdF4ÿ2BañGÿdF4ÿ2Ba-by-3矩阵。GÿdF4ÿ2BañGÿdF4ÿ2Ba是试样的三列的数目,并GÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba代表[GÿdF4ÿ2BaXGÿdF4ÿ2BaÿGÿdF4ÿ2BažGÿdF4ÿ2Ba)测量。磁强计的读数假定与样品率的规定GÿdF4ÿ2Ba采样率GÿdF4ÿ2Ba属性。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

输出参数GÿdF4ÿ2Ba

全部展开GÿdF4ÿ2Ba

取向可以旋转从本地导航量坐标系到主体坐标系中,返回作为四元或阵列。的尺寸和类型GÿdF4ÿ2Ba取向GÿdF4ÿ2Ba取决于GÿdF4ÿ2BaOrientationFormatGÿdF4ÿ2Ba属性设置为GÿdF4ÿ2Ba“四元”GÿdF4ÿ2Ba或GÿdF4ÿ2Ba“旋转矩阵”GÿdF4ÿ2Ba:GÿdF4ÿ2Ba

  • “四元”GÿdF4ÿ2Ba——输出是GÿdF4ÿ2Ba中号GÿdF4ÿ2Ba四元数的-1乘1向量,具有与输入相同的底层数据类型GÿdF4ÿ2Ba

  • “旋转矩阵”GÿdF4ÿ2Ba- 输出是一个3×3逐GÿdF4ÿ2Ba中号GÿdF4ÿ2Ba旋转矩阵阵列的相同的​​数据类型的输入GÿdF4ÿ2Ba

输入样本的个数,GÿdF4ÿ2BañGÿdF4ÿ2Ba和GÿdF4ÿ2BaDecimationFactorGÿdF4ÿ2Ba属性确定GÿdF4ÿ2Ba中号GÿdF4ÿ2Ba。GÿdF4ÿ2Ba

您可以使用GÿdF4ÿ2Ba取向GÿdF4ÿ2Ba在一个GÿdF4ÿ2BarotateframeGÿdF4ÿ2Ba功能可将数量从本地导航系统旋转到传感器体坐标系统。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba四元GÿdF4ÿ2Ba|GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

与陀螺仪偏差角速度传感器主体移除坐标系中弧度/秒时,返回作为GÿdF4ÿ2Ba中号GÿdF4ÿ2Ba3数组。输入样本的个数,GÿdF4ÿ2BañGÿdF4ÿ2Ba和GÿdF4ÿ2BaDecimationFactorGÿdF4ÿ2Ba属性确定GÿdF4ÿ2Ba中号GÿdF4ÿ2Ba。GÿdF4ÿ2Ba

数据类型:GÿdF4ÿ2Ba单GÿdF4ÿ2Ba|GÿdF4ÿ2Ba双GÿdF4ÿ2Ba

对象的功能GÿdF4ÿ2Ba

使用对象函数,指定系统对象作为第一个输入参数。例如,为了释放一个名为System对象的系统资源GÿdF4ÿ2BaobjGÿdF4ÿ2Ba,使用此语法:GÿdF4ÿ2Ba

发行版(obj)GÿdF4ÿ2Ba

全部展开GÿdF4ÿ2Ba

步GÿdF4ÿ2Ba 跑GÿdF4ÿ2Ba系统对象GÿdF4ÿ2Ba算法GÿdF4ÿ2Ba
释放GÿdF4ÿ2Ba 释放资源,并允许更改GÿdF4ÿ2Ba系统对象GÿdF4ÿ2Ba属性值和输入特性GÿdF4ÿ2Ba
重置GÿdF4ÿ2Ba 复位的内部状态GÿdF4ÿ2Ba系统对象GÿdF4ÿ2Ba

例子GÿdF4ÿ2Ba

全部折叠GÿdF4ÿ2Ba

加载GÿdF4ÿ2Barpy_9axisGÿdF4ÿ2Ba文件,其中包含记录的加速度计、陀螺仪和磁强计传感器数据,这些数据来自一个以螺距(左右)摆动的设备GÿdF4ÿ2BaÿGÿdF4ÿ2Ba轴),则偏航(约GÿdF4ÿ2BažGÿdF4ÿ2Ba轴),然后辊(周围GÿdF4ÿ2BaXGÿdF4ÿ2Ba-轴)。该文件还包含录音的采样率。GÿdF4ÿ2Ba

加载GÿdF4ÿ2Ba“rpy_9axis”GÿdF4ÿ2BasensorDataGÿdF4ÿ2BaFsGÿdF4ÿ2BaaccelerometerReadings = sensorData.Acceleration;gyroscopeReadings = sensorData.AngularVelocity;magnetometerReadings = sensorData.MagneticField;GÿdF4ÿ2Ba

创建GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba系统对象™GÿdF4ÿ2Ba采样率GÿdF4ÿ2Ba设置传感器数据的采样率。指定两个抽取因子以减少算法的计算成本。GÿdF4ÿ2Ba

decim = 2;保险丝= ahrsfilter (GÿdF4ÿ2Ba'采样率'GÿdF4ÿ2BaFs,GÿdF4ÿ2Ba'DecimationFactor'GÿdF4ÿ2Ba,decim);GÿdF4ÿ2Ba

通过加速计读数,陀螺仪读数,以及磁力计读数GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba对象,GÿdF4ÿ2Ba保险丝GÿdF4ÿ2Ba,以输出所述传感器主体取向随时间的估计。默认情况下,取向是作为四元数的向量输出。GÿdF4ÿ2Ba

Q =保险丝(accelerometerReadings,gyroscopeReadings,magnetometerReadings);GÿdF4ÿ2Ba

取向由旋转的父坐标系统到子坐标系统所需的角位移确定。情节度欧拉角的方向随着时间的推移。GÿdF4ÿ2Ba

ahrsfilterGÿdF4ÿ2Ba正确估计方向随时间的变化,包括朝南的初始方向。GÿdF4ÿ2Ba

时间=(0:decim:尺寸(accelerometerReadings,1)-1)/ FS;图(时间,eulerd(Q,GÿdF4ÿ2Ba'ZYX'GÿdF4ÿ2Ba,GÿdF4ÿ2Ba'帧'GÿdF4ÿ2Ba)标题(GÿdF4ÿ2Ba取向估计的GÿdF4ÿ2Ba)图例(GÿdF4ÿ2Ba“z轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“x轴”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba的旋转(度)GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

这个例子说明了如何表现GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba系统对象™受磁干扰影响。GÿdF4ÿ2Ba

负载GÿdF4ÿ2BaStationaryIMUReadingsGÿdF4ÿ2Ba,其中包含加速计,磁力计,和从静止IMU陀螺仪的读数。GÿdF4ÿ2Ba

加载GÿdF4ÿ2Ba'StationaryIMUReadings.mat'GÿdF4ÿ2BaaccelReadingsGÿdF4ÿ2BamagReadingsGÿdF4ÿ2BagyroReadingsGÿdF4ÿ2Ba采样率GÿdF4ÿ2BaNUMSAMPLES =尺寸(accelReadings,1);GÿdF4ÿ2Ba

该GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba利用磁场强度在假定的地球恒定磁场下稳定其方向。然而,有许多自然和人造物体会输出磁场,会使算法产生混乱。若要考虑瞬态磁场的存在,可以设置GÿdF4ÿ2BaMagneticDisturbanceNoiseGÿdF4ÿ2Ba对物业GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba对象。GÿdF4ÿ2Ba

创建GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba与抽取因子为2的对象,注意缺省预期的磁场强度。GÿdF4ÿ2Ba

decim = 2;FUSE = ahrsfilter(GÿdF4ÿ2Ba'采样率'GÿdF4ÿ2BaSampleRate,GÿdF4ÿ2Ba'DecimationFactor'GÿdF4ÿ2Ba,decim);GÿdF4ÿ2Ba

保险丝使用姿态航向基准系统(AHRS)过滤,然后将IMU读数可视化传感器本体的取向随时间。该方向波动的开始和稳定后约60秒。GÿdF4ÿ2Ba

取向=保险丝(accelReadings gyroReadings magReadings);orientationEulerAngles = eulerd(取向,GÿdF4ÿ2Ba'ZYX'GÿdF4ÿ2Ba,GÿdF4ÿ2Ba'帧'GÿdF4ÿ2Ba);时间= (0:decim: (numSamples-1))”/ SampleRate;图(1)图(时间,orientationEulerAngles (: 1),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles (:, 2),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles(:,3))xlabel(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba的旋转(度)GÿdF4ÿ2Ba)图例(GÿdF4ÿ2Ba“z轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“x轴”GÿdF4ÿ2Ba)标题(GÿdF4ÿ2Ba“过滤IMU数据”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

中记录的磁场中加入瞬态强磁场,模拟磁干扰GÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba。可视化的磁场干扰。GÿdF4ÿ2Ba

jamStrength = [10 5 2];起止= (50 * SampleRate): (150 * SampleRate);果酱= 0(大小(magReadings));果酱(起止:)= jamStrength。*的(元素个数(起止),3);magreading = magreading + jam;图(2)图(时间,magReadings (1: decim:最终,:))包含(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba“磁场强度(\亩T)”GÿdF4ÿ2Ba)标题(GÿdF4ÿ2Ba“有干扰的模拟磁场”GÿdF4ÿ2Ba)图例(GÿdF4ÿ2Ba“z轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“x轴”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

再次使用。运行模拟GÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba磁干扰。绘制结果并注意在方向估计中的性能下降。GÿdF4ÿ2Ba

复位(熔丝)方向=熔丝(加速读数、陀螺读数、磁读数);orientationEulerAngles = eulerd(取向,GÿdF4ÿ2Ba'ZYX'GÿdF4ÿ2Ba,GÿdF4ÿ2Ba'帧'GÿdF4ÿ2Ba);图(3)图(时间,orientationEulerAngles (: 1),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles (:, 2),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles(:,3))xlabel(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba的旋转(度)GÿdF4ÿ2Ba)图例(GÿdF4ÿ2Ba“z轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“x轴”GÿdF4ÿ2Ba)标题(GÿdF4ÿ2Ba“带有磁性干扰和默认属性的过滤IMU数据”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

磁干扰被AHRS滤波器误读,传感器体方位估计错误。你可以通过增加…来补偿干扰GÿdF4ÿ2BaMagneticDisturbanceNoiseGÿdF4ÿ2Ba属性。增加GÿdF4ÿ2BaMagneticDisturbanceNoiseGÿdF4ÿ2Ba属性增加了磁干扰假定噪声范围,而整个磁力计信号中的潜在融合算法较少地加权GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba。GÿdF4ÿ2Ba

设置GÿdF4ÿ2BaMagneticDisturbanceNoiseGÿdF4ÿ2Ba至GÿdF4ÿ2Ba200GÿdF4ÿ2Ba然后再次运行模拟。GÿdF4ÿ2Ba

方向估计输出GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba更准确,受磁暂态影响更小。然而,由于磁强计信号在底层融合算法中加权较少,因此算法可能需要更多的时间来进行重新稳定。GÿdF4ÿ2Ba

复位(FUSE)FUSE.MagneticDisturbanceNoise = 20;取向=保险丝(accelReadings gyroReadings magReadings);orientationEulerAngles = eulerd(取向,GÿdF4ÿ2Ba'ZYX'GÿdF4ÿ2Ba,GÿdF4ÿ2Ba'帧'GÿdF4ÿ2Ba);图(4)积(时间,orientationEulerAngles(:,1),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles (:, 2),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles(:,3))xlabel(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba的旋转(度)GÿdF4ÿ2Ba)图例(GÿdF4ÿ2Ba“z轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“x轴”GÿdF4ÿ2Ba)标题(GÿdF4ÿ2Ba“与磁扰和修改属性过滤IMU数据”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

本例使用GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba系统对象™融合9轴IMU数据从一个传感器主体的动摇。绘制目标与其最终位置之间的四元数距离,以可视化性能以及过滤器收敛到正确位置的速度。然后调参数的GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba从而使滤波器更快地收敛到地面真值静止位置。GÿdF4ÿ2Ba

负载GÿdF4ÿ2BaIMUReadingsShakenGÿdF4ÿ2Ba到您当前的工作空间。该数据是从一个IMU这是在静止位置摇动然后铺设记录。可视化的加速度,磁场,和所记录的传感器角速度。GÿdF4ÿ2Ba

加载GÿdF4ÿ2Ba“IMUReadingsShaken”GÿdF4ÿ2BaaccelReadingsGÿdF4ÿ2BagyroReadingsGÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba采样率GÿdF4ÿ2BaNUMSAMPLES =尺寸(accelReadings,1);时间=(0:(NUMSAMPLES-1))'/采样率;图(1)副区(3,1,1)情节(时间,accelReadings)标题(GÿdF4ÿ2Ba加速度计读的GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba“加速度(m / s ^ 2)”GÿdF4ÿ2Ba)次情节(3、1、2)情节(时间、读图)GÿdF4ÿ2Ba“磁力读”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba“磁场(\狗)”GÿdF4ÿ2Ba)次情节(3,1,3)情节(时间,陀螺读数)GÿdF4ÿ2Ba“陀螺仪阅读”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba“角速度(弧度/秒)”GÿdF4ÿ2Ba)包含(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

创建GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba然后熔断器IMU数据来确定方位。取向返回为四元数的向量;转换每班四欧拉度的角度。通过绘制欧拉可视化传感器本体的取向随时间的角度需要,在每个时间步骤,所述全局坐标系到传感器主体旋转坐标系。GÿdF4ÿ2Ba

保险丝= ahrsfilter (GÿdF4ÿ2Ba'采样率'GÿdF4ÿ2Ba,SampleRate);取向=保险丝(accelReadings gyroReadings magReadings);orientationEulerAngles = eulerd(取向,GÿdF4ÿ2Ba'ZYX'GÿdF4ÿ2Ba,GÿdF4ÿ2Ba'帧'GÿdF4ÿ2Ba);图(之二)图(时间,orientationEulerAngles(:,1),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles (:, 2),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba时间,orientationEulerAngles(:,3))xlabel(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba的旋转(度)GÿdF4ÿ2Ba)标题(GÿdF4ÿ2Ba的方向随时间变化GÿdF4ÿ2Ba)图例(GÿdF4ÿ2Ba绕z轴旋转的GÿdF4ÿ2Ba,GÿdF4ÿ2Ba...GÿdF4ÿ2Ba“旋转围绕y轴”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba...GÿdF4ÿ2Ba绕轴旋转的GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

在IMU记录,震动停止后,大约六秒钟。确定存放方位,使您可以表征有多快GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba收敛。GÿdF4ÿ2Ba

要确定静止方向,计算最后四秒的磁场和加速度的平均值,然后使用GÿdF4ÿ2BaecompassGÿdF4ÿ2Ba功能融合的数据。GÿdF4ÿ2Ba

可视化随时间从所述静止位置的四元数的距离。GÿdF4ÿ2Ba

restingOrientation =电子罗盘(平均值(accelReadings(6 *采样率:端,:)),GÿdF4ÿ2Ba...GÿdF4ÿ2Ba平均值(magReadings(6 *采样率:端,:)));图(3)图(时间,rad2deg(DIST(restingOrientation,定向)))保持GÿdF4ÿ2Ba在GÿdF4ÿ2Ba包含(GÿdF4ÿ2Ba“时间(s)”GÿdF4ÿ2Ba)ylabel (GÿdF4ÿ2Ba“四元数的距离(度)”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

修改默认的GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba特性使得滤波器更迅速地收敛于重力。增加GÿdF4ÿ2BaGyroscopeDriftNoiseGÿdF4ÿ2Ba至GÿdF4ÿ2Ba1E-2GÿdF4ÿ2Ba和减少GÿdF4ÿ2BaLinearAccelerationNoiseGÿdF4ÿ2Ba至GÿdF4ÿ2Ba1E-4GÿdF4ÿ2Ba。这将指示GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba减少陀螺仪数据的重量,增加加速度计数据的重量。因为GÿdF4ÿ2Ba加速度计GÿdF4ÿ2Ba数据提供了稳定和一致的重力向量,所得到的取向收敛得更快。GÿdF4ÿ2Ba

重置过滤器,保险丝数据,并绘制结果。GÿdF4ÿ2Ba

保险丝。LinearAccelerationNoise = 1的军医;保险丝。Gÿ[RØ小号CØpËd[R如果Ť没有一世小号e = 1e-2; reset(fuse) orientation = fuse(accelReadings,gyroReadings,magReadings); figure(3) plot(time,rad2deg(dist(restingOrientation,orientation))) legend(“默认AHRS过滤器”GÿdF4ÿ2Ba,GÿdF4ÿ2Ba“微调AHRS过滤器”GÿdF4ÿ2Ba)GÿdF4ÿ2Ba

算法GÿdF4ÿ2Ba

全部展开GÿdF4ÿ2Ba

注意:下面的算法只适用于NED参照系。GÿdF4ÿ2Ba

该GÿdF4ÿ2BaahrsfilterGÿdF4ÿ2Ba使用九个轴卡尔曼滤波器结构描述于GÿdF4ÿ2Ba[1]GÿdF4ÿ2Ba(传感器融合与跟踪工具箱)。该算法试图通过跟踪定位误差、陀螺仪偏差、线性加速度和磁干扰来输出最终的方位和角速度。间接卡尔曼滤波不是直接跟踪方向,而是对误差过程进行建模,GÿdF4ÿ2BaXGÿdF4ÿ2Ba,递归更新:GÿdF4ÿ2Ba

XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba [GÿdF4ÿ2Ba θGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba bGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba 一种GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba dGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ]GÿdF4ÿ2Ba =GÿdF4ÿ2Ba FGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba [GÿdF4ÿ2Ba θGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba bGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba 一种GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba dGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba ]GÿdF4ÿ2Ba +GÿdF4ÿ2Ba w ^GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba

在哪里GÿdF4ÿ2BaXGÿdF4ÿ2BaķGÿdF4ÿ2Ba是一个12乘1的向量,包括:GÿdF4ÿ2Ba

  • θGÿdF4ÿ2BaķGÿdF4ÿ2Ba- 3×1取向误差矢量,以度为单位,在时间GÿdF4ÿ2BaķGÿdF4ÿ2Ba

  • bGÿdF4ÿ2BaķGÿdF4ÿ2Ba——3×1陀螺仪零角速率偏置矢量,单位为deg/s,时间GÿdF4ÿ2BaķGÿdF4ÿ2Ba

  • 一种GÿdF4ÿ2BaķGÿdF4ÿ2Ba- 3×1加速度误差向量在传感器帧测量的,单位为g,在时间GÿdF4ÿ2BaķGÿdF4ÿ2Ba

  • dGÿdF4ÿ2BaķGÿdF4ÿ2Ba——3×1磁干扰误差矢量测量的传感器,在µT时间GÿdF4ÿ2BaķGÿdF4ÿ2Ba

并在GÿdF4ÿ2Baw ^GÿdF4ÿ2BaķGÿdF4ÿ2Ba是一个12乘1的加性噪声向量,GÿdF4ÿ2BaFGÿdF4ÿ2BaķGÿdF4ÿ2Ba是状态转换模型。GÿdF4ÿ2Ba

因为GÿdF4ÿ2BaXGÿdF4ÿ2BaķGÿdF4ÿ2Ba定义为错误过程,GÿdF4ÿ2Ba先天的GÿdF4ÿ2Ba估计总是0,因此状态转换模型,GÿdF4ÿ2BaFGÿdF4ÿ2BaķGÿdF4ÿ2Ba,是零。这一见解导致了以下标准卡尔曼方程的简化:GÿdF4ÿ2Ba

标准卡尔曼方程:GÿdF4ÿ2Ba

XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba =GÿdF4ÿ2Ba FGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba +GÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba =GÿdF4ÿ2Ba FGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba +GÿdF4ÿ2Ba FGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ŤGÿdF4ÿ2Ba +GÿdF4ÿ2Ba QGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ÿGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba žGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba 小号GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba [RGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba +GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ŤGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ŤGÿdF4ÿ2Ba (GÿdF4ÿ2Ba 小号GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba )GÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba +GÿdF4ÿ2Ba =GÿdF4ÿ2Ba XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba +GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ÿGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba +GÿdF4ÿ2Ba =GÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba −GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba

算法中用到的卡尔曼方程:GÿdF4ÿ2Ba

XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba =GÿdF4ÿ2Ba 0GÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba =GÿdF4ÿ2Ba QGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ÿGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba žGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba 小号GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba [RGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba +GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ŤGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba =GÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ŤGÿdF4ÿ2Ba (GÿdF4ÿ2Ba 小号GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba )GÿdF4ÿ2Ba −GÿdF4ÿ2Ba 1GÿdF4ÿ2Ba XGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba +GÿdF4ÿ2Ba =GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ÿGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba +GÿdF4ÿ2Ba =GÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba −GÿdF4ÿ2Ba ķGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba HGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba PGÿdF4ÿ2Ba ķGÿdF4ÿ2Ba −GÿdF4ÿ2Ba

哪里:GÿdF4ÿ2Ba

  • XGÿdF4ÿ2BaķGÿdF4ÿ2Ba−GÿdF4ÿ2Ba- 预料到的 (GÿdF4ÿ2Ba先天的GÿdF4ÿ2Ba)状态估计;错误处理GÿdF4ÿ2Ba

  • PGÿdF4ÿ2BaķGÿdF4ÿ2Ba−GÿdF4ÿ2Ba- 预料到的 (GÿdF4ÿ2Ba先天的GÿdF4ÿ2Ba)估计协方差GÿdF4ÿ2Ba

  • ÿGÿdF4ÿ2BaķGÿdF4ÿ2Ba——创新GÿdF4ÿ2Ba

  • 小号GÿdF4ÿ2BaķGÿdF4ÿ2Ba——创新协方差GÿdF4ÿ2Ba

  • ķGÿdF4ÿ2BaķGÿdF4ÿ2Ba- 卡尔曼增益GÿdF4ÿ2Ba

  • XGÿdF4ÿ2BaķGÿdF4ÿ2Ba+GÿdF4ÿ2Ba——更新(GÿdF4ÿ2Ba后验GÿdF4ÿ2Ba)状态估计GÿdF4ÿ2Ba

  • PGÿdF4ÿ2BaķGÿdF4ÿ2Ba+GÿdF4ÿ2Ba——更新(GÿdF4ÿ2Ba后验GÿdF4ÿ2Ba)估计协方差GÿdF4ÿ2Ba

ķGÿdF4ÿ2Ba表示迭代,即上标GÿdF4ÿ2Ba+GÿdF4ÿ2Ba代表GÿdF4ÿ2Ba后验GÿdF4ÿ2Ba估计,上标GÿdF4ÿ2Ba−GÿdF4ÿ2Ba代表GÿdF4ÿ2Ba先天的GÿdF4ÿ2Ba估计。GÿdF4ÿ2Ba

下面的图形和步骤描述了通过算法进行的基于框架的单次迭代。GÿdF4ÿ2Ba

在第一次迭代之前GÿdF4ÿ2BaaccelReadingsGÿdF4ÿ2Ba,GÿdF4ÿ2BagyroReadingsGÿdF4ÿ2Ba,GÿdF4ÿ2BamagReadingsGÿdF4ÿ2Ba输入被分块输入GÿdF4ÿ2BaDecimationFactorGÿdF4ÿ2Ba-by-3帧。对于每个大块,该算法使用对应于陀螺仪读数的块的最新的加速度计和磁力计的读数。GÿdF4ÿ2Ba

参考GÿdF4ÿ2Ba

[2] Roetenberg, D., H.J. Luinge, C.T.M. Baten, P.H. Veltink。“磁干扰的补偿改善了人体段定位的惯性和磁感。”GÿdF4ÿ2BaIEEE神经系统与康复工程会刊GÿdF4ÿ2Ba。卷。13。2005年第3期,第395-405页。GÿdF4ÿ2Ba

扩展功能GÿdF4ÿ2Ba

也可以看看GÿdF4ÿ2Ba

|GÿdF4ÿ2Ba|GÿdF4ÿ2Ba|GÿdF4ÿ2Ba

介绍了在R2018bGÿdF4ÿ2Ba