方向的加速度计、陀螺仪和磁强计读数gydF4y2Ba
的gydF4y2BaahrsfiltergydF4y2Ba
系统对象™融合加速度计、磁强计和陀螺仪传感器数据来估计设备定位。gydF4y2Ba
估计设备定位:gydF4y2Ba
创建gydF4y2BaahrsfiltergydF4y2Ba
对象并设置其属性。gydF4y2Ba
调用对象的参数,就好像它是一个函数。gydF4y2Ba
了解更多关于系统对象是如何工作的,看到的gydF4y2Ba系统对象是什么?gydF4y2Ba
返回一个间接的卡尔曼滤波器系统对象,gydF4y2Ba保险丝gydF4y2Ba
= ahrsfiltergydF4y2Ba保险丝gydF4y2Ba
传感器融合的加速度计、陀螺仪和磁强计数据来估计设备方向和角速度。过滤器使用12-element状态向量的估计误差跟踪定位、陀螺仪偏见,线性加速度和磁干扰。gydF4y2Ba
返回一个ahrsfilter融合加速度计的系统对象,陀螺仪和磁强计数据来估计设备方向相对于参考系gydF4y2Ba保险丝gydF4y2Ba
= ahrsfilter (gydF4y2Ba“ReferenceFrame”gydF4y2Ba
,gydF4y2Ba射频gydF4y2Ba
)gydF4y2Ba射频gydF4y2Ba
。指定gydF4y2Ba射频gydF4y2Ba
作为gydF4y2BaNED的gydF4y2Ba
(North-East-Down)或gydF4y2Ba“ENU表示”gydF4y2Ba
(East-North-Up)。默认值是“内德”。gydF4y2Ba
每个属性集gydF4y2Ba保险丝gydF4y2Ba
= ahrsfilter (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba
)gydF4y2Ba的名字gydF4y2Ba
到指定的gydF4y2Ba价值gydF4y2Ba
。未指定的属性有默认值。gydF4y2Ba
属性,除非另有注明gydF4y2BanontunablegydF4y2Ba后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,gydF4y2Ba释放gydF4y2Ba
函数打开它们。gydF4y2Ba
如果一个属性gydF4y2Ba可调gydF4y2Ba在任何时候,你可以改变它的值。gydF4y2Ba
改变属性值的更多信息,请参阅gydF4y2Ba系统设计在MATLAB使用系统对象gydF4y2Ba。gydF4y2Ba
SampleRategydF4y2Ba
- - - - - -gydF4y2Ba输入传感器数据的采样率(赫兹)gydF4y2BaOne hundred.gydF4y2Ba
(默认)|gydF4y2Ba积极的标量gydF4y2Ba输入采样率的赫兹传感器数据,指定为一个积极的标量。gydF4y2Ba
可调:gydF4y2Ba没有gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
DecimationFactorgydF4y2Ba
- - - - - -gydF4y2Ba大量毁灭的因素gydF4y2Ba1gydF4y2Ba
(默认)|gydF4y2Ba正整数gydF4y2Ba大量毁灭的因素,减少输入传感器数据融合算法的一部分,指定为一个正整数。gydF4y2Ba
的行数的输入—gydF4y2BaaccelReadingsgydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
,gydF4y2BamagReadingsgydF4y2Ba
——必须大量毁灭的多个因素。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
AccelerometerNoisegydF4y2Ba
- - - - - -gydF4y2Ba加速度计信号噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba0.00019247gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba加速度计信号噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
MagnetometerNoisegydF4y2Ba
- - - - - -gydF4y2Ba磁强计信号噪声的方差(μTgydF4y2Ba2gydF4y2Ba)gydF4y2Ba0.1gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba在μT磁力仪信号噪声的方差gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
GyroscopeNoisegydF4y2Ba
- - - - - -gydF4y2Ba陀螺信号噪声的方差((rad / s)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba9.1385 e-5gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba陀螺信号噪声的方差(rad / s)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
GyroscopeDriftNoisegydF4y2Ba
- - - - - -gydF4y2Ba方差的陀螺仪抵消漂移(rad /秒)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba3.0462 e-13gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba方差的陀螺仪抵消漂移(rad / s)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
LinearAccelerationNoisegydF4y2Ba
- - - - - -gydF4y2Ba线性加速度噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba0.0096236gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba线性加速度噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。线性加速度是建模为lowpass-filtered白噪声过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
LinearAccelerationDecayFactorgydF4y2Ba
- - - - - -gydF4y2Ba衰减系数线性加速度漂移gydF4y2Ba0.5gydF4y2Ba
(默认)|gydF4y2Ba标量范围在[0,1)gydF4y2Ba加速度衰减系数线性漂移,指定为一个标量范围在[0,1)。如果线性加速度变化很快,集gydF4y2BaLinearAcclerationDecayFactorgydF4y2Ba
到一个较低的值。如果线性加速度变化缓慢,集gydF4y2BaLinearAcclerationDecayFactorgydF4y2Ba
到一个更高的价值。线性加速度漂移建模为lowpass-filtered白噪声过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
MagneticDisturbanceNoisegydF4y2Ba
- - - - - -gydF4y2Ba磁干扰噪声的方差(μTgydF4y2Ba2gydF4y2Ba)gydF4y2Ba0.5gydF4y2Ba
(默认)|gydF4y2Ba真正的有限积极标量gydF4y2Ba在μT磁干扰噪声的方差gydF4y2Ba2gydF4y2Ba,指定为一个真正的有限积极的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
MagneticDisturbanceDecayFactorgydF4y2Ba
- - - - - -gydF4y2Ba磁干扰的衰减系数gydF4y2Ba0.5gydF4y2Ba
(默认)|gydF4y2Ba积极的标量范围[0,1]gydF4y2Ba磁干扰衰减系数,指定为一个积极的标量范围[0,1]。磁干扰建模为一阶马尔可夫过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
InitialProcessNoisegydF4y2Ba
- - - - - -gydF4y2Ba对过程噪声协方差矩阵gydF4y2Ba过程噪声协方差矩阵,指定为一个12-by-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 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 0 0 0.600000000000000gydF4y2Ba
初始过程的误差协方差矩阵占过程模型。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
ExpectedMagneticFieldStrengthgydF4y2Ba
- - - - - -gydF4y2Ba预期估计的磁场强度(μT)gydF4y2Ba50gydF4y2Ba
(默认)|gydF4y2Ba真正积极的标量gydF4y2Ba预期估计μT的磁场强度,指定为一个真正的积极的标量。预期的磁场强度是一个估计的地球磁场强度的当前位置。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
OrientationFormatgydF4y2Ba
- - - - - -gydF4y2Ba面向输出格式gydF4y2Ba“四元数”gydF4y2Ba
(默认)|gydF4y2Ba旋转矩阵的gydF4y2Ba
面向输出格式,指定为gydF4y2Ba“四元数”gydF4y2Ba
或gydF4y2Ba旋转矩阵的gydF4y2Ba
。输出取决于输入的大小尺寸,gydF4y2BaNgydF4y2Ba面向,输出格式:gydF4y2Ba
“四元数”gydF4y2Ba
——输出一个gydF4y2BaNgydF4y2Ba1gydF4y2Ba四元数gydF4y2Ba
。gydF4y2Ba
旋转矩阵的gydF4y2Ba
——是一个3-by-3-by——输出gydF4y2BaNgydF4y2Ba旋转矩阵。gydF4y2Ba
数据类型:gydF4y2Ba字符gydF4y2Ba
|gydF4y2Ba字符串gydF4y2Ba
(gydF4y2Ba
融合加速度计、陀螺仪和磁强计的数据来计算方向和角速度测量。该算法假设第一次调用前的设备是静止的。gydF4y2Ba取向gydF4y2Ba
,gydF4y2BaangularVelocitygydF4y2Ba
)=保险丝(gydF4y2BaaccelReadingsgydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
,gydF4y2BamagReadingsgydF4y2Ba
)gydF4y2Ba
accelReadingsgydF4y2Ba
- - - - - -gydF4y2Ba加速度计读数在身体传感器坐标系(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba加速度计读数传感器体坐标系中m / sgydF4y2Ba2gydF4y2Ba指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BaaccelReadingsgydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。加速度计读数被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
gyroReadingsgydF4y2Ba
- - - - - -gydF4y2Ba陀螺仪读数在人体传感器坐标系(rad / s)gydF4y2Ba陀螺仪读数传感器体坐标系在rad / s,指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BagyroReadingsgydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。陀螺仪数据被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
magReadingsgydF4y2Ba
- - - - - -gydF4y2Ba磁强计读数在身体传感器坐标系(µT)gydF4y2Ba磁强计读数在µT传感器体坐标系中,指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BamagReadingsgydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。磁强计读数被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
取向gydF4y2Ba
取向,从当地导航坐标系旋转量传感器坐标系gydF4y2Ba方向可以从本地导航坐标系旋转量体坐标系,作为四元数或返回一个数组。的大小和类型gydF4y2Ba取向gydF4y2Ba
取决于gydF4y2BaOrientationFormatgydF4y2Ba属性设置为gydF4y2Ba“四元数”gydF4y2Ba
或gydF4y2Ba旋转矩阵的gydF4y2Ba
:gydF4y2Ba
“四元数”gydF4y2Ba
——输出是一个gydF4y2Ba米gydF4y2Ba1矢量的四元数,相同的底层数据类型作为输入gydF4y2Ba
旋转矩阵的gydF4y2Ba
——输出3-by-3-by -gydF4y2Ba米gydF4y2Ba旋转矩阵的数组相同的数据类型作为输入gydF4y2Ba
输入样本的数量,gydF4y2BaNgydF4y2Ba,gydF4y2BaDecimationFactorgydF4y2Ba属性确定gydF4y2Ba米gydF4y2Ba。gydF4y2Ba
您可以使用gydF4y2Ba取向gydF4y2Ba
在一个gydF4y2BarotateframegydF4y2Ba
函数旋转量从本地导航系统传感器的身体坐标系统。gydF4y2Ba
数据类型:gydF4y2Ba四元数gydF4y2Ba
|gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
angularVelocitygydF4y2Ba
——角速度传感器体坐标系(rad / s)gydF4y2Ba与陀螺仪角速度偏差在身体传感器坐标系在rad / s,作为一个返回gydF4y2Ba米gydF4y2Ba3数组。输入样本的数量,gydF4y2BaNgydF4y2Ba,gydF4y2BaDecimationFactorgydF4y2Ba
属性确定gydF4y2Ba米gydF4y2Ba。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名gydF4y2BaobjgydF4y2Ba
使用这个语法:gydF4y2Ba
发行版(obj)gydF4y2Ba
ahrsfiltergydF4y2Ba
调优gydF4y2Ba |
调优gydF4y2BaahrsfiltergydF4y2Ba 参数估计误差减少gydF4y2Ba |
一步gydF4y2Ba |
运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba |
释放gydF4y2Ba |
释放资源,并允许修改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba |
重置gydF4y2Ba |
重置的内部状态gydF4y2Ba系统对象gydF4y2Ba |
ahrsfiltergydF4y2Ba
加载gydF4y2Barpy_9axisgydF4y2Ba
文件,其中包含记录加速度计、陀螺仪和磁力计传感器数据从一个设备振动在音高(约gydF4y2BaygydF4y2Ba设在),然后偏航(约gydF4y2BazgydF4y2Ba设在),然后卷(约gydF4y2BaxgydF4y2Ba设在)。该文件还包含记录的采样率。gydF4y2Ba
负载gydF4y2Ba“rpy_9axis”gydF4y2BasensorDatagydF4y2BaFsgydF4y2BaaccelerometerReadings = sensorData.Acceleration;gyroscopeReadings = sensorData.AngularVelocity;magnetometerReadings = sensorData.MagneticField;gydF4y2Ba
创建一个gydF4y2BaahrsfiltergydF4y2Ba
系统对象™gydF4y2BaSampleRategydF4y2Ba
将传感器数据的采样率。指定一个大批杀害因子2,以减少算法的计算成本。gydF4y2Ba
decim = 2;保险丝= ahrsfilter (gydF4y2Ba“SampleRate”gydF4y2BaFs,gydF4y2Ba“DecimationFactor”gydF4y2Ba,decim);gydF4y2Ba
通过加速度计的读数,陀螺仪数据,和磁强计读数gydF4y2BaahrsfiltergydF4y2Ba
对象,gydF4y2Ba保险丝gydF4y2Ba
传感器的输出估计身体取向。默认情况下,四元数的取向是输出作为一个向量。gydF4y2Ba
q =保险丝(accelerometerReadings gyroscopeReadings magnetometerReadings);gydF4y2Ba
方向被定义为角位移要求向一个孩子父母旋转坐标系坐标系统。情节欧拉角的方向度随着时间的推移。gydF4y2Ba
ahrsfiltergydF4y2Ba
正确估计取向的变化随着时间的推移,包括初始方向朝南。gydF4y2Ba
时间= (0:decim:大小(accelerometerReadings, 1) 1) / Fs;情节(时间,eulerd (q,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)标题(gydF4y2Ba取向估计的gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)gydF4y2Ba
ahrsFiltergydF4y2Ba
这个例子显示了如何的性能gydF4y2BaahrsfiltergydF4y2Ba
系统对象™是受到电磁干扰的影响。gydF4y2Ba
负载gydF4y2BaStationaryIMUReadingsgydF4y2Ba
,其中包含加速度计、磁强计和陀螺仪数据从一个静止的IMU。gydF4y2Ba
负载gydF4y2Ba“StationaryIMUReadings.mat”gydF4y2BaaccelReadingsgydF4y2BamagReadingsgydF4y2BagyroReadingsgydF4y2BaSampleRategydF4y2BanumSamples =大小(accelReadings, 1);gydF4y2Ba
的gydF4y2BaahrsfiltergydF4y2Ba
利用磁场强度稳定与假定的恒定磁场的取向。然而,有许多自然和人为对象输出磁场和可以混淆算法。考虑到瞬态磁场的存在,你可以设置gydF4y2BaMagneticDisturbanceNoisegydF4y2Ba
财产的gydF4y2BaahrsfiltergydF4y2Ba
对象。gydF4y2Ba
创建一个gydF4y2BaahrsfiltergydF4y2Ba
对象的大量毁灭因子设置为2,注意默认预期的磁场强度。gydF4y2Ba
decim = 2;保险丝= ahrsfilter (gydF4y2Ba“SampleRate”gydF4y2BaSampleRate,gydF4y2Ba“DecimationFactor”gydF4y2Ba,decim);gydF4y2Ba
保险丝的IMU数据使用姿态和航向参考系统(AHRS)过滤器,然后想象的方向传感器的身体。在开始时方向波动,稳定后大约60秒。gydF4y2Ba
取向=保险丝(accelReadings gyroReadings magReadings);orientationEulerAngles = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);时间= (0:decim: (numSamples-1))”/ SampleRate;图(1)图(时间,orientationEulerAngles (: 1),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles (:, 2),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles(:, 3))包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)标题(gydF4y2Ba“过滤IMU数据”gydF4y2Ba)gydF4y2Ba
模拟磁干扰通过添加一个瞬变,强磁场的磁场记录gydF4y2BamagReadingsgydF4y2Ba
。可视化的磁场干扰。gydF4y2Ba
jamStrength = [10 5 2];起止= (50 * SampleRate): (150 * SampleRate);果酱= 0(大小(magReadings));果酱(起止:)= jamStrength。*的(元素个数(起止),3);magReadings = magReadings +果酱;图(2)图(时间,magReadings (1: decim:最终,:))包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的磁场强度(\μT)”gydF4y2Ba)标题(gydF4y2Ba“模拟磁场干扰”gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba
再次运行仿真使用gydF4y2BamagReadingsgydF4y2Ba
磁干扰。阴谋的结果和注意方位估计性能下降。gydF4y2Ba
重置(保险丝)取向=保险丝(accelReadings, gyroReadings magReadings);orientationEulerAngles = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(3)图(时间,orientationEulerAngles (: 1),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles (:, 2),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles(:, 3))包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)标题(gydF4y2Ba“过滤IMU数据与磁干扰和默认属性”gydF4y2Ba)gydF4y2Ba
磁干扰明显误解了过滤器,和传感器主体取向是不正确的估计。你可以补偿干扰通过增加gydF4y2BaMagneticDisturbanceNoisegydF4y2Ba
财产。增加了gydF4y2BaMagneticDisturbanceNoisegydF4y2Ba
财产增加了磁干扰的假定噪声范围,和整个磁强计信号加权在底层的融合算法gydF4y2BaahrsfiltergydF4y2Ba
。gydF4y2Ba
设置gydF4y2BaMagneticDisturbanceNoisegydF4y2Ba
来gydF4y2Ba200年gydF4y2Ba
并再次运行仿真。gydF4y2Ba
方向估计的输出gydF4y2BaahrsfiltergydF4y2Ba
更准确和更少的受到电磁瞬态的影响。然而,由于磁力仪信号加权在底层融合算法,该算法可能需要更多的时间来restabilize。gydF4y2Ba
重置(保险丝)保险丝。米一个gnet我cD我年代turb一个nce没有我年代e = 20; orientation = FUSE(accelReadings,gyroReadings,magReadings); orientationEulerAngles = eulerd(orientation,“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(4)图(时间,orientationEulerAngles (: 1),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles (:, 2),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles(:, 3))包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)标题(gydF4y2Ba“过滤IMU数据与磁干扰和修改属性的gydF4y2Ba)gydF4y2Ba
下面的例子使用了gydF4y2BaahrsfiltergydF4y2Ba
系统对象™融合9-axis IMU数据从一个传感器身体动摇。情节四元数的对象之间的距离,最后休息位置可视化性能和过滤的速度收敛到正确的位置。然后调优参数gydF4y2BaahrsfiltergydF4y2Ba
这样过滤更快地收敛到真实休息位置。gydF4y2Ba
负载gydF4y2BaIMUReadingsShakengydF4y2Ba
到你当前的工作区。这些数据被记录从一个动摇的IMU然后躺在休息的位置。可视化加速度、磁场和角速度传感器的记录。gydF4y2Ba
负载gydF4y2Ba“IMUReadingsShaken”gydF4y2BaaccelReadingsgydF4y2BagyroReadingsgydF4y2BamagReadingsgydF4y2BaSampleRategydF4y2BanumSamples =大小(accelReadings, 1);时间= (0:(numSamples-1)) / SampleRate;图(1)次要情节(3 1 1)情节(时间,accelReadings)标题(gydF4y2Ba加速度计读的gydF4y2Ba)ylabel (gydF4y2Ba“加速度(m / s ^ 2)”gydF4y2Ba次要情节(3、1、2)情节(时间,magReadings)标题(gydF4y2Ba“磁强计阅读”gydF4y2Ba)ylabel (gydF4y2Ba“磁场(\狗)”gydF4y2Ba次要情节(3,1,3)情节(时间,gyroReadings)标题(gydF4y2Ba“陀螺仪阅读”gydF4y2Ba)ylabel (gydF4y2Ba“角速度(rad / s)”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)gydF4y2Ba
创建一个gydF4y2BaahrsfiltergydF4y2Ba
然后把IMU数据来确定方向。四元数的定位作为一个向量返回;四元数转换为欧拉角的度。可视化的方向传感器的身体随着时间的推移,通过绘制所需的欧拉角,在每个时间步,全球坐标系统传感器的身体旋转坐标系统。gydF4y2Ba
保险丝= ahrsfilter (gydF4y2Ba“SampleRate”gydF4y2Ba,SampleRate);取向=保险丝(accelReadings gyroReadings magReadings);orientationEulerAngles = eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba);图(2)图(时间,orientationEulerAngles (: 1),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles (:, 2),gydF4y2Ba…gydF4y2Ba时间,orientationEulerAngles(:, 3))包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba的方向随时间变化gydF4y2Ba)传说(gydF4y2Ba绕z轴旋转的gydF4y2Ba,gydF4y2Ba…gydF4y2Ba绕轴旋转的gydF4y2Ba,gydF4y2Ba…gydF4y2Ba绕轴旋转的gydF4y2Ba)gydF4y2Ba
IMU录音,震动停止后约6秒。确定方向,这样你可以休息多快的特点gydF4y2BaahrsfiltergydF4y2Ba
是收敛的。gydF4y2Ba
确定休息取向,计算平均磁场和加速度的最后4秒,然后使用gydF4y2BaecompassgydF4y2Ba
融合数据的函数。gydF4y2Ba
可视化四元数的距离位置随着时间的休息。gydF4y2Ba
restingOrientation = ecompass(意思是(accelReadings (6 * SampleRate:最终,:)),gydF4y2Ba…gydF4y2Ba意思是(magReadings (6 * SampleRate:最终,:)));图(3)图(时间,rad2deg (dist (restingOrientation、方向)))gydF4y2Ba在gydF4y2Ba包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba“四元数距离(度)gydF4y2Ba)gydF4y2Ba
修改默认的gydF4y2BaahrsfiltergydF4y2Ba
属性,这样滤波器更快地收敛于重力。增加了gydF4y2BaGyroscopeDriftNoisegydF4y2Ba
来gydF4y2Ba1)依照gydF4y2Ba
和减少gydF4y2BaLinearAccelerationNoisegydF4y2Ba
来gydF4y2Ba1的军医gydF4y2Ba
。这个指示gydF4y2BaahrsfiltergydF4y2Ba
算法来衡量陀螺仪数据少和加速度计数据多。因为gydF4y2Ba加速度计gydF4y2Ba
数据提供了稳定和一致的重力向量,由此产生的方向收敛更快。gydF4y2Ba
重置过滤器,融合数据,并画出结果。gydF4y2Ba
保险丝。LinearAccelerationNoise = 1的军医;保险丝。Gyro年代copeDr如果t没有我年代e = 1e-2; reset(fuse) orientation = fuse(accelReadings,gyroReadings,magReadings); figure(3) plot(time,rad2deg(dist(restingOrientation,orientation))) legend(“默认AHRS过滤”gydF4y2Ba,gydF4y2Ba“调AHRS过滤”gydF4y2Ba)gydF4y2Ba
注意:下面的算法只适用于一个NED参考系。gydF4y2Ba
的gydF4y2BaahrsfiltergydF4y2Ba
使用nine-axis卡尔曼滤波器结构中描述gydF4y2Ba[1]gydF4y2Ba。算法试图追踪错误定位、陀螺仪抵消,线性加速度和磁干扰输出最终的方向和角速度。而不是直接跟踪定位,间接的卡尔曼滤波模型误差的过程,gydF4y2BaxgydF4y2Ba,递归更新:gydF4y2Ba
在哪里gydF4y2BaxgydF4y2BakgydF4y2Ba是一个12-by-1向量组成的:gydF4y2Ba
θgydF4y2BakgydF4y2Ba——3×1定位误差向量,在度,时间gydF4y2BakgydF4y2Ba
bgydF4y2BakgydF4y2Ba——3×1角速率陀螺仪零偏差向量,在度/秒的时间gydF4y2BakgydF4y2Ba
一个gydF4y2BakgydF4y2Ba——3×1加速度误差矢量测量的传感器,在ggydF4y2BakgydF4y2Ba
dgydF4y2BakgydF4y2Ba——3×1磁干扰误差矢量测量的传感器,在µT时间gydF4y2BakgydF4y2Ba
在哪里gydF4y2BawgydF4y2BakgydF4y2Ba是一个12-by-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
在第一个迭代之前,gydF4y2BaaccelReadingsgydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
,gydF4y2BamagReadingsgydF4y2Ba
输入分成gydF4y2BaDecimationFactorgydF4y2Ba
3帧。对于每个块,该算法使用最新的加速度计和磁强计读数对应块的陀螺仪读数。gydF4y2Ba
走过每一阶段的算法解释详细的概述。gydF4y2Ba
该算法模型加速度和角变化的线性过程。gydF4y2Ba
当前帧的取向是预测,首先估算角变化与前一帧:gydF4y2Ba
在哪里gydF4y2BaNgydF4y2Ba是指定的大量毁灭的因素gydF4y2BaDecimationFactorgydF4y2Ba财产和gydF4y2BafsgydF4y2Ba是指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba
角变化转化为四元数使用gydF4y2BarotvecgydF4y2Ba
四元数gydF4y2Ba
施工的语法:gydF4y2Ba
前面的方向估计是通过旋转Δ更新gydF4y2Ba问gydF4y2Ba:gydF4y2Ba
在第一次迭代中,方位估计,gydF4y2Ba问gydF4y2Ba−gydF4y2Ba,初始化gydF4y2BaecompassgydF4y2Ba
。gydF4y2Ba
重力矢量被解释为四元数的第三列,gydF4y2Ba问gydF4y2Ba−gydF4y2Ba旋转矩阵形式:gydF4y2Ba
看到gydF4y2Ba[1]gydF4y2Ba为什么第三列的一个解释gydF4y2BarPriorgydF4y2Ba可以解释为重力向量。gydF4y2Ba
第二个重力向量估计是由减去上一次迭代的衰变线性加速度估计加速度计读数:gydF4y2Ba
地球的磁场矢量估计旋转磁场向量估计从上一次迭代gydF4y2Ba先天的gydF4y2Ba方向估计,在旋转矩阵形式:gydF4y2Ba
误差模型结合了两个差异:gydF4y2Ba
之间的区别的重力估计加速度计读数从陀螺仪和重力估计读数:gydF4y2Ba
之间的区别的磁矢量估计陀螺仪读数和磁强计的磁矢量估计:gydF4y2Ba
磁强计正确估计磁矢量的误差估计和检测磁干扰。gydF4y2Ba
磁干扰误差计算的矩阵乘法卡尔曼增益与磁矢量误差信号:gydF4y2Ba
卡尔曼增益,gydF4y2BaKgydF4y2Ba是在当前迭代卡尔曼增益计算。gydF4y2Ba
磁干扰是由验证发现磁干扰的力量小于或等于4倍的力量将磁场强度:gydF4y2Ba
ExpectedMagneticFieldStrengthgydF4y2Ba是一个属性的gydF4y2BaahrsfiltergydF4y2Ba
。gydF4y2Ba
卡尔曼滤波方程使用重力估计来自陀螺仪读数,gydF4y2BaggydF4y2Ba磁矢量估计,来自陀螺仪的读数,gydF4y2BamGyrogydF4y2Ba,错误的观察过程中,gydF4y2BazgydF4y2Ba、更新卡尔曼增益和中介协方差矩阵。应用卡尔曼增益误差信号,gydF4y2BazgydF4y2Ba输出一个gydF4y2Ba后验gydF4y2Ba误差估计,gydF4y2BaxgydF4y2Ba+gydF4y2Ba。gydF4y2Ba
观察模型地图1×3观察状态,gydF4y2BaggydF4y2Ba和gydF4y2BamGyrogydF4y2Ba,进入6-by-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是一个常数决定的吗gydF4y2BaSampleRategydF4y2Ba和gydF4y2BaDecimationFactorgydF4y2Ba属性:gydF4y2BaκgydF4y2Ba=gydF4y2BaDecimationFactorgydF4y2Ba
/gydF4y2BaSampleRategydF4y2Ba
。gydF4y2Ba
见章节7.3和7.4gydF4y2Ba[1]gydF4y2Ba观察模型的推导过程。gydF4y2Ba
创新协方差是一个6-by-6矩阵用来跟踪测量的可变性。创新计算协方差矩阵为:gydF4y2Ba
在哪里gydF4y2Ba
HgydF4y2Ba观察模型矩阵吗gydF4y2Ba
PgydF4y2Ba−gydF4y2Ba预测(gydF4y2Ba先天的gydF4y2Ba)观察模型的协方差估计的在前面的迭代计算gydF4y2Ba
RgydF4y2Ba观察模型噪声的协方差,计算为:gydF4y2Ba
在哪里gydF4y2Ba
和gydF4y2Ba
以下属性定义观测模型噪声方差:gydF4y2Ba
估计误差协方差是一个12-by-12矩阵用来跟踪的变化状态。gydF4y2Ba
更新错误估计协方差矩阵为:gydF4y2Ba
在哪里gydF4y2BaKgydF4y2Ba卡尔曼增益,gydF4y2BaHgydF4y2Ba是测量矩阵,然后呢gydF4y2BaPgydF4y2Ba−gydF4y2Ba估计误差协方差计算在前一个迭代。gydF4y2Ba
估计误差协方差是一个12-by-12矩阵用来跟踪的变化状态。的gydF4y2Ba先天的gydF4y2Ba错误估计协方差,gydF4y2BaPgydF4y2Ba−gydF4y2Ba将过程噪声协方差,gydF4y2Ba问gydF4y2Ba,决定在前面的迭代。gydF4y2Ba问gydF4y2Ba计算的函数吗gydF4y2Ba后验gydF4y2Ba错误估计协方差,gydF4y2BaPgydF4y2Ba+gydF4y2Ba。在计算gydF4y2Ba问gydF4y2Ba,假设的互相关项相比可以忽略不计自相关项,并设置为0:gydF4y2Ba
在哪里gydF4y2Ba
PgydF4y2Ba+gydF4y2Ba——更新(gydF4y2Ba后验gydF4y2Ba)错误估计协方差gydF4y2Ba
κgydF4y2Ba- - -gydF4y2BaDecimationFactorgydF4y2Ba/gydF4y2BaSampleRategydF4y2Ba
βgydF4y2Ba- - -gydF4y2BaGyroscopeDriftNoisegydF4y2Ba
ηgydF4y2Ba- - -gydF4y2BaGyroscopeNoisegydF4y2Ba
νgydF4y2Ba- - -gydF4y2BaLinearAccelerationDecayFactorgydF4y2Ba
ξgydF4y2Ba- - -gydF4y2BaLinearAccelerationNoisegydF4y2Ba
σgydF4y2Ba- - -gydF4y2BaMagneticDisturbanceDecayFactorgydF4y2Ba
γgydF4y2Ba- - -gydF4y2BaMagneticDisturbanceNoisegydF4y2Ba
参见10.1节的gydF4y2Ba[1]gydF4y2Ba的推导过程的误差矩阵。gydF4y2Ba
卡尔曼滤波增益矩阵是一个12-by-6矩阵用于重创新。在这个算法中,创新是解释为错误的过程,gydF4y2BazgydF4y2Ba。gydF4y2Ba
卡尔曼滤波增益矩阵构造成:gydF4y2Ba
在哪里gydF4y2Ba
PgydF4y2Ba−gydF4y2Ba——预测误差协方差gydF4y2Ba
HgydF4y2Ba——观察模型gydF4y2Ba
年代gydF4y2Ba——创新协方差gydF4y2Ba
的gydF4y2Ba一个后gydF4y2Ba误差估计是由结合卡尔曼滤波增益矩阵和重力矢量和磁矢量误差估计:gydF4y2Ba
如果检测到当前迭代中磁干扰,忽略磁矢量误差信号,gydF4y2Ba一个后gydF4y2Ba计算误差估计为:gydF4y2Ba
方向估计更新乘以先前估计的错误:gydF4y2Ba
更新线性加速度估计的线性加速度衰减估计之前的迭代和减去错误:gydF4y2Ba
在哪里gydF4y2Ba
νgydF4y2Ba- - -gydF4y2BaLinearAccelerationDecayFactorgydF4y2Ba
陀螺仪偏移估计更新由陀螺仪减去陀螺仪抵消误差抵消从上一次迭代:gydF4y2Ba
估计角速度的框架gydF4y2BagyroReadingsgydF4y2Ba
平均和陀螺仪抵消在前面的迭代中减去计算:gydF4y2Ba
在哪里gydF4y2BaNgydF4y2Ba是指定的大量毁灭的因素gydF4y2BaDecimationFactorgydF4y2Ba
财产。gydF4y2Ba
陀螺仪偏移估计是第一次迭代初始化为0。gydF4y2Ba
如果没有检测到磁场干扰当前迭代中,磁矢量估计,gydF4y2Ba米gydF4y2Ba更新使用gydF4y2Ba后验gydF4y2Ba磁干扰和错误gydF4y2Ba后验gydF4y2Ba取向。gydF4y2Ba
磁干扰误差转化为导航框架:gydF4y2Ba
磁干扰误差在导航框架中减去从之前的磁矢量估计,然后解释为倾向:gydF4y2Ba
倾向被转换为一个约束磁场矢量估计为下一次迭代:gydF4y2Ba
ExpectedMagneticFieldStrengthgydF4y2Ba是一个属性的gydF4y2BaahrsfiltergydF4y2Ba
。gydF4y2Ba
[1]开源传感器融合。gydF4y2Bahttps://github.com/memsindustrygroup/Open-Source-Sensor-Fusion/tree/master/docsgydF4y2Ba
[2]Roetenberg D。,H。J. Luinge, C.T.M. Baten, and P.H. Veltink. "Compensation of Magnetic Disturbances Improves Inertial and Magnetic Sensing of Human Body Segment Orientation."IEEE神经系统和康复工程gydF4y2Ba。卷。13。问题3,2005年,页395 - 405。gydF4y2Ba
使用笔记和限制:gydF4y2Ba
看到gydF4y2Ba系统在MATLAB代码生成对象gydF4y2Ba(MATLAB编码器)gydF4y2Ba。gydF4y2Ba
ecompassgydF4y2Ba
|gydF4y2BaimufiltergydF4y2Ba
|gydF4y2BaimuSensorgydF4y2Ba
|gydF4y2BagpsSensorgydF4y2Ba
你点击一个链接对应MATLAB命令:gydF4y2Ba
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetxgydF4y2Ba
你也可以从下面的列表中选择一个网站:gydF4y2Ba
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。gydF4y2Ba