主要内容

AHRS10Filter.

来自Marg和Altimeter读数的身高和方向

描述

AHRS10Filter.目标融合MARG和高度计传感器数据来估计设备的高度和方向。MARG(磁性、角速度、重力)数据通常来自磁力计、陀螺仪和加速度计传感器。该滤波器使用18元状态向量来跟踪定向四元数、垂直速度、垂直位置、MARG传感器偏差和地磁向量。的AHRS10Filter.对象使用扩展卡尔曼滤波器来估计这些量。

创建

描述

保险丝= ahrs10filter返回扩展卡尔曼滤波对象,保险丝,用于传感器融合MARG和高度计读数,以估计设备的高度和方向。

保险丝= ahrs10filter (“ReferenceFrame”射频返回一个扩展的卡尔曼筛选对象,估计相对于参考帧的设备高度和方向射频。射频指定为'ned'(向东 - 向下)或'enu'(East-North-Up)。默认值为'ned'

例子

保险丝= ahrs10filter (___,名称,价值)每个属性集的名字到指定的价值。未指定的属性具有默认值。

属性

展开全部

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

数据类型:|双倍的

陀螺仪的倍增过程噪声方差(rad/s)2,指定为正实数有限数。

数据类型:|双倍的

来自加速度计的乘法过程噪声方差(M / S.22,指定为正实数有限数。

数据类型:|双倍的

乘频过程噪声与陀螺仪偏差的方差(rad/s)22,指定为正实数有限数。

数据类型:|双倍的

来自加速度计偏置的乘法过程噪声方差(M / s22,指定为正实数有限数。

数据类型:|双倍的

用于μT的地磁载体的添加剂过程噪声2,指定为正实数有限数。

数据类型:|双倍的

磁强计偏差的加性过程噪声(μT)2,指定为正实数有限数。

数据类型:|双倍的

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

状态 单位 指数
方向(四元数部分) N/A 1:4
高度(ned或enu) 5
垂直速度(ned或enu) 多发性硬化症 6
角偏差(XYZ) rad /秒 7:9
速度偏差(XYZ) 多发性硬化症 10:12
地质磁场矢量(NED或ENU) μT 13:15
磁力计偏见(XYZ) μT 16:18

默认初始状态对应于位于静止的对象[0 0 0]在大地测量的LLA坐标。

数据类型:|双倍的

状态误差协方差的卡尔曼滤波器,指定为一个18 × 18元素的实数矩阵。

数据类型:|双倍的

对象的功能

预测 使用加速度计和陀螺仪数据更新状态AHRS10Filter.
fusemag. 使用磁力计数据正确的状态AHRS10Filter.
fusealTimeter. 使用高度计数据来正确的状态AHRS10Filter.
正确的 使用直接状态测量的正确状态AHRS10Filter.
剩余 的直接状态测量的残差和残差协方差AHRS10Filter.
残留梅格 的磁强计测量的残差和残差协方差AHRS10Filter.
residualaltimeter 高度计测量的残差和残余协方差AHRS10Filter.
构成 目前的方向和位置估计AHRS10Filter.
重启 重置内部状态AHRS10Filter.
议定书文件 显示状态矢量信息AHRS10Filter.
调优AHRS10Filter.减少估计错误的参数
复制 创建副本AHRS10Filter.

例子

全部收缩

加载记录的传感器数据,地面真理姿势和初始状态和初始状态协方差。计算每个高度计样本的IMU样本数量和每磁力计样本的IMU样本的数量。

负载('fuse10exampledata.mat'...“imuFs”'acceldata'“gyroData”...“magnetometerFs”'magdata'...'Altimeterfs''altdata'...''''''''是'“expectedOrient”...'initstate'“initcov”);imuSamplesPerAlt =修复(imuFs / altimeterFs);imuSamplesPerMag =修复(imuFs / magnetometerFs);

创建一个AHRS滤波器,融合MARG和高度计读数,以估计高度和方向。设置传感器的采样率和测量噪声。这些值是从数据表和实验中确定的。

filt = ahrs10filter(“IMUSampleRate”imuFs,...“AccelerometerNoise”, 0.1,...'状态'initstate,...“StateCovariance”,initcov);RALT = 0.24;rmag = 0.9;

预先采用变量以日志高度和方向。

numimusamples =尺寸(Accelda,1);Estheight = Zeros(Numimusamples,1);estorient = zeros(Numimusamples,1,“四元数”);

保险丝加速度计,陀螺仪,磁力计和高度计数据。外环以最快的采样率(IMU采样率)向前预测过滤器。

II = 1:NUMIMUSAMPLES%使用predict来估计基于加速度计和的过滤器状态%陀螺仪数据。预测(Filt,Accelda(II,:),Gyrodata(II,:));%磁强计数据的采集速率低于IMU数据。保险丝%磁力计数据在较低的速率。如果〜mod(iiusamplespermag)fusemag(filt,magdata(ii,:),rmag);结束%高度计数据以比IMU数据的较低速率收集。保险丝%高度表数据在较低的速率。如果~国防部(ii, imuSamplesPerAlt) fusealtimeter (filt, altData (ii), Ralt);结束%记录当前高度和方向估计。[estHeight (ii), estOrient (ii)] =姿势(filt);结束

计算已知的真实高度和方向与AHRS滤波器输出之间的均方根误差。

pErr = expectedHeight - estHeight;qErr = rad2deg (dist (expectedOrient estOrient));人口、难民和移民事务局(12(平均(穗青葱。^ 2));则=√意味着(qErr ^ 2));流(“高度均方根误差\ n”);
高度rms错误
流(' \ t %。2f (meters)\n\n'人口、难民和移民事务局);
0.38(米)

想象真实的和估计的高度随时间的变化。

t = (0: (numIMUSamples-1)) / imuFs;情节(t, expectedHeight);绘图(T,Estheight);持有离开传奇('真相'“估计高度”'地点'“最佳”)ylabel('高度(m)')Xlabel('时间'') 网格

图包含轴。轴包含2个类型的型号。这些对象代表了地面真理,估计高度。

流('四元数距离RMS误差\n');
四元数距离均方根误差
流('\ t%.2f(度)\ n \ n',qrms);
2.93(度)

扩展功能

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

另请参阅

|

介绍了R2019a