主要内容gydF4y2Ba

complementaryFiltergydF4y2Ba

基于互补滤波器的方向估计gydF4y2Ba

描述gydF4y2Ba

的gydF4y2BacomplementaryFiltergydF4y2Ba系统对象™融合加速度计,陀螺仪和磁力计传感器数据,以估计设备方向和角速度。gydF4y2Ba

用这个物体估计方向:gydF4y2Ba

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

  2. 使用参数调用对象,就像调用函数一样。gydF4y2Ba

有关系统对象如何工作的详细信息,请参见gydF4y2Ba什么是系统对象?gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

保险丝gydF4y2Ba= complementaryFiltergydF4y2Ba返回一个gydF4y2BacomplementaryFiltergydF4y2Ba系统对象,gydF4y2Ba保险丝gydF4y2Ba,用于加速度计、陀螺仪和磁力计数据的传感器融合,以估计设备的方向和角速度。gydF4y2Ba

保险丝gydF4y2Ba= complementaryFilter (gydF4y2Ba“ReferenceFrame”gydF4y2Ba,gydF4y2Ba射频gydF4y2Ba)gydF4y2Ba返回一个gydF4y2BacomplementaryFiltergydF4y2Ba融合加速度计、陀螺仪和磁力计数据以估计相对于参考系的设备方向的系统对象gydF4y2Ba射频gydF4y2Ba.指定gydF4y2Ba射频gydF4y2Ba作为gydF4y2BaNED的gydF4y2Ba(North-East-Down)或gydF4y2Ba“ENU表示”gydF4y2Ba(East-North-Up)。默认值为gydF4y2BaNED的gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

保险丝gydF4y2Ba= complementaryFilter (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba设置每个属性gydF4y2Ba名字gydF4y2Ba到指定的gydF4y2Ba价值gydF4y2Ba.未指定的属性有默认值。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

除非另有说明,属性为gydF4y2BanontunablegydF4y2Ba,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而gydF4y2Ba释放gydF4y2Ba功能解锁它们。gydF4y2Ba

如果属性为gydF4y2Ba可调gydF4y2Ba,您可以随时更改其值。gydF4y2Ba

有关更改属性值的详细信息,请参见gydF4y2Ba使用系统对象的MATLAB系统设计gydF4y2Ba.gydF4y2Ba

输入传感器数据的采样率,单位为Hz,指定为正标量。gydF4y2Ba

可调:gydF4y2Ba没有gydF4y2Ba

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

加速度计增益,指定为范围为[0,1]的实标量。增益决定了多少加速度计测量是信任陀螺仪测量方向估计。此属性是可调的。gydF4y2Ba

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

磁强计增益,指定为[0,1]范围内的实标量。增益决定了磁力计测量对陀螺仪测量方向估计的信任程度。此属性是可调的。gydF4y2Ba

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

启用磁强计输入,指定为gydF4y2Ba真正的gydF4y2Ba或gydF4y2Ba假gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

输出方向格式,指定为gydF4y2Ba“四元数”gydF4y2Ba或gydF4y2Ba旋转矩阵的gydF4y2Ba.输出的大小取决于输出方向格式:gydF4y2Ba

  • “四元数”gydF4y2Ba——输出是一个gydF4y2BaNgydF4y2Ba1gydF4y2Ba四元数gydF4y2Ba.gydF4y2Ba

  • 旋转矩阵的gydF4y2Ba——输出为3 × 3 × -gydF4y2BaNgydF4y2Ba旋转矩阵。gydF4y2Ba

NgydF4y2Ba是样本的数量。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

使用gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

[gydF4y2Ba取向gydF4y2Ba,gydF4y2BaangularVelocitygydF4y2Ba=保险丝(gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba,gydF4y2BamagReadingsgydF4y2Ba)gydF4y2Ba融合加速度计,陀螺仪和磁力计数据来计算方向和角速度。要使用此语法,请设置gydF4y2BaHasMagnetometergydF4y2Ba财产gydF4y2Ba真正的gydF4y2Ba.gydF4y2Ba

[gydF4y2Ba取向gydF4y2Ba,gydF4y2BaangularVelocitygydF4y2Ba=保险丝(gydF4y2BaaccelReadingsgydF4y2Ba,gydF4y2BagyroReadingsgydF4y2Ba)gydF4y2Ba融合加速度计和陀螺仪数据来计算方向和角速度。要使用此语法,请设置gydF4y2BaHasMagnetometergydF4y2Ba财产gydF4y2Ba假gydF4y2Ba.gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

加速度计读数在传感器本体坐标系中,单位为m/sgydF4y2Ba2gydF4y2Ba,指定为gydF4y2BaNgydF4y2Ba3矩阵。gydF4y2BaNgydF4y2Ba是样本的数量,和三列的gydF4y2BaaccelReadingsgydF4y2Ba表示[gydF4y2BaxgydF4y2BaygydF4y2BazgydF4y2Ba)测量。方法所指定的采样速率假定加速度计读数对应gydF4y2BaSampleRategydF4y2Ba财产。在滤波器中,重力常数gydF4y2BaggydF4y2Ba假设是gydF4y2Ba9.81gydF4y2Ba米/秒gydF4y2Ba2gydF4y2Ba.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这取决于gydF4y2BaOrienationFormatgydF4y2Ba属性设置为gydF4y2Ba“四元数”gydF4y2Ba或gydF4y2Ba旋转矩阵的gydF4y2Ba:gydF4y2Ba

  • “四元数”gydF4y2Ba——输出是一个gydF4y2BaNgydF4y2Ba四元数的-乘1向量,其中gydF4y2BaNgydF4y2Ba是样本的数量。gydF4y2Ba

  • 旋转矩阵的gydF4y2Ba——输出是一个3 × 3 × -gydF4y2BaNgydF4y2Ba旋转矩阵数组,其中gydF4y2BaNgydF4y2Ba是样本的数量。gydF4y2Ba

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

角速度在传感器体坐标系中以rad/s表示,返回为angydF4y2BaNgydF4y2Ba-by-3数组,其中gydF4y2BaNgydF4y2Ba是样本的数量。gydF4y2Ba

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

对象的功能gydF4y2Ba

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源gydF4y2BaobjgydF4y2Ba,使用这种语法:gydF4y2Ba

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源并允许更改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba
克隆gydF4y2Ba 创建重复的gydF4y2Ba系统对象gydF4y2Ba
isLockedgydF4y2Ba 确定gydF4y2Ba系统对象gydF4y2Ba正在使用中gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

加载gydF4y2Barpy_9axisgydF4y2Ba文件,其中包含记录的加速度计、陀螺仪和磁力计传感器数据,这些数据来自一个在pitch(约gydF4y2BaygydF4y2Ba-轴),然后偏航(绕gydF4y2BazgydF4y2Ba-轴),然后滚(绕gydF4y2BaxgydF4y2Ba设在)。该文件还包含录音的采样率。gydF4y2Ba

Ld =负载(gydF4y2Ba“rpy_9axis.mat”gydF4y2Ba);加速度= ld.sensorData.Acceleration;陀螺= ld.sensorData.AngularVelocity;mag = ld. sensordata .磁场;gydF4y2Ba

创建一个互补过滤器对象,其采样率等于数据的频率。gydF4y2Ba

Fs = ld.Fs;gydF4y2Ba%赫兹gydF4y2Ba保险丝=互补滤波器(gydF4y2Ba“SampleRate”gydF4y2BaFs);gydF4y2Ba

使用过滤器融合加速度计,陀螺仪和磁力计数据。gydF4y2Ba

Q =保险丝(加速度,陀螺,磁谱仪);gydF4y2Ba

可视化结果。gydF4y2Ba

情节(eulerd (q,gydF4y2Ba“ZYX股票”gydF4y2Ba,gydF4y2Ba“帧”gydF4y2Ba));标题(gydF4y2Ba取向估计的gydF4y2Ba);传奇(gydF4y2Ba“Z-rotation”gydF4y2Ba,gydF4y2Ba“Y-rotation”gydF4y2Ba,gydF4y2Ba“X-rotation”gydF4y2Ba);ylabel (gydF4y2Ba“度”gydF4y2Ba);gydF4y2Ba

图中包含一个轴对象。标题为Orientation Estimate的axis对象包含3个类型为line的对象。这些物体代表z轴旋转,y轴旋转,x轴旋转。gydF4y2Ba

参考文献gydF4y2Ba

[1]瓦伦蒂,R., I.德里亚诺夫斯基,J.肖。“保持良好的态度:imu和marg的基于四元数的方向过滤器。”gydF4y2Ba传感器。gydF4y2BaVol. 15, no . 8, 2015, pp. 19302-19330。gydF4y2Ba

扩展功能gydF4y2Ba

C/ c++代码生成gydF4y2Ba
使用MATLAB®Coder™生成C和c++代码。gydF4y2Ba

另请参阅gydF4y2Ba

|gydF4y2Ba

R2019b引入gydF4y2Ba