主要内容gydF4y2Ba

ahrsfiltergydF4y2Ba

方向的加速度计、陀螺仪和磁强计读数gydF4y2Ba

描述gydF4y2Ba

的gydF4y2BaahrsfiltergydF4y2Ba系统对象™融合加速度计、磁强计和陀螺仪传感器数据来估计设备定位。gydF4y2Ba

估计设备定位:gydF4y2Ba

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

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

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

创建gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

保险丝gydF4y2Ba= ahrsfiltergydF4y2Ba返回一个间接的卡尔曼滤波器系统对象,gydF4y2Ba保险丝gydF4y2Ba传感器融合的加速度计、陀螺仪和磁强计数据来估计设备方向和角速度。过滤器使用12-element状态向量的估计误差跟踪定位、陀螺仪偏见,线性加速度和磁干扰。gydF4y2Ba

保险丝gydF4y2Ba= ahrsfilter (gydF4y2Ba“ReferenceFrame”gydF4y2Ba,gydF4y2Ba射频gydF4y2Ba)gydF4y2Ba返回一个ahrsfilter融合加速度计的系统对象,陀螺仪和磁强计数据来估计设备方向相对于参考系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。未指定的属性有默认值。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

属性,除非另有注明gydF4y2BanontunablegydF4y2Ba后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,gydF4y2Ba释放gydF4y2Ba函数打开它们。gydF4y2Ba

如果一个属性gydF4y2Ba可调gydF4y2Ba在任何时候,你可以改变它的值。gydF4y2Ba

改变属性值的更多信息,请参阅gydF4y2Ba系统设计在MATLAB使用系统对象gydF4y2Ba。gydF4y2Ba

输入采样率的赫兹传感器数据,指定为一个积极的标量。gydF4y2Ba

可调:gydF4y2Ba没有gydF4y2Ba

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

大量毁灭的因素,减少输入传感器数据融合算法的一部分,指定为一个正整数。gydF4y2Ba

的行数的输入—gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba——必须大量毁灭的多个因素。gydF4y2Ba

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

加速度计信号噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

在μT磁力仪信号噪声的方差gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

陀螺信号噪声的方差(rad / s)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

方差的陀螺仪抵消漂移(rad / s)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

线性加速度噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。线性加速度是建模为lowpass-filtered白噪声过程。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

加速度衰减系数线性漂移,指定为一个标量范围在[0,1)。如果线性加速度变化很快,集gydF4y2BaLinearAcclerationDecayFactorgydF4y2Ba到一个较低的值。如果线性加速度变化缓慢,集gydF4y2BaLinearAcclerationDecayFactorgydF4y2Ba到一个更高的价值。线性加速度漂移建模为lowpass-filtered白噪声过程。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

在μT磁干扰噪声的方差gydF4y2Ba2gydF4y2Ba,指定为一个真正的有限积极的标量。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

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

磁干扰衰减系数,指定为一个积极的标量范围[0,1]。磁干扰建模为一阶马尔可夫过程。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|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

预期估计μT的磁场强度,指定为一个真正的积极的标量。预期的磁场强度是一个估计的地球磁场强度的当前位置。gydF4y2Ba

可调:gydF4y2Ba是的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

(gydF4y2Ba取向gydF4y2Ba,gydF4y2BaangularVelocitygydF4y2Ba)=保险丝(gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba)gydF4y2Ba融合加速度计、陀螺仪和磁强计的数据来计算方向和角速度测量。该算法假设第一次调用前的设备是静止的。gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

加速度计读数传感器体坐标系中m / sgydF4y2Ba2gydF4y2Ba指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BaaccelReadingsgydF4y2Ba代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。加速度计读数被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba

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

陀螺仪读数传感器体坐标系在rad / s,指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BagyroReadingsgydF4y2Ba代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。陀螺仪数据被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双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

与陀螺仪角速度偏差在身体传感器坐标系在rad / s,作为一个返回gydF4y2Ba米gydF4y2Ba3数组。输入样本的数量,gydF4y2BaNgydF4y2Ba,gydF4y2BaDecimationFactorgydF4y2Ba属性确定gydF4y2Ba米gydF4y2Ba。gydF4y2Ba

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

对象的功能gydF4y2Ba

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

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

调优gydF4y2Ba 调优gydF4y2BaahrsfiltergydF4y2Ba参数估计误差减少gydF4y2Ba
一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源,并允许修改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

加载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

图包含一个坐标轴对象。坐标轴对象与标题取向估计包含3线类型的对象。这些对象代表z轴,轴,轴。gydF4y2Ba

这个例子显示了如何的性能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

算法gydF4y2Ba

全部展开gydF4y2Ba

注意:下面的算法只适用于一个NED参考系。gydF4y2Ba

的gydF4y2BaahrsfiltergydF4y2Ba使用nine-axis卡尔曼滤波器结构中描述gydF4y2Ba[1]gydF4y2Ba。算法试图追踪错误定位、陀螺仪抵消,线性加速度和磁干扰输出最终的方向和角速度。而不是直接跟踪定位,间接的卡尔曼滤波模型误差的过程,gydF4y2BaxgydF4y2Ba,递归更新:gydF4y2Ba

xgydF4y2Ba kgydF4y2Ba =gydF4y2Ba (gydF4y2Ba θgydF4y2Ba kgydF4y2Ba bgydF4y2Ba kgydF4y2Ba 一个gydF4y2Ba kgydF4y2Ba dgydF4y2Ba kgydF4y2Ba ]gydF4y2Ba =gydF4y2Ba FgydF4y2Ba kgydF4y2Ba (gydF4y2Ba θgydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba bgydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba 一个gydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba dgydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba +gydF4y2Ba wgydF4y2Ba kgydF4y2Ba

在哪里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

xgydF4y2Ba kgydF4y2Ba −gydF4y2Ba =gydF4y2Ba FgydF4y2Ba kgydF4y2Ba xgydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba =gydF4y2Ba FgydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba FgydF4y2Ba kgydF4y2Ba TgydF4y2Ba +gydF4y2Ba 问gydF4y2Ba kgydF4y2Ba ygydF4y2Ba kgydF4y2Ba =gydF4y2Ba zgydF4y2Ba kgydF4y2Ba −gydF4y2Ba HgydF4y2Ba kgydF4y2Ba xgydF4y2Ba kgydF4y2Ba −gydF4y2Ba 年代gydF4y2Ba kgydF4y2Ba =gydF4y2Ba RgydF4y2Ba kgydF4y2Ba +gydF4y2Ba HgydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba HgydF4y2Ba kgydF4y2Ba TgydF4y2Ba KgydF4y2Ba kgydF4y2Ba =gydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba HgydF4y2Ba kgydF4y2Ba TgydF4y2Ba (gydF4y2Ba 年代gydF4y2Ba kgydF4y2Ba )gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba xgydF4y2Ba kgydF4y2Ba +gydF4y2Ba =gydF4y2Ba xgydF4y2Ba kgydF4y2Ba −gydF4y2Ba +gydF4y2Ba KgydF4y2Ba kgydF4y2Ba ygydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba +gydF4y2Ba =gydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba −gydF4y2Ba KgydF4y2Ba kgydF4y2Ba HgydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba

该算法中使用的卡尔曼滤波方程:gydF4y2Ba

xgydF4y2Ba kgydF4y2Ba −gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba =gydF4y2Ba 问gydF4y2Ba kgydF4y2Ba ygydF4y2Ba kgydF4y2Ba =gydF4y2Ba zgydF4y2Ba kgydF4y2Ba 年代gydF4y2Ba kgydF4y2Ba =gydF4y2Ba RgydF4y2Ba kgydF4y2Ba +gydF4y2Ba HgydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba HgydF4y2Ba kgydF4y2Ba TgydF4y2Ba KgydF4y2Ba kgydF4y2Ba =gydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba HgydF4y2Ba kgydF4y2Ba TgydF4y2Ba (gydF4y2Ba 年代gydF4y2Ba kgydF4y2Ba )gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba xgydF4y2Ba kgydF4y2Ba +gydF4y2Ba =gydF4y2Ba KgydF4y2Ba kgydF4y2Ba ygydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba +gydF4y2Ba =gydF4y2Ba PgydF4y2Ba kgydF4y2Ba −gydF4y2Ba −gydF4y2Ba KgydF4y2Ba kgydF4y2Ba HgydF4y2Ba kgydF4y2Ba PgydF4y2Ba kgydF4y2Ba −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

在第一个迭代之前,gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba输入分成gydF4y2BaDecimationFactorgydF4y2Ba3帧。对于每个块,该算法使用最新的加速度计和磁强计读数对应块的陀螺仪读数。gydF4y2Ba

引用gydF4y2Ba

[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

|gydF4y2Ba|gydF4y2Ba|gydF4y2Ba

介绍了R2018bgydF4y2Ba