imufiltergydF4y2Ba
描述gydF4y2Ba
的gydF4y2BaimufiltergydF4y2Ba
系统对象™融合加速度计和陀螺仪传感器数据来估算设备定位。gydF4y2Ba
估计设备定位:gydF4y2Ba
创建gydF4y2Ba
imufiltergydF4y2Ba
对象并设置其属性。gydF4y2Ba调用对象的参数,就好像它是一个函数。gydF4y2Ba
了解更多关于系统对象是如何工作的,看到的gydF4y2Ba系统对象是什么?gydF4y2Ba
创建gydF4y2Ba
语法gydF4y2Ba
描述gydF4y2Ba
返回一个间接的卡尔曼滤波器系统对象,gydF4y2Ba保险丝gydF4y2Ba
= imufiltergydF4y2Ba保险丝gydF4y2Ba
,对加速度计和陀螺仪数据融合估计设备定位。过滤器使用nine-element状态向量跟踪定位误差估计,陀螺仪偏差估计和线性加速度的估计。gydF4y2Ba
返回一个gydF4y2Ba保险丝gydF4y2Ba
= imufilter (gydF4y2Ba“ReferenceFrame”gydF4y2Ba
,gydF4y2Ba射频gydF4y2Ba
)gydF4y2BaimufiltergydF4y2Ba
过滤系统对象融合加速度计和陀螺仪数据来估计设备方向相对于参考系gydF4y2Ba射频gydF4y2Ba
。指定gydF4y2Ba射频gydF4y2Ba
作为gydF4y2BaNED的gydF4y2Ba
(North-East-Down)或gydF4y2Ba“ENU表示”gydF4y2Ba
(East-North-Up)。默认值是gydF4y2BaNED的gydF4y2Ba
。gydF4y2Ba
每个属性集gydF4y2Ba保险丝gydF4y2Ba
= imufilter (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba
)gydF4y2Ba的名字gydF4y2Ba
到指定的gydF4y2Ba价值gydF4y2Ba
。未指定的属性有默认值。gydF4y2Ba
例子:gydF4y2Ba保险丝= imufilter (“GyroscopeNoise”“SampleRate”, 200年,1 e-6)gydF4y2Ba
创建一个系统对象,gydF4y2Ba保险丝gydF4y2Ba
,200 Hz采样率和陀螺仪噪声设置为1 e-6弧度/秒平方。gydF4y2Ba
属性gydF4y2Ba
属性,除非另有注明gydF4y2BanontunablegydF4y2Ba后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,gydF4y2Ba释放gydF4y2Ba
函数打开它们。gydF4y2Ba
如果一个属性gydF4y2Ba可调gydF4y2Ba在任何时候,你可以改变它的值。gydF4y2Ba
改变属性值的更多信息,请参阅gydF4y2Ba系统设计在MATLAB使用系统对象gydF4y2Ba。gydF4y2Ba
SampleRategydF4y2Ba
- - - - - -gydF4y2Ba输入传感器数据的采样率(赫兹)gydF4y2Ba
One hundred.gydF4y2Ba
(默认)|gydF4y2Ba积极的有限的标量gydF4y2Ba
输入传感器数据的采样率在赫兹,指定为一个积极的有限的标量。gydF4y2Ba
可调:gydF4y2Ba没有gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
DecimationFactorgydF4y2Ba
- - - - - -gydF4y2Ba大量毁灭的因素gydF4y2Ba
1gydF4y2Ba
(默认)|gydF4y2Ba正整数标量gydF4y2Ba
大量毁灭的因素,减少输入传感器数据的采样率,指定为一个正整数标量。gydF4y2Ba
的行数的输入,gydF4y2BaaccelReadingsgydF4y2Ba
和gydF4y2BagyroReadingsgydF4y2Ba
,必须大量毁灭的多个因素。gydF4y2Ba
可调:gydF4y2Ba没有gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
AccelerometerNoisegydF4y2Ba
- - - - - -gydF4y2Ba加速度计信号噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba
0.00019247gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba
加速度计信号噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
GyroscopeNoisegydF4y2Ba
- - - - - -gydF4y2Ba陀螺信号噪声的方差((rad / s)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba
9.1385 e-5gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba
陀螺信号噪声的方差(rad / s)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
GyroscopeDriftNoisegydF4y2Ba
- - - - - -gydF4y2Ba方差的陀螺仪抵消漂移(rad /秒)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba
3.0462 e-13gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba
方差的陀螺仪抵消漂移(rad / s)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
LinearAccelerationNoisegydF4y2Ba
- - - - - -gydF4y2Ba线性加速度噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba)gydF4y2Ba
0.0096236gydF4y2Ba
(默认)|gydF4y2Ba积极的真正的标量gydF4y2Ba
线性加速度噪声的方差(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba2gydF4y2Ba,指定为一个积极的真正的标量。线性加速度是建模为一个低通滤波器过滤白噪声过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
LinearAcclerationDecayFactorgydF4y2Ba
- - - - - -gydF4y2Ba衰减系数线性加速度漂移gydF4y2Ba
0.5gydF4y2Ba
(默认)|gydF4y2Ba标量在[0,1]gydF4y2Ba
加速度衰减系数线性漂移,指定为一个标量在[0,1]。如果线性加速度变化很快,集gydF4y2BaLinearAccelerationDecayFactorgydF4y2Ba
到一个较低的值。如果线性加速度变化缓慢,集gydF4y2BaLinearAccelerationDecayFactorgydF4y2Ba
到一个更高的价值。线性加速度漂移建模为lowpass-filtered白噪声过程。gydF4y2Ba
可调:gydF4y2Ba是的gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
InitialProcessNoisegydF4y2Ba
- - - - - -gydF4y2Ba对过程噪声协方差矩阵gydF4y2Ba
9-by-9矩阵gydF4y2Ba
过程噪声协方差矩阵,指定为一个9-by-9矩阵。默认的是: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列7到9 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.009623610000000gydF4y2Ba
初始过程的误差协方差矩阵占过程模型。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
|gydF4y2Bauint8gydF4y2Ba
|gydF4y2Bauint16gydF4y2Ba
|gydF4y2Bauint32gydF4y2Ba
|gydF4y2Bauint64gydF4y2Ba
|gydF4y2Baint8gydF4y2Ba
|gydF4y2Baint16gydF4y2Ba
|gydF4y2Baint32gydF4y2Ba
|gydF4y2Baint64gydF4y2Ba
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
融合加速度计和陀螺仪数据计算方向和角速度测量。该算法假设第一次调用前的设备是静止的。gydF4y2Ba取向gydF4y2Ba
,gydF4y2BaangularVelocitygydF4y2Ba
)=保险丝(gydF4y2BaaccelReadingsgydF4y2Ba
,gydF4y2BagyroReadingsgydF4y2Ba
)gydF4y2Ba
输入参数gydF4y2Ba
accelReadingsgydF4y2Ba
- - - - - -gydF4y2Ba加速度计读数在身体传感器坐标系(m / sgydF4y2Ba2gydF4y2Ba)gydF4y2Ba
NgydF4y2Ba3矩阵gydF4y2Ba
加速度计读数传感器体坐标系中m / sgydF4y2Ba2gydF4y2Ba指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BaaccelReadingsgydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。加速度计读数被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
gyroReadingsgydF4y2Ba
- - - - - -gydF4y2Ba陀螺仪读数在人体传感器坐标系(rad / s)gydF4y2Ba
NgydF4y2Ba3矩阵gydF4y2Ba
陀螺仪读数传感器体坐标系在rad / s,指定为一个gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba样品的数量,三列的gydF4y2BagyroReadingsgydF4y2Ba
代表(gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。陀螺仪数据被认为对应于指定的采样率gydF4y2BaSampleRategydF4y2Ba财产。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
输出参数gydF4y2Ba
取向gydF4y2Ba
——方向旋转量从全球坐标系统到传感器的身体坐标系统gydF4y2Ba
米gydF4y2Ba1矢量的四元数(默认)| 3-by-3-by -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
米gydF4y2Ba3组(默认)gydF4y2Ba
与陀螺仪角速度偏差在身体传感器坐标系在rad / s,作为一个返回gydF4y2Ba米gydF4y2Ba3数组。输入样本的数量,gydF4y2BaNgydF4y2Ba,gydF4y2BaDecimationFactorgydF4y2Ba属性确定gydF4y2Ba米gydF4y2Ba。gydF4y2Ba
数据类型:gydF4y2Ba单gydF4y2Ba
|gydF4y2Ba双gydF4y2Ba
对象的功能gydF4y2Ba
使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名gydF4y2BaobjgydF4y2Ba
使用这个语法:gydF4y2Ba
发行版(obj)gydF4y2Ba
特定于gydF4y2BaimufiltergydF4y2Ba
调优gydF4y2Ba |
调优gydF4y2BaimufiltergydF4y2Ba 参数估计误差减少gydF4y2Ba |
常见的系统对象gydF4y2Ba
一步gydF4y2Ba |
运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba |
释放gydF4y2Ba |
释放资源,并允许修改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba |
重置gydF4y2Ba |
重置的内部状态gydF4y2Ba系统对象gydF4y2Ba |
例子gydF4y2Ba
从IMU数据估计取向gydF4y2Ba
加载gydF4y2Barpy_9axisgydF4y2Ba
文件,其中包含记录加速度计、陀螺仪和磁力计传感器数据从一个设备振动在音高(约gydF4y2BaygydF4y2Ba设在),然后偏航(约gydF4y2BazgydF4y2Ba设在),然后卷(约gydF4y2BaxgydF4y2Ba设在)。该文件还包含记录的采样率。gydF4y2Ba
负载gydF4y2Ba“rpy_9axis.mat”gydF4y2BasensorDatagydF4y2BaFsgydF4y2BaaccelerometerReadings = sensorData.Acceleration;gyroscopeReadings = sensorData.AngularVelocity;gydF4y2Ba
创建一个gydF4y2BaimufiltergydF4y2Ba
系统对象™与采样率将传感器数据的采样率。指定一个大批杀害因子2,以减少算法的计算成本。gydF4y2Ba
decim = 2;保险丝= imufilter (gydF4y2Ba“SampleRate”gydF4y2BaFs,gydF4y2Ba“DecimationFactor”gydF4y2Ba,decim);gydF4y2Ba
通过加速度计读数和陀螺仪数据gydF4y2BaimufiltergydF4y2Ba
对象,gydF4y2Ba保险丝gydF4y2Ba
传感器的输出估计身体取向。默认情况下,四元数的取向是输出作为一个向量。gydF4y2Ba
q =保险丝(accelerometerReadings gyroscopeReadings);gydF4y2Ba
方向被定义为所需的角位移父母坐标系旋转到一个孩子坐标系统。情节欧拉角的方向度随着时间的推移。gydF4y2Ba
imufiltergydF4y2Ba
融合正确估计取向的变化从一个假定的扇面的初始取向。然而,设备的gydF4y2BaxgydF4y2Ba设在指向南时记录。正确估计方向相对于真正的初始取向或相对于内,使用gydF4y2BaahrsfiltergydF4y2Ba
。gydF4y2Ba
时间= (0:decim:大小(accelerometerReadings, 1) 1) / Fs;情节(时间,eulerd (q,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)标题(gydF4y2Ba取向估计的gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)gydF4y2Ba
模型使用陀螺仪和加速度计读数倾斜gydF4y2Ba
模型包含一个加速度计和陀螺仪的倾斜IMU使用gydF4y2BaimuSensorgydF4y2Ba
系统对象™。用理想和现实的模型比较结果取向跟踪使用gydF4y2BaimufiltergydF4y2Ba
系统对象。gydF4y2Ba
加载一个结构描述真实运动和采样率。旋转运动结构描述顺序):gydF4y2Ba
偏航:120度/ 2秒gydF4y2Ba
情节:60度超过一秒gydF4y2Ba
卷:30度超过1/2秒gydF4y2Ba
卷:-30度超过1/2秒gydF4y2Ba
情节:-60度超过一秒gydF4y2Ba
偏航:-120度/ 2秒gydF4y2Ba
在最后阶段,运动结构结合了1日,2日,3日旋转成一个单轴旋转。加速度、角速度和取向在当地NED坐标系中定义。gydF4y2Ba
负载gydF4y2Bay120p60r30.matgydF4y2Ba运动gydF4y2BafsgydF4y2BaaccNED = motion.Acceleration;angVelNED = motion.AngularVelocity;取向= motion.Orientation;numSamples =大小(motion.Orientation, 1);t = (0: (numSamples-1)。/ fs;gydF4y2Ba
创建一个理想的IMU传感器对象和一个默认的IMU过滤器对象。gydF4y2Ba
IMU = imuSensor (gydF4y2Ba“accel-gyro”gydF4y2Ba,gydF4y2Ba“SampleRate”gydF4y2Bafs);aFilter = imufilter (gydF4y2Ba“SampleRate”gydF4y2Bafs);gydF4y2Ba
在一个循环:gydF4y2Ba
模拟IMU乌兹别克斯坦伊斯兰运动传感器通过喂养真实动态输出对象。gydF4y2Ba
过滤IMU输出使用默认IMU过滤器对象。gydF4y2Ba
取向= 0 (numSamples 1gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1: numSamples [accelBody gyroBody] = IMU (accNED(我,:),angVelNED(我:),取向(我,:));方向(i) = aFilter (accelBody gyroBody);gydF4y2Ba结束gydF4y2Ba发行版(aFilter)gydF4y2Ba
随着时间的推移图方向。gydF4y2Ba
图(1)情节(t, eulerd(取向,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba”取向的评估——理想IMU数据,默认IMU过滤器的gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba
修改你的属性gydF4y2BaimuSensorgydF4y2Ba
模拟真实的传感器。再次运行循环和情节的方向估计。gydF4y2Ba
IMU。一个ccelerometer = accelparams(…gydF4y2Ba“MeasurementRange”gydF4y2Ba,19.62,gydF4y2Ba…gydF4y2Ba“决议”gydF4y2Ba,0.00059875,gydF4y2Ba…gydF4y2Ba“ConstantBias”gydF4y2Ba,0.4905,gydF4y2Ba…gydF4y2Ba“AxesMisalignment”gydF4y2Ba2,gydF4y2Ba…gydF4y2Ba“NoiseDensity”gydF4y2Ba,0.003924,gydF4y2Ba…gydF4y2Ba“BiasInstability”gydF4y2Ba0,gydF4y2Ba…gydF4y2Ba“TemperatureBias”gydF4y2Ba(0.34335 0.34335 0.5886),gydF4y2Ba…gydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba,0.02);IMU。陀螺仪= gyroparams (gydF4y2Ba…gydF4y2Ba“MeasurementRange”gydF4y2Ba,4.3633,gydF4y2Ba…gydF4y2Ba“决议”gydF4y2Ba,0.00013323,gydF4y2Ba…gydF4y2Ba“AxesMisalignment”gydF4y2Ba2,gydF4y2Ba…gydF4y2Ba“NoiseDensity”gydF4y2Ba8.7266 e-05gydF4y2Ba…gydF4y2Ba“TemperatureBias”gydF4y2Ba,0.34907,gydF4y2Ba…gydF4y2Ba“TemperatureScaleFactor”gydF4y2Ba,0.02,gydF4y2Ba…gydF4y2Ba“AccelerationBias”gydF4y2Ba,0.00017809,gydF4y2Ba…gydF4y2Ba“ConstantBias”gydF4y2Ba,0.3491,0.5,0);orientationDefault = 0 (numSamples 1gydF4y2Ba“四元数”gydF4y2Ba);gydF4y2Ba为gydF4y2Bai = 1: numSamples [accelBody gyroBody] = IMU (accNED(我,:),angVelNED(我:),取向(我,:));orientationDefault (i) = aFilter (accelBody gyroBody);gydF4y2Ba结束gydF4y2Ba发行版(aFilter)图(2)情节(t, eulerd (orientationDefault,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba的方向估计——现实的IMU数据,默认IMU过滤器的gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba
的能力gydF4y2BaimufiltergydF4y2Ba
跟踪真实数据建模一个现实的IMU时显著降低。为了提高性能,修改你的属性gydF4y2BaimufiltergydF4y2Ba
对象。这些值是根据经验决定的。再次运行循环和情节的方向估计。gydF4y2Ba
aFilter。GyroscopeNoise = 7.6154 e;aFilter。一个ccelerometerNoise = 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(我,:),angVelNED(我:),取向(我,:));orientationNondefault (i) = aFilter (accelBody gyroBody);gydF4y2Ba结束gydF4y2Ba发行版(aFilter)图(3)图(t, eulerd (orientationNondefault,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba的旋转(度)gydF4y2Ba)标题(gydF4y2Ba的方向估计——现实的IMU数据,默认的IMU过滤器的gydF4y2Ba)传说(gydF4y2Baz轴的gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba,gydF4y2Ba“轴”gydF4y2Ba)gydF4y2Ba
量化的改进性能修改gydF4y2BaimufiltergydF4y2Ba
,情节真实运动的四元数距离和方向返回的gydF4y2BaimufiltergydF4y2Ba
违约和默认的属性。gydF4y2Ba
qDistDefault = rad2deg (dist(取向,orientationDefault));qDistNondefault = rad2deg (dist(取向,orientationNondefault));图(4)图(t) [qDistDefault qDistNondefault])标题(gydF4y2Ba“四元数距离真正的取向”gydF4y2Ba)传说(gydF4y2Ba“现实的IMU数据,默认IMU过滤”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“现实的IMU数据,默认的IMU过滤”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)ylabel (gydF4y2Ba“四元数距离(度)gydF4y2Ba)gydF4y2Ba
除去角速度偏差测量gydF4y2Ba
这个例子显示了如何删除从一个IMU使用陀螺仪的偏见gydF4y2BaimufiltergydF4y2Ba
。gydF4y2Ba
使用gydF4y2BakinematicTrajectorygydF4y2Ba
创建一个轨迹与两个部分。第一部分有一个恒定的角速度有关gydF4y2BaygydF4y2Ba- - -gydF4y2BazgydF4y2Ba相互重合。第二部分有一个不同的三个轴的角速度。gydF4y2Ba
时间= 60 * 8;fs = 20;numSamples = * fs持续时间;rng (gydF4y2Ba“默认”gydF4y2Ba)gydF4y2Ba%种子繁殖RNG嘈杂的传感器测量。gydF4y2BainitialAngVel = (0、0.5、0.25);finalAngVel = (-0.2, 0.6, 0.5);constantAngVel = repmat (initialAngVel,地板(numSamples / 2), 1);varyingAngVel = [linspace (initialAngVel (1) finalAngVel(1),装天花板(numSamples / 2)。”gydF4y2Ba…gydF4y2BafinalAngVel linspace (initialAngVel(2),(2),装天花板(numSamples / 2)。”gydF4y2Ba…gydF4y2Balinspace (initialAngVel (3) finalAngVel(3),装天花板(numSamples / 2)。');angVelBody = [constantAngVel;varyingAngVel];accBody = 0 (numSamples, 3);traj = kinematicTrajectory (gydF4y2Ba“SampleRate”gydF4y2Bafs);[qn, ~ ~, accNED angVelNED] = traj (accBody angVelBody);gydF4y2Ba
创建一个gydF4y2BaimuSensorgydF4y2Ba
系统对象™,gydF4y2BaIMUgydF4y2Ba
,非理想的陀螺仪。调用gydF4y2BaIMUgydF4y2Ba
真实与加速度、角速度和取向。gydF4y2Ba
IMU = imuSensor (gydF4y2Ba“accel-gyro”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“陀螺”gydF4y2Bagyroparams (gydF4y2Ba“随机散步”gydF4y2Ba,0.003,gydF4y2Ba“ConstantBias”gydF4y2Ba0.3),gydF4y2Ba…gydF4y2Ba“SampleRate”gydF4y2Bafs);[accelReadings, gyroReadingsBody] = IMU (accNED、angVelNED qn);gydF4y2Ba
创建一个gydF4y2BaimufiltergydF4y2Ba
系统对象,gydF4y2Ba保险丝gydF4y2Ba
。调用gydF4y2Ba保险丝gydF4y2Ba
加速度计读数和陀螺仪数据建模。gydF4y2Ba
保险丝= imufilter (gydF4y2Ba“SampleRate”gydF4y2Bafs,gydF4y2Ba“GyroscopeDriftNoise”gydF4y2Ba1 e-6);[~,angVelBodyRecovered] =保险丝(accelReadings gyroReadingsBody);gydF4y2Ba
情节真实的角速度,陀螺仪数据,恢复为每个轴角速度。gydF4y2Ba
返回的角速度gydF4y2BaimufiltergydF4y2Ba
补偿陀螺偏见的影响随着时间的推移和收敛于真实的角速度。gydF4y2Ba
时间= (0:numSamples-1) / fs;图(1)图(时间,angVelBody (: 1),gydF4y2Ba…gydF4y2Ba时间,gyroReadingsBody (: 1),gydF4y2Ba…gydF4y2Ba时间,angVelBodyRecovered(: 1)标题(gydF4y2Ba“轴”gydF4y2Ba)传说(gydF4y2Ba“真正的角速度”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“陀螺仪数据”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“恢复角速度”gydF4y2Ba)ylabel (gydF4y2Ba“角速度(rad / s)”gydF4y2Ba)gydF4y2Ba
图(2)图(时间,angVelBody (:, 2),gydF4y2Ba…gydF4y2Ba时间,gyroReadingsBody (:, 2),gydF4y2Ba…gydF4y2Ba时间,angVelBodyRecovered(: 2)标题(gydF4y2Ba“轴”gydF4y2Ba)ylabel (gydF4y2Ba“角速度(rad / s)”gydF4y2Ba)gydF4y2Ba
图(3)图(时间,angVelBody (:, 3),gydF4y2Ba…gydF4y2Ba时间,gyroReadingsBody (:, 3),gydF4y2Ba…gydF4y2Ba时间,angVelBodyRecovered(: 3)标题(gydF4y2Baz轴的gydF4y2Ba)ylabel (gydF4y2Ba“角速度(rad / s)”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba)gydF4y2Ba
算法gydF4y2Ba
注意:下面的算法只适用于一个NED参考系。gydF4y2Ba
的gydF4y2BaimufiltergydF4y2Ba
基础上使用卡尔曼滤波器结构中描述gydF4y2Ba[1]gydF4y2Ba。算法试图追踪错误定位、陀螺仪抵消,线性加速度输出最终的方向和角速度。而不是直接跟踪定位,间接的卡尔曼滤波模型误差的过程,gydF4y2BaxgydF4y2Ba,递归更新:gydF4y2Ba
在哪里gydF4y2BaxgydF4y2BakgydF4y2Ba是一个9-by-1向量组成的:gydF4y2Ba
θgydF4y2BakgydF4y2Ba——3×1定位误差向量,在度,时间gydF4y2BakgydF4y2Ba
bgydF4y2BakgydF4y2Ba——3×1角速率陀螺仪零偏差向量,在度/秒的时间gydF4y2BakgydF4y2Ba
一个gydF4y2BakgydF4y2Ba——3×1加速度误差矢量测量的传感器,在ggydF4y2BakgydF4y2Ba
wgydF4y2BakgydF4y2Ba——9-by-1添加剂噪声向量gydF4y2Ba
FgydF4y2BakgydF4y2Ba——状态转换模型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
输入分成1×3帧gydF4y2BaDecimationFactorgydF4y2Ba
分别3帧。该算法使用最新的陀螺加速度计读数对应块读数。gydF4y2Ba
详细的概述gydF4y2Ba
通过算法步骤的解释每个阶段的详细概述。gydF4y2Ba
模型gydF4y2Ba
该算法模型加速度和角变化的线性过程。gydF4y2Ba
当前帧的取向是预测,首先估算角变化与前一帧:gydF4y2Ba
在哪里gydF4y2BaNgydF4y2Ba是指定的大量毁灭的因素gydF4y2BaDecimationFactorgydF4y2Ba
财产,gydF4y2BafsgydF4y2Ba是指定的采样率gydF4y2BaSampleRategydF4y2Ba
财产。gydF4y2Ba
角变化转化为四元数使用gydF4y2BarotvecgydF4y2Ba
四元数gydF4y2Ba
施工的语法:gydF4y2Ba
前面的方向估计是通过旋转Δ更新gydF4y2Ba问gydF4y2Ba:gydF4y2Ba
在第一次迭代中,方位估计,gydF4y2Ba问gydF4y2Ba−gydF4y2Ba,初始化gydF4y2BaecompassgydF4y2Ba
假设gydF4y2BaxgydF4y2Ba设在北。gydF4y2Ba
重力矢量被解释为四元数的第三列,gydF4y2Ba问gydF4y2Ba−gydF4y2Ba旋转矩阵形式:gydF4y2Ba
看到gydF4y2BaecompassgydF4y2Ba
为什么第三列的一个解释gydF4y2BarPriorgydF4y2Ba可以解释为重力向量。gydF4y2Ba
第二个重力向量估计是由减去上一次迭代的衰变线性加速度估计加速度计读数:gydF4y2Ba
误差模型gydF4y2Ba
重力误差模型之间的差异估计加速度计的读数从陀螺仪和重力估计读数:gydF4y2Ba 。gydF4y2Ba
卡尔曼滤波方程gydF4y2Ba
卡尔曼滤波方程使用重力估计来自陀螺仪读数,gydF4y2BaggydF4y2Ba,错误的观察过程中,gydF4y2BazgydF4y2Ba、更新卡尔曼增益和中介协方差矩阵。应用卡尔曼增益误差信号,gydF4y2BazgydF4y2Ba输出一个gydF4y2Ba后验gydF4y2Ba误差估计,gydF4y2BaxgydF4y2Ba+gydF4y2Ba。gydF4y2Ba
观察模型地图1×3观察状态,gydF4y2BaggydF4y2Ba,进入3-by-9真实状态,gydF4y2BaHgydF4y2Ba。gydF4y2Ba
观察模型为:gydF4y2Ba
在哪里gydF4y2BaggydF4y2BaxgydF4y2Ba,gydF4y2BaggydF4y2BaygydF4y2Ba,gydF4y2BaggydF4y2BazgydF4y2Ba是gydF4y2BaxgydF4y2Ba- - - - - -,gydF4y2BaygydF4y2Ba- - - - - -,gydF4y2BazgydF4y2Ba元素的重力向量估计取向,分别。gydF4y2BaκgydF4y2Ba是一个常数决定的吗gydF4y2BaSampleRategydF4y2Ba和gydF4y2BaDecimationFactorgydF4y2Ba属性:gydF4y2BaκgydF4y2Ba=gydF4y2BaDecimationFactorgydF4y2Ba
/gydF4y2BaSampleRategydF4y2Ba
。gydF4y2Ba
见章节7.3和7.4gydF4y2Ba[1]gydF4y2Ba观察模型的推导过程。gydF4y2Ba
创新协方差是一个3×3矩阵用来跟踪测量的可变性。创新计算协方差矩阵为:gydF4y2Ba
在哪里gydF4y2Ba
HgydF4y2Ba观察模型矩阵吗gydF4y2Ba
PgydF4y2Ba−gydF4y2Ba预测(gydF4y2Ba先天的gydF4y2Ba)观察模型的协方差估计的在前面的迭代计算gydF4y2Ba
RgydF4y2Ba观察模型噪声的协方差,计算为:gydF4y2Ba
以下属性定义观测模型噪声方差:gydF4y2Ba
κgydF4y2Ba——(gydF4y2BaDecimationFactorgydF4y2Ba/gydF4y2BaSampleRategydF4y2Ba)gydF4y2Ba2gydF4y2Ba
βgydF4y2Ba- - -gydF4y2BaGyroscopeDriftNoisegydF4y2Ba
ηgydF4y2Ba- - -gydF4y2BaGyroscopeNoisegydF4y2Ba
λgydF4y2Ba- - -gydF4y2BaAccelerometerNoisegydF4y2Ba
ξgydF4y2Ba- - -gydF4y2BaLinearAccelerationNoisegydF4y2Ba
估计误差协方差是一个9-by-9矩阵用来跟踪的变化状态。gydF4y2Ba
更新错误估计协方差矩阵为:gydF4y2Ba
在哪里gydF4y2BaKgydF4y2Ba卡尔曼增益,gydF4y2BaHgydF4y2Ba是测量矩阵,然后呢gydF4y2BaPgydF4y2Ba−gydF4y2Ba估计误差协方差计算在前一个迭代。gydF4y2Ba
估计误差协方差是一个9-by-9矩阵用来跟踪的变化状态。的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- - -gydF4y2BaLinearAcclerationDecayFactorgydF4y2Ba
ξgydF4y2Ba- - -gydF4y2BaLinearAccelerationNoisegydF4y2Ba
参见10.1节的gydF4y2Ba[1]gydF4y2Ba的推导过程的误差矩阵。gydF4y2Ba
卡尔曼滤波增益矩阵是一个9-by-3矩阵用于重创新。在这个算法中,创新是解释为错误的过程,gydF4y2BazgydF4y2Ba。gydF4y2Ba
卡尔曼滤波增益矩阵构造成:gydF4y2Ba
在哪里gydF4y2Ba
PgydF4y2Ba- - - - - -gydF4y2Ba——预测误差协方差gydF4y2Ba
HgydF4y2Ba——观察模型gydF4y2Ba
年代gydF4y2Ba——创新协方差gydF4y2Ba
的gydF4y2Ba一个后gydF4y2Ba误差估计是由结合卡尔曼滤波增益矩阵和重力向量估计的误差:gydF4y2Ba
正确的gydF4y2Ba
方向估计更新乘以先前估计的错误:gydF4y2Ba
更新线性加速度估计的线性加速度衰减估计之前的迭代和减去错误:gydF4y2Ba
在哪里gydF4y2Ba
νgydF4y2Ba- - -gydF4y2BaLinearAcclerationDecayFactorgydF4y2Ba
陀螺仪偏移估计更新由陀螺仪减去陀螺仪抵消误差抵消从上一次迭代:gydF4y2Ba
计算角速度gydF4y2Ba
估计角速度的框架gydF4y2BagyroReadingsgydF4y2Ba
平均和陀螺仪抵消在前面的迭代中减去计算:gydF4y2Ba
在哪里gydF4y2BaNgydF4y2Ba是指定的大量毁灭的因素gydF4y2BaDecimationFactorgydF4y2Ba
财产。gydF4y2Ba
陀螺仪偏移估计是第一次迭代初始化为0。gydF4y2Ba
引用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
C / c++代码生成gydF4y2Ba
生成C和c++代码使用MATLAB®编码器™。gydF4y2Ba
使用笔记和限制:gydF4y2Ba
看到gydF4y2Ba系统在MATLAB代码生成对象gydF4y2Ba(MATLAB编码器)gydF4y2Ba。gydF4y2Ba
版本历史gydF4y2Ba
介绍了R2018bgydF4y2Ba
另请参阅gydF4y2Ba
ecompassgydF4y2Ba
|gydF4y2BaahrsfiltergydF4y2Ba
|gydF4y2BaimuSensorgydF4y2Ba
|gydF4y2BagpsSensorgydF4y2Ba
|gydF4y2Ba四元数gydF4y2Ba
主题gydF4y2Ba
MATLAB命令gydF4y2Ba
你点击一个链接对应MATLAB命令:gydF4y2Ba
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝appgydF4y2Ba
选择一个网站gydF4y2Ba
选择一个网站翻译内容,看到当地事件和提供。根据你的位置,我们建议您选择:gydF4y2Ba。gydF4y2Ba
你也可以从下面的列表中选择一个网站:gydF4y2Ba
表现最好的网站怎么走吗gydF4y2Ba
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。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
- 卢森堡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
- 한국gydF4y2Ba(한국어)gydF4y2Ba