从加速度计,陀螺仪和磁力计读数的方向gydF4y2Ba
的gydF4y2Baahrsfilter.gydF4y2Ba
System object™融合加速度计、磁力计和陀螺仪传感器数据来估计设备方向。gydF4y2Ba
估计设备朝向:gydF4y2Ba
创造gydF4y2Baahrsfilter.gydF4y2Ba
对象并设置其属性。gydF4y2Ba
使用参数调用对象,就像它是一个函数。gydF4y2Ba
要了解有关系统对象如何工作的更多信息,请参阅gydF4y2Ba什么是系统对象?gydF4y2Ba.gydF4y2Ba
返回间接卡尔曼滤波系统对象,gydF4y2Ba保险丝gydF4y2Ba
= ahrsfilter.gydF4y2Ba保险丝gydF4y2Ba
,用于加速度计,陀螺仪和磁力计数据的传感器融合,以估计器件方向和角速度。滤波器使用12元元状态向量来跟踪方向,陀螺仪偏置,线性加速度和磁干扰的估计误差。gydF4y2Ba
返回保留加速度计,陀螺仪和磁力计数据的AHRSFilter系统对象,以估算相对于参考帧的设备方向gydF4y2Ba保险丝gydF4y2Ba
= ahrsfilter(gydF4y2Ba“ReferenceFrame”gydF4y2Ba
,gydF4y2Ba射频gydF4y2Ba
)gydF4y2Ba射频gydF4y2Ba
.指定gydF4y2Ba射频gydF4y2Ba
作为gydF4y2Ba'ned'gydF4y2Ba
(向东 - 向下)或gydF4y2Ba'enu'gydF4y2Ba
(东北北)。默认值为“ned”。gydF4y2Ba
每个属性集gydF4y2Ba保险丝gydF4y2Ba
= ahrsfilter(gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,价值gydF4y2Ba
)gydF4y2Ba名称gydF4y2Ba
到指定的gydF4y2Ba价值gydF4y2Ba
.未指定的属性具有默认值。gydF4y2Ba
除非另有说明,否则属性是gydF4y2Ba不可努力gydF4y2Ba,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定gydF4y2Ba发布gydF4y2Ba
函数打开它们。gydF4y2Ba
如果属性是gydF4y2Ba调节gydF4y2Ba,您可以随时更改它的值。gydF4y2Ba
有关更改属性值的详细信息,请参阅gydF4y2Ba在MATLAB中使用系统对象进行系统设计gydF4y2Ba.gydF4y2Ba
采样率gydF4y2Ba
- - - - - -gydF4y2Ba输入样品传感器数据(Hz)gydF4y2BaOne hundred.gydF4y2Ba
(默认)|gydF4y2Ba积极的标量gydF4y2BaHz中的传感器数据的输入采样率,指定为正标量。gydF4y2Ba
可调:gydF4y2Ba没有gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
decimationFactor.gydF4y2Ba
- - - - - -gydF4y2Ba抽取因子gydF4y2Ba1gydF4y2Ba
(默认)|gydF4y2Ba正整数gydF4y2Ba抽取因子将输入传感器数据速率降低为融合算法的一部分,指定为正整数。gydF4y2Ba
输入的行数——gydF4y2Ba加速gydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
, 和gydF4y2BaMagreadings.gydF4y2Ba
- 必须是抽取因子的倍数。gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
Accelerernoise.gydF4y2Ba
- - - - - -gydF4y2Ba加速度计信号噪声方差(m/s)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba0.00019247.gydF4y2Ba
(默认)|gydF4y2Ba积极的真正标量gydF4y2Ba加速度计信号噪声的方差(m/s)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为正面的真正标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
磁磁体gydF4y2Ba
- - - - - -gydF4y2Ba磁强计信号噪声的方差(μTgydF4y2Ba2gydF4y2Ba)gydF4y2Ba0.1gydF4y2Ba
(默认)|gydF4y2Ba积极的真正标量gydF4y2BaμT磁力计信号噪声的变化gydF4y2Ba2gydF4y2Ba,指定为正面的真正标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
陀螺仪gydF4y2Ba
- - - - - -gydF4y2Ba陀螺仪信号噪声方差((rad/s)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba9.1385E-5gydF4y2Ba
(默认)|gydF4y2Ba积极的真正标量gydF4y2Ba陀螺仪信号噪声的差异(RAD / S)gydF4y2Ba2gydF4y2Ba,指定为正面的真正标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
GyroscopeDriftNoisegydF4y2Ba
- - - - - -gydF4y2Ba陀螺仪偏移漂移的差异((rad / s)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba3.0462E-13.gydF4y2Ba
(默认)|gydF4y2Ba积极的真正标量gydF4y2Ba陀螺仪偏移漂移(RAD / S)的变化gydF4y2Ba2gydF4y2Ba,指定为正面的真正标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
LinearAccelerationNoisegydF4y2Ba
- - - - - -gydF4y2Ba线性加速度噪声的变化(M / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba0.0096236.gydF4y2Ba
(默认)|gydF4y2Ba积极的真正标量gydF4y2Ba线性加速度噪声的差异(M / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为正面的真正标量。线性加速度被建模为低通滤波的白噪声过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
linearaccelerationdecayfactor.gydF4y2Ba
- - - - - -gydF4y2Ba线性加速度漂移的衰减因子gydF4y2Ba0.5gydF4y2Ba
(默认)|gydF4y2Ba标量在范围内[0,1)gydF4y2Ba线性加速度漂移的衰减系数,指定为[0,1]范围内的标量。如果线性加速度变化很快,设置gydF4y2Balinearacclerationdecayfactor.gydF4y2Ba
较低的价值。如果线性加速度会缓慢变化,请设置gydF4y2Balinearacclerationdecayfactor.gydF4y2Ba
更高的价值。线性加速漂移被建模为低通滤波的白噪声过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
距离磁性疾病gydF4y2Ba
- - - - - -gydF4y2Ba磁干扰噪声的变化(μTgydF4y2Ba2gydF4y2Ba)gydF4y2Ba0.5gydF4y2Ba
(默认)|gydF4y2Ba实有限正标量gydF4y2Ba磁干扰噪声的变化μTgydF4y2Ba2gydF4y2Ba,指定为真正的有限正标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
距离urbicedecayfactorgydF4y2Ba
- - - - - -gydF4y2Ba磁扰动的衰变因子gydF4y2Ba0.5gydF4y2Ba
(默认)|gydF4y2Ba[0,1]范围内的正标量gydF4y2Ba磁干扰的衰减系数,指定为[0,1]范围内的一个正标量。磁扰动模型为一阶马尔可夫过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
InitialProcessNoisegydF4y2Ba
- - - - - -gydF4y2Ba过程噪声的协方差矩阵gydF4y2Ba用于过程噪声的协方差矩阵,指定为12×12矩阵。默认值为:gydF4y2Ba
列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 000.0096236.One hundred.00000000 0 0 0 0.009623610000000 0 0 0 0 0 0 0.009623610000000 0 0 0 0 0 0 0.600000000000000 0 0 0 0 0 0 0.600000000000000 0 0 0 0 0 0 0.600000000000000
初始过程协方差矩阵算用于过程模型中的错误。gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
ExpectedMagneticFieldStrengthgydF4y2Ba
- - - - - -gydF4y2Ba磁场强度(μT)的预期估计gydF4y2Ba50.gydF4y2Ba
(默认)|gydF4y2Ba真正的正标量gydF4y2Ba用μT表示的磁场强度的期望值,μT表示实正标量。预期磁场强度是对当前位置的地球磁场强度的估计。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
OrientationFormat.gydF4y2Ba
- - - - - -gydF4y2Ba输出方向格式gydF4y2Ba“四元数”gydF4y2Ba
(默认)|gydF4y2Ba'旋转矩阵'gydF4y2Ba
输出方向格式,指定为gydF4y2Ba“四元数”gydF4y2Ba
或gydF4y2Ba'旋转矩阵'gydF4y2Ba
.输出的大小取决于输入的大小,gydF4y2BaNgydF4y2Ba,以及输出方向格式:gydF4y2Ba
“四元数”gydF4y2Ba
- 输出是一个gydF4y2BaNgydF4y2Ba-By-1gydF4y2Ba四元数gydF4y2Ba
.gydF4y2Ba
'旋转矩阵'gydF4y2Ba
——输出是一个3x3x-gydF4y2BaNgydF4y2Ba旋转矩阵。gydF4y2Ba
数据类型:gydF4y2BachargydF4y2Ba
|gydF4y2Ba细绳gydF4y2Ba
[gydF4y2Ba
引信加速度计,陀螺仪和磁力计数据,以计算方向和角速度测量。算法假设设备在第一次调用之前是静止的。gydF4y2Ba方向gydF4y2Ba
,gydF4y2Ba角速度gydF4y2Ba
] =保险丝(gydF4y2Ba加速gydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
,gydF4y2BaMagreadings.gydF4y2Ba
)gydF4y2Ba
加速gydF4y2Ba
- - - - - -gydF4y2Ba传感器体坐标系中的加速度计读数(M / S.gydF4y2Ba2gydF4y2Ba)gydF4y2Ba加速度计在传感器体坐标系中的读数,单位为m/sgydF4y2Ba2gydF4y2Ba,指定为gydF4y2BaNgydF4y2Ba-By-3矩阵。gydF4y2BaNgydF4y2Ba样品的数量是多少,三列是多少gydF4y2Ba加速gydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。假设加速度计读数对应于所指定的采样率gydF4y2Ba采样率gydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
gyroReadingsgydF4y2Ba
- - - - - -gydF4y2Ba传感器体坐标系中的陀螺仪读数(RAD / S)gydF4y2Ba陀螺仪在传感器体坐标系中的读数,单位为rad/s,指定为gydF4y2BaNgydF4y2Ba-By-3矩阵。gydF4y2BaNgydF4y2Ba样品的数量是多少,三列是多少gydF4y2BagyroReadingsgydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。陀螺仪读数被假定为与指定的采样速率相对应gydF4y2Ba采样率gydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
Magreadings.gydF4y2Ba
- - - - - -gydF4y2Ba磁力计在传感器体坐标系(µT)中的读数gydF4y2BaμT的传感器体坐标系中的磁力计读数,指定为gydF4y2BaNgydF4y2Ba-By-3矩阵。gydF4y2BaNgydF4y2Ba样品的数量是多少,三列是多少gydF4y2BaMagreadings.gydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。磁强计的读数假定对应于gydF4y2Ba采样率gydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
方向gydF4y2Ba
- 从本地导航坐标系旋转到传感器主体坐标系的方向gydF4y2Ba可以将数量从本地导航坐标系统旋转到物体坐标系统的方向,以四元数或数组的形式返回。的大小和类型gydF4y2Ba方向gydF4y2Ba
取决于是否gydF4y2BaOrientationFormat.gydF4y2Ba属性设置为gydF4y2Ba“四元数”gydF4y2Ba
或gydF4y2Ba'旋转矩阵'gydF4y2Ba
:gydF4y2Ba
“四元数”gydF4y2Ba
- 输出是一个gydF4y2Ba米gydF4y2Ba-1季六边的1向量,具有与输入相同的底层数据类型gydF4y2Ba
'旋转矩阵'gydF4y2Ba
- 输出是3×3的 -gydF4y2Ba米gydF4y2Ba与输入数据类型相同的旋转矩阵数组gydF4y2Ba
输入样本的数量,gydF4y2BaNgydF4y2Ba,而且gydF4y2BadecimationFactor.gydF4y2Ba财产确定gydF4y2Ba米gydF4y2Ba.gydF4y2Ba
您可以使用gydF4y2Ba方向gydF4y2Ba
在一个gydF4y2Ba旋转框架gydF4y2Ba
功能从本地导航系统旋转到传感器主体坐标系。gydF4y2Ba
数据类型:gydF4y2Ba四元数gydF4y2Ba
|gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
角速度gydF4y2Ba
- 传感器体坐标系中的角速度(RAD / S)gydF4y2Ba在RAD / S的传感器体坐标系中除去陀螺仪偏压的角速度,作为一个gydF4y2Ba米gydF4y2Ba3数组。输入样本的数量,gydF4y2BaNgydF4y2Ba,而且gydF4y2BadecimationFactor.gydF4y2Ba
财产确定gydF4y2Ba米gydF4y2Ba.gydF4y2Ba
数据类型:gydF4y2Ba单身的gydF4y2Ba
|gydF4y2Ba双倍的gydF4y2Ba
要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源gydF4y2Baobj.gydF4y2Ba
,使用此语法:gydF4y2Ba
释放(obj)gydF4y2Ba
ahrsfilter.gydF4y2Ba
调gydF4y2Ba |
调优gydF4y2Baahrsfilter.gydF4y2Ba 减少估计错误的参数gydF4y2Ba |
步gydF4y2Ba |
跑步gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba |
发布gydF4y2Ba |
释放资源并允许更改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba |
重置gydF4y2Ba |
重置内部状态gydF4y2Ba系统对象gydF4y2Ba |
ahrsfilter.gydF4y2Ba
加载gydF4y2Barpy_9axis.gydF4y2Ba
文件,其中包含录制的加速度计,陀螺和磁力计传感器数据,从音高振荡(周围)gydF4y2BaygydF4y2Ba-axis,然后偏航(周围gydF4y2BazgydF4y2Ba-axis),然后滚动(周围gydF4y2BaxgydF4y2Ba-轴)。该文件还包含录制的采样率。gydF4y2Ba
负载gydF4y2Ba'rpy_9axis'gydF4y2BaSensoldata.gydF4y2BaFS.gydF4y2BaAcceleromaterReadings = Sensoldata.Acceleration;gyroscopereadings = sensoldata.angularvelocity;MagnetImmerReadings = Sensoldata.MagneticField;gydF4y2Ba
创建一个gydF4y2Baahrsfilter.gydF4y2Ba
System Object™gydF4y2Ba采样率gydF4y2Ba
设置为传感器数据的采样率。指定抽取因子为2以减少算法的计算成本。gydF4y2Ba
decim = 2;fuse = ahrsfilter(gydF4y2Ba'采样率'gydF4y2Ba,fs,gydF4y2Ba“DecimationFactor”gydF4y2Ba, decim);gydF4y2Ba
通过加速度计读数,陀螺读数和磁力计读数gydF4y2Baahrsfilter.gydF4y2Ba
对象,gydF4y2Ba保险丝gydF4y2Ba
,输出随时间的传感器主体方向的估计。缺省情况下,取向作为四元数的向量输出。gydF4y2Ba
Q =保险丝(加速度计,陀螺仪,磁流程仪);gydF4y2Ba
取向由旋转父坐标系所需的角位移来定义为子坐标系。随着时间的推移在度数以欧拉角度的方向绘制。gydF4y2Ba
ahrsfilter.gydF4y2Ba
正确估计随时间的方向的变化,包括面向朝鲜的初始方向。gydF4y2Ba
时间=(0:DECIM:尺寸(加速度计,1)-1)/ FS;绘图(时间,eulerd(q,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)) 标题(gydF4y2Ba'定位估计'gydF4y2Ba) 传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba)gydF4y2Ba
ahrsFiltergydF4y2Ba
此示例显示了如何表现gydF4y2Baahrsfilter.gydF4y2Ba
System Object™受磁力干扰的影响。gydF4y2Ba
加载gydF4y2Ba坐标套管gydF4y2Ba
,其中包含加速度计,磁力计和陀螺仪从固定式IMU读数。gydF4y2Ba
负载gydF4y2Ba'stationaryimureadings.mat'gydF4y2Ba加速gydF4y2BaMagreadings.gydF4y2BagyroReadingsgydF4y2Ba采样率gydF4y2Banumsamples =尺寸(加速度,1);gydF4y2Ba
的gydF4y2Baahrsfilter.gydF4y2Ba
使用磁场强度稳定其对地球的假定恒定磁场的定向。但是,有许多自然和人造物体输出磁场并且可以混淆算法。要考虑存在瞬态磁场,可以设置gydF4y2Ba距离磁性疾病gydF4y2Ba
财产gydF4y2Baahrsfilter.gydF4y2Ba
对象。gydF4y2Ba
创建一个gydF4y2Baahrsfilter.gydF4y2Ba
对象的抽取因子设置为2,并注意默认的预期磁场强度。gydF4y2Ba
decim = 2;保险丝= ahrsfilter (gydF4y2Ba'采样率'gydF4y2Ba,采样率,gydF4y2Ba“DecimationFactor”gydF4y2Ba, decim);gydF4y2Ba
使用姿态和标题参考系统(AHRS)过滤器熔断IMU读数,然后随着时间的推移可视化传感器主体的方向。定向在开始时波动并在大约60秒后稳定。gydF4y2Ba
取向=保险丝(accelReadings gyroReadings magReadings);Orientationeulerangles = Eulerd(方向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);time =(0:decim:(numsamples-1))'/ sampleate;图(1)绘图(时间,Orientationeulerangles(:,1),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,2),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,3))Xlabel(gydF4y2Ba'时间''gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba) 传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba) 标题(gydF4y2Ba'过滤了IMU数据'gydF4y2Ba)gydF4y2Ba
通过向记录的磁场添加瞬态,强磁场来模拟磁力干扰gydF4y2BaMagreadings.gydF4y2Ba
.想象磁场干扰。gydF4y2Ba
jamStrength = [10 5 2];起止= (50 * SampleRate): (150 * SampleRate);果酱= 0(大小(magReadings));果酱(起止:)= jamStrength。*的(元素个数(起止),3);magreads = magreads + jam;图(2)图(时间,magReadings (1: decim:最终,:))包含(gydF4y2Ba'时间''gydF4y2Ba) ylabel (gydF4y2Ba'磁场强度(\ mu t)'gydF4y2Ba) 标题(gydF4y2Ba'模拟磁场与卡住'gydF4y2Ba) 传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba
再次使用模拟gydF4y2BaMagreadings.gydF4y2Ba
磁干扰。绘制结果并注意方向估计性能的下降。gydF4y2Ba
重置(熔断器)方向=保险丝(加速度,电动机,磁带);Orientationeulerangles = Eulerd(方向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(3)绘图(时间,Orientationeulerangles(:,1),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,2),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,3))Xlabel(gydF4y2Ba'时间''gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba) 传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba) 标题(gydF4y2Ba'通过磁干扰和默认属性过滤IMU数据gydF4y2Ba)gydF4y2Ba
通过AHRS滤波器误解磁性干扰,并且传感器体取向被错误地估计。你可以通过增加来弥补干扰gydF4y2Ba距离磁性疾病gydF4y2Ba
财产。增加了gydF4y2Ba距离磁性疾病gydF4y2Ba
属性增加了磁扰动的假定噪声范围,并且在底层融合算法中,整个磁力计信号在底层融合算法中加权gydF4y2Baahrsfilter.gydF4y2Ba
.gydF4y2Ba
设定gydF4y2Ba距离磁性疾病gydF4y2Ba
到gydF4y2Ba200gydF4y2Ba
然后再次运行模拟。gydF4y2Ba
取向估计输出来自gydF4y2Baahrsfilter.gydF4y2Ba
更准确,受磁瞬态的影响更少。然而,由于磁力计信号在底层融合算法中加权,所以算法可能需要更多时间才能恢复。gydF4y2Ba
重置(熔断器)熔断器.MagneticDisturbancenoise = 20;取向=保险丝(accelReadings gyroReadings magReadings);Orientationeulerangles = Eulerd(方向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(4)图(时间,orientationEulerAngles (: 1),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,2),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,3))Xlabel(gydF4y2Ba'时间''gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba) 传奇(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba) 标题(gydF4y2Ba“带有磁干扰和修正特性的过滤IMU数据”gydF4y2Ba)gydF4y2Ba
本示例使用gydF4y2Baahrsfilter.gydF4y2Ba
System object™从Shaken的传感器主体熔断9轴IMU数据。绘制物体与其最终休息位置之间的四元数距离,以可视化性能以及过滤器会聚到正确的静止位置的快速。然后调整参数的gydF4y2Baahrsfilter.gydF4y2Ba
这样过滤器就能更快地收敛到地面真实的静止位置。gydF4y2Ba
加载gydF4y2BaImureadings谢谢gydF4y2Ba
进入您当前的工作空间。这些数据是从IMU中记录下来的,IMU先被摇晃,然后放置在一个静止的位置。观察传感器记录的加速度、磁场和角速度。gydF4y2Ba
负载gydF4y2Ba'imureadingsshaken'gydF4y2Ba加速gydF4y2BagyroReadingsgydF4y2BaMagreadings.gydF4y2Ba采样率gydF4y2Banumsamples =尺寸(加速度,1);时间=(0 :( numsamples-1))'/ sampleate;图(1)子图(3,1,1)图(时间,加速)标题(gydF4y2Ba'加速度计读数'gydF4y2Ba) ylabel (gydF4y2Ba'加速度(m / s ^ 2)'gydF4y2Ba子图(3,1,2)plot(time, magreads) title(gydF4y2Ba'磁力计读'gydF4y2Ba) ylabel (gydF4y2Ba'磁场(\ mut)'gydF4y2Ba)子图(3,1,3)plot(time, gyroreading) title(gydF4y2Ba'陀螺仪阅读'gydF4y2Ba) ylabel (gydF4y2Ba'角速度(rad / s)'gydF4y2Ba)包含(gydF4y2Ba'时间''gydF4y2Ba)gydF4y2Ba
创建一个gydF4y2Baahrsfilter.gydF4y2Ba
然后融合IMU数据以确定方向。方向作为四元数的向量返回;将四元数转换为以欧拉角度为单位。通过绘制每个时间步骤,通过绘制所需的欧拉角度来可视化传感器主体的方向来旋转全局坐标系到传感器主体坐标系。gydF4y2Ba
fuse = ahrsfilter(gydF4y2Ba'采样率'gydF4y2Ba,采样率);定向=保险丝(加速度,电动机,磁带);Orientationeulerangles = Eulerd(方向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(2)绘图(时间,Orientationeulerangles(:,1),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,2),gydF4y2Ba......gydF4y2Ba时间,Orientationeulerangles(:,3))Xlabel(gydF4y2Ba'时间''gydF4y2Ba) ylabel (gydF4y2Ba'旋转(度)'gydF4y2Ba) 标题(gydF4y2Ba'随着时间的推移'gydF4y2Ba) 传奇(gydF4y2Ba绕z轴旋转的gydF4y2Ba,gydF4y2Ba......gydF4y2Ba'围绕y轴旋转'gydF4y2Ba,gydF4y2Ba......gydF4y2Ba'旋转X轴'gydF4y2Ba)gydF4y2Ba
在IMU录制中,大约六秒钟后摇动停止。确定休息方向,以便您可以表征速度gydF4y2Baahrsfilter.gydF4y2Ba
是收敛的。gydF4y2Ba
为了确定静止的方向,计算最后四秒的磁场和加速度的平均值,然后使用gydF4y2BaecgydF4y2Ba
函数来融合数据。gydF4y2Ba
可视化从静止位置到静止时间的四元数距离。gydF4y2Ba
restingOrientation = ecompass(意思是(accelReadings (6 * SampleRate:最终,:)),gydF4y2Ba......gydF4y2Ba意思是(magReadings (6 * SampleRate:最终,:)));图(3)图(时间,rad2deg (dist (restingOrientation、方向)))gydF4y2Ba在gydF4y2BaXlabel(gydF4y2Ba'时间''gydF4y2Ba) ylabel (gydF4y2Ba“四元数距离(度)gydF4y2Ba)gydF4y2Ba
修改默认的gydF4y2Baahrsfilter.gydF4y2Ba
属性使过滤器更快地收敛到重力。增加了gydF4y2BaGyroscopeDriftNoisegydF4y2Ba
到gydF4y2Ba1E-2gydF4y2Ba
并减少gydF4y2BaLinearAccelerationNoisegydF4y2Ba
到gydF4y2Ba1E-4gydF4y2Ba
.这指导了这一点gydF4y2Baahrsfilter.gydF4y2Ba
算法少考虑陀螺仪数据,多考虑加速度计数据。因为gydF4y2Ba加速度计gydF4y2Ba
数据提供稳定和一致的重力矢量,得到的取向会聚更快。gydF4y2Ba
重置过滤器,熔断数据,并绘制结果。gydF4y2Ba
Fuse.LinearaccelerationNoise = 1E-4;熔断器.Gyroscopedriftnoise = 1E-2;重置(熔断器)方向=保险丝(加速度,电动机,磁带);图(3)绘图(Time,Rad2deg(dist(restingorientation,disiveation)))传奇(gydF4y2Ba'默认AHRS过滤器'gydF4y2Ba,gydF4y2Ba“调AHRS过滤”gydF4y2Ba)gydF4y2Ba
注意:以下算法仅适用于NED参考帧。gydF4y2Ba
的gydF4y2Baahrsfilter.gydF4y2Ba
使用九轴Kalman滤波器结构gydF4y2Ba[1]gydF4y2Ba.该算法试图跟踪方向,陀螺仪偏移,线性加速度和磁干扰的误差,以输出最终方向和角速度。间接Kalman滤波器模型不直接跟踪方向,而不是直接跟踪方向,而是错误过程,gydF4y2BaxgydF4y2Ba,并进行递归更新:gydF4y2Ba
在哪里gydF4y2BaxgydF4y2BakgydF4y2Ba是一个12×1矢量,包括:gydF4y2Ba
θ.gydF4y2BakgydF4y2Ba——3乘1的方向误差矢量,以度数表示gydF4y2BakgydF4y2Ba
bgydF4y2BakgydF4y2Ba- 3×1陀螺仪零角速率偏置载体,在DEG / s中gydF4y2BakgydF4y2Ba
一个gydF4y2BakgydF4y2Ba- 在传感器框架中测量的3×1加速度误差矢量,在g中gydF4y2BakgydF4y2Ba
dgydF4y2BakgydF4y2Ba—在传感器框架中测量的磁干扰误差矢量,以µT表示gydF4y2BakgydF4y2Ba
在哪里gydF4y2BawgydF4y2BakgydF4y2Ba是12×1添加剂噪声载体,和gydF4y2BaFgydF4y2BakgydF4y2Ba为状态转换模型。gydF4y2Ba
因为gydF4y2BaxgydF4y2BakgydF4y2Ba定义为错误处理,gydF4y2Ba先天的gydF4y2Ba估计始终为零,因此状态转换模型,gydF4y2BaFgydF4y2BakgydF4y2Ba,为零。这种洞察力导致以下降低标准卡尔曼方程:gydF4y2Ba
标准卡尔曼方程式:gydF4y2Ba
本算法中使用的卡尔曼方程:gydF4y2Ba
地点:gydF4y2Ba
xgydF4y2BakgydF4y2Ba−gydF4y2Ba- 预料到的 (gydF4y2Ba先天的gydF4y2Ba)国家估计;错误过程gydF4y2Ba
PgydF4y2BakgydF4y2Ba−gydF4y2Ba- 预料到的 (gydF4y2Ba先天的gydF4y2Ba)估计协方差gydF4y2Ba
ygydF4y2BakgydF4y2Ba——创新gydF4y2Ba
年代gydF4y2BakgydF4y2Ba- 创新协方差gydF4y2Ba
KgydF4y2BakgydF4y2Ba- 卡尔曼收益gydF4y2Ba
xgydF4y2BakgydF4y2Ba+gydF4y2Ba- 更新 (gydF4y2Ba后验gydF4y2Ba)状态估计gydF4y2Ba
PgydF4y2BakgydF4y2Ba+gydF4y2Ba- 更新 (gydF4y2Ba后验gydF4y2Ba)估计协方差gydF4y2Ba
kgydF4y2Ba表示迭代,上标gydF4y2Ba+gydF4y2Ba代表一个gydF4y2Ba后验gydF4y2Ba估计,和上标gydF4y2Ba−gydF4y2Ba代表一个gydF4y2Ba先天的gydF4y2Ba估计。gydF4y2Ba
图形和以下步骤通过算法描述了基于帧的迭代。gydF4y2Ba
在第一次迭代之前gydF4y2Ba加速gydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
, 和gydF4y2BaMagreadings.gydF4y2Ba
输入块被束缚在一起gydF4y2BadecimationFactor.gydF4y2Ba
3帧。对于每个块,算法使用当前加速度计和磁力计读数对应的块陀螺仪读数。gydF4y2Ba
步行通过算法进行详细说明详细概述。gydF4y2Ba
该算法模拟加速度和角度变化作为线性过程。gydF4y2Ba
当前帧的方向是通过先估计前一帧的角度变化来预测的:gydF4y2Ba
在哪里gydF4y2BaNgydF4y2Ba抽取因子是否由gydF4y2BadecimationFactor.gydF4y2Ba财产和gydF4y2BafsgydF4y2Ba样品率是否由gydF4y2Ba采样率gydF4y2Ba财产。gydF4y2Ba
角度变化使用该角度变化转换成四季度gydF4y2BaRotvec.gydF4y2Ba
四元数gydF4y2Ba
施工的语法:gydF4y2Ba
之前的方向估计通过Δ旋转来更新gydF4y2Ba问gydF4y2Ba:gydF4y2Ba
在第一次迭代中,方向估计,gydF4y2Ba问gydF4y2Ba−gydF4y2Ba,被初始化gydF4y2BaecgydF4y2Ba
.gydF4y2Ba
重力矢量被解释为四元数的第三列,gydF4y2Ba问gydF4y2Ba−gydF4y2Ba,旋转矩阵形式:gydF4y2Ba
看到gydF4y2Ba[1]gydF4y2Ba有关为什么第三列的解释gydF4y2BarPriorgydF4y2Ba可以解释为重力矢量。gydF4y2Ba
第二个重力矢量估计是通过从加速度计读数中减去前一个迭代的衰减线性加速度估计得出的:gydF4y2Ba
通过从之前的迭代旋转磁性载体估计来估计地球的磁性载体gydF4y2Ba先天的gydF4y2Ba旋转矩阵形式的定向估计:gydF4y2Ba
误差模型结合了两个不同点:gydF4y2Ba
来自加速度计读数的重力估计与陀螺仪读数的重力估计的差异:gydF4y2Ba
从陀螺仪读数估计的磁矢量和从磁力计估计的磁矢量之间的差异:gydF4y2Ba
磁力计正确估计磁性矢量估计中的误差并检测磁力干扰。gydF4y2Ba
磁干扰误差通过与磁矢量相关的Kalman增益的矩阵乘法计算,其中误差信号:gydF4y2Ba
卡尔曼收益,gydF4y2BaKgydF4y2Ba,卡尔曼增益是在当前迭代中计算的。gydF4y2Ba
通过验证检测到的磁干扰的功率小于或等于预期磁场强度的功率的功率来确定磁力干扰:gydF4y2Ba
ExpectedMagneticFieldStrengthgydF4y2Ba是一个财产gydF4y2Baahrsfilter.gydF4y2Ba
.gydF4y2Ba
卡尔曼方程使用了从陀螺仪读数得出的重力估计,gydF4y2BaggydF4y2Ba,源自陀螺仪读数的磁性载体估计,gydF4y2Ba媒介gydF4y2Ba以及观察错误过程,gydF4y2BazgydF4y2Ba,更新卡尔曼增益和中间协方差矩阵。卡尔曼增益适用于错误信号,gydF4y2BazgydF4y2Ba,输出一个gydF4y2Ba后验gydF4y2Ba错误估计,gydF4y2BaxgydF4y2Ba+gydF4y2Ba.gydF4y2Ba
观察模型地图映射了1×3观察状态,gydF4y2BaggydF4y2Ba和gydF4y2Ba媒介gydF4y2Ba进入6×12真正的国家,gydF4y2BaHgydF4y2Ba.gydF4y2Ba
观测模型构造为:gydF4y2Ba
在哪里gydF4y2BaggydF4y2BaxgydF4y2Ba,gydF4y2BaggydF4y2BaygydF4y2Ba, 和gydF4y2BaggydF4y2BazgydF4y2Ba是gydF4y2BaxgydF4y2Ba- ,gydF4y2BaygydF4y2Ba- - - - - -,gydF4y2BazgydF4y2Ba- 从估计的重力矢量的元素gydF4y2Ba先天的gydF4y2Ba分别为取向。gydF4y2Ba米gydF4y2BaxgydF4y2Ba,gydF4y2Ba米gydF4y2BaygydF4y2Ba, 和gydF4y2Ba米gydF4y2BazgydF4y2Ba是gydF4y2BaxgydF4y2Ba- ,gydF4y2BaygydF4y2Ba- - - - - -,gydF4y2BazgydF4y2Ba- 从估计的磁性载体的元素gydF4y2Ba先天的gydF4y2Ba分别为取向。gydF4y2Baκ..gydF4y2Ba是一个不变的决心gydF4y2Ba采样率gydF4y2Ba和gydF4y2BadecimationFactor.gydF4y2Ba特性:gydF4y2Baκ..gydF4y2Ba=gydF4y2BadecimationFactor.gydF4y2Ba
/gydF4y2Ba采样率gydF4y2Ba
.gydF4y2Ba
请参阅第7.3和7.4节gydF4y2Ba[1]gydF4y2Ba对于观察模型的推导。gydF4y2Ba
创新协方差是一个6×6的矩阵,用于跟踪测量中的可变性。创新协方差矩阵计算为:gydF4y2Ba
在哪里gydF4y2Ba
HgydF4y2Ba观察模型是矩阵吗gydF4y2Ba
PgydF4y2Ba−gydF4y2Ba是预测的(gydF4y2Ba先天的gydF4y2Ba)观测模型在前一次迭代中计算的协方差的估计gydF4y2Ba
RgydF4y2Ba是观察模型噪声的协方差,计算为:gydF4y2Ba
在哪里gydF4y2Ba
和gydF4y2Ba
以下属性定义了观察模型噪声方差:gydF4y2Ba
误差估计协方差是一个12乘12的矩阵,用于跟踪状态的可变性。gydF4y2Ba
误差估计协方差矩阵更新为:gydF4y2Ba
在哪里gydF4y2BaKgydF4y2Ba卡尔曼获得了,gydF4y2BaHgydF4y2Ba是测量矩阵,和gydF4y2BaPgydF4y2Ba−gydF4y2Ba为前一次迭代中计算的误差估计协方差。gydF4y2Ba
误差估计协方差是一个12乘12的矩阵,用于跟踪状态的可变性。的gydF4y2Ba先天的gydF4y2Ba错误估计协方差,gydF4y2BaPgydF4y2Ba−gydF4y2Ba,被设置为过程噪声协方差,gydF4y2Ba问gydF4y2Ba,在之前的迭代中确定。gydF4y2Ba问gydF4y2Ba作为一个函数计算gydF4y2Ba后验gydF4y2Ba错误估计协方差,gydF4y2BaPgydF4y2Ba+gydF4y2Ba.计算时gydF4y2Ba问gydF4y2Ba,假设与自相关术语相比,互相关项可以忽略不计,并且设置为零:gydF4y2Ba
在哪里gydF4y2Ba
PgydF4y2Ba+gydF4y2Ba- 是更新的(gydF4y2Ba后验gydF4y2Ba)错误估计协方差gydF4y2Ba
κ..gydF4y2Ba-gydF4y2BadecimationFactor.gydF4y2Ba/gydF4y2Ba采样率gydF4y2Ba
βgydF4y2Ba-gydF4y2BaGyroscopeDriftNoisegydF4y2Ba
η.gydF4y2Ba-gydF4y2Ba陀螺仪gydF4y2Ba
νgydF4y2Ba-gydF4y2Balinearaccelerationdecayfactor.gydF4y2Ba
ξgydF4y2Ba-gydF4y2BaLinearAccelerationNoisegydF4y2Ba
σ.gydF4y2Ba-gydF4y2Ba距离urbicedecayfactorgydF4y2Ba
γ.gydF4y2Ba-gydF4y2Ba距离磁性疾病gydF4y2Ba
见第10.1节gydF4y2Ba[1]gydF4y2Ba对于过程误差矩阵的项的推导。gydF4y2Ba
卡尔曼增益矩阵是一个12×6矩阵,用于重量创新。在该算法中,创新被解释为错误过程,gydF4y2BazgydF4y2Ba.gydF4y2Ba
卡尔曼增益矩阵构造为:gydF4y2Ba
在哪里gydF4y2Ba
PgydF4y2Ba−gydF4y2Ba——预测误差协方差gydF4y2Ba
HgydF4y2Ba——观察模型gydF4y2Ba
年代gydF4y2Ba- 创新协方差gydF4y2Ba
的gydF4y2Ba后面gydF4y2Ba通过将卡尔曼增益矩阵与重力矢量和磁矢量估计中的错误组合来确定误差估计:gydF4y2Ba
如果在电流迭代中检测到磁性干扰,则忽略磁矢量误差信号,并且gydF4y2Ba后面gydF4y2Ba误差估计计算为:gydF4y2Ba
通过将先前的估计乘以错误来更新定向估计值:gydF4y2Ba
通过从先前的迭代判断线性加速估计并减去错误来更新线性加速估计:gydF4y2Ba
在哪里gydF4y2Ba
νgydF4y2Ba-gydF4y2Balinearaccelerationdecayfactor.gydF4y2Ba
通过将之前迭代的陀螺仪偏移量减去陀螺仪偏移量误差来更新陀螺仪偏移量估计:gydF4y2Ba
为了估计角速度,坐标系gydF4y2BagyroReadingsgydF4y2Ba
取平均值,并减去前一次迭代中计算的陀螺仪偏移量:gydF4y2Ba
在哪里gydF4y2BaNgydF4y2Ba抽取因子是否由gydF4y2BadecimationFactor.gydF4y2Ba
财产。gydF4y2Ba
陀螺仪偏移估计被初始化为零的零迭代。gydF4y2Ba
如果在当前迭代中没有检测到磁干扰,则磁矢量估计,gydF4y2Ba米gydF4y2Ba,使用gydF4y2Ba后验gydF4y2Ba磁干扰误差和gydF4y2Ba后验gydF4y2Ba取向。gydF4y2Ba
磁干扰误差转换为导航框架:gydF4y2Ba
从先前的磁矢量估计中减去导航帧中的磁干扰误差,然后解释为倾斜:gydF4y2Ba
将倾斜转换为下次迭代的受限磁矢量估计:gydF4y2Ba
ExpectedMagneticFieldStrengthgydF4y2Ba是一个财产gydF4y2Baahrsfilter.gydF4y2Ba
.gydF4y2Ba
[1]开源传感器融合。gydF4y2Bahttps://github.com/memsindustrygroup/open-source-sensor-fusion/tree/master/docs.gydF4y2Ba
[2] Roetenberg,D.,H.J. Luine,C.T.M.Baten和P.H.veltink。“磁扰动的补偿改善了人体段取向的惯性和磁感。”gydF4y2Ba神经系统和康复工程上的IEEE交易gydF4y2Ba.卷。13.第3,2005,第395-405页。gydF4y2Ba
使用说明和限制:gydF4y2Ba
看到gydF4y2BaMATLAB代码生成中的系统对象gydF4y2Ba(MATLAB编码器)gydF4y2Ba.gydF4y2Ba
ecgydF4y2Ba
|gydF4y2BagpsSensorgydF4y2Ba
|gydF4y2Baimufilter.gydF4y2Ba
|gydF4y2Baimusvesor.gydF4y2Ba
|gydF4y2Ba四元数gydF4y2Ba
你点击一个链接对应于这个MATLAB命令:gydF4y2Ba
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。万博1manbetxgydF4y2Ba
选择一个网站,以便在可用的地方进行翻译的内容,并查看本地活动和优惠。根据您的位置,我们建议您选择:gydF4y2Ba.gydF4y2Ba
选择gydF4y2Ba网站gydF4y2Ba您还可以从以下列表中选择一个网站:gydF4y2Ba
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。gydF4y2Ba