主要内容

ahrs10filter

MARG和高度计读数的高度和方位

描述

ahrs10filter对象保险丝MARG和高度计传感器数据来估计设备高度和方向。MARG(磁性,角速率,重力)数据通常来自磁力计,陀螺仪和加速度计传感器。过滤器使用18元元状态向量来跟踪方向四元数,垂直速度,垂直位置,马格传感器偏差和地磁矢量。这ahrs10filter对象使用扩展的卡尔曼滤波器来估计这些数量。

创建

描述

保险丝= AHRS10Filter.返回扩展的卡尔曼筛选对象,保险丝,对于MARG的传感器融合和高度计读数来估计设备高度和方向。

保险丝= ahrs10filter('参考范围'RF.的)返回一个扩展的卡尔曼滤波对象,该对象估计设备高度和相对于参考系的方向RF..指定RF AS.NED的(North-East-Down)或“ENU表示”(东北北)。默认值是NED的

例子

保险丝= ahrs10filter(___、名称、值)设置每个属性姓名到了指定的价值.未指定的属性具有默认值。

特性

全部展开

Hz中IMU的采样率,指定为正标量。

数据类型:单身的|

来自陀螺仪(RAD / S)的乘法过程噪声差异2,指定为正实际有限数字。

数据类型:单身的|

加速度计的乘频噪声方差(m/s)2的)2,指定为正实际有限数字。

数据类型:单身的|

来自陀螺仪偏置的乘法过程噪声方差(RAD / S.2的)2,指定为正实际有限数字。

数据类型:单身的|

乘性过程噪声与加速度计偏差的方差(m/s)2的)2,指定为正实际有限数字。

数据类型:单身的|

μT地磁矢量的加性过程噪声2,指定为正实际有限数字。

数据类型:单身的|

μT磁力计偏置的添加剂处理噪声2,指定为正实际有限数字。

数据类型:单身的|

延长卡尔曼滤波器的状态向量。状态值表示:

状态 单位 指数
方向(四元零件) N / A. 1:4
海拔高度(NED或ENU) M. 5.
垂直速度(NED或ENU) 米/秒 6.
三角洲角偏见(XYZ) Rad / S. 七章
Delta速度偏差(XYZ) 米/秒 10:12
地磁场矢量(NED或ENU) μt. 13:15
磁强计偏差(某某) μt. 十六18

默认初始状态对应于处于静止状态的对象,位于(0 0 0)在大地LLA坐标中。

数据类型:单身的|

Kalman滤波器的状态错误协方差,指定为Real Number的18×18元元矩阵。

数据类型:单身的|

对象功能

预测 使用加速度计和陀螺数据更新状态ahrs10filter
fusemag 使用磁力计数据的正确状态ahrs10filter
fusealtimeter 使用高度计数据的正确状态ahrs10filter
正确的 使用直接的状态测量来正确的状态ahrs10filter
剩余的 从直接状态测量中的残差和残余考究ahrs10filter
residualmag 磁力计测量的残差和残余协方差ahrs10filter
ResealualAltimeter 的高度计测量的残差和残差协方差ahrs10filter
姿势 的当前方向和位置估计ahrs10filter
重置 重置内部状态ahrs10filter
stateinfo 显示的状态向量信息ahrs10filter
调优 ahrs10filter参数,以减少估计误差
复制 创建的副本ahrs10filter

例子

全部折叠

负载记录的传感器数据,地面真实姿态,初始状态和初始状态协方差。计算每高度计样品的IMU样品数量和每磁强计样品的IMU样品数量。

加载(“fuse10exampledata.mat”......'imufs'“accelData”'gyrodata'......'magnetumbfs'“magData”......“altimeterFs”“altData”......“expectedHeight”'住宿氛围'......“initstate”'initcov');imusamplesperalt = fix(imufs / altimeterfs);imusamplespermag = fix(imufs / magemeterfs);

创建一个AHRS过滤器,将Marg和高度计读数保留以估计高度和方向。设置传感器的采样率和测量噪声。该值是从数据表和实验确定的。

filt = ahrs10filter ('imusamplever',imufs,......'Acceleromernoise',0.1,......“状态”,initstate,......'StateCovariance', initcov);Ralt = 0.24;Rmag = 0.9;

预分配变量到日志高度和方向。

numIMUSamples =大小(accelData, 1);estHeight = 0 (numIMUSamples, 1);estOrient = 0 (numIMUSamples 1'Quaternion');

引信加速度计,陀螺仪,磁力计和高度计数据。外循环预测滤波器以最快的采样率(IMU采样率)前进。

为了2 = 1: numIMUSamples%使用预测基于加速度计估计滤波器状态%陀螺数据。预测(filt accelData (ii):), gyroData (ii):));%磁力计数据以比IMU数据较低的速率收集。保险丝%磁力计数据以较低的速度。如果~国防部(ii, imuSamplesPerMag) fusemag (filt, magData (ii):), Rmag);结尾%高度计数据的采集速率低于IMU数据。保险丝%高度计数据以较低的速度。如果〜mod(ii,imusamplesperalt)fusealtimeter(filt,altdata(ii),ralt);结尾%记录当前的高度和方向估计。[estheight(ii),estorient(ii)] =姿势(菲尔特);结尾

计算已知真正的高度和方向与AHRS滤波器的输出之间的RMS错误。

perr = permanderheight  -  estheight;Qerr = Rad2deg(DEST(预期,estorient));prms = sqrt(平均值(perr。^ 2));qrms = sqrt(平均值(qerr. ^ 2));FPRINTF('高度rms错误\ n');
高度均方根误差
FPRINTF('\ t%.2f(米)\ n \ n',prms);
0.38(米)

随着时间的推移可视化真实和估计的高度。

t =(0 :( numimusamples-1))/ imufs;情节(T,Indectsheight);持有情节(t, estHeight);传奇(“地面实况”'估计高度'“位置”'最好的事物') ylabel (身高(米)的)包含(“时间(s)”网格)

图中包含一个坐标轴。轴线包含2个线型对象。这些物体代表地面真实值,估计高度。

FPRINTF('四元距离rms错误\ n');
四元距离rms误差
FPRINTF(' \ t %。2f (degrees)\n\n',则);
2.93(度)

扩展能力

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

也可以看看

|

在R2019A引入