主要内容

ahrs10filter

高度和方向从MARG和高度计读数

自从R2019a

描述

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

创建

描述

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

保险丝= ahrs10filter (“ReferenceFrame”射频返回一个扩展的卡尔曼滤波器对象,用于估计相对于参考系的设备高度和方向射频.指定RF为NED的(North-East-Down)或“ENU表示”(East-North-Up)。默认值为NED的

例子

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

属性

全部展开

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

数据类型:|

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

数据类型:|

乘法过程噪声方差从加速度计(m/s22,指定为正实有限数。

数据类型:|

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

数据类型:|

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

数据类型:|

μ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
residualmag 的磁强计测量的残差和残差协方差ahrs10filter
residualaltimeter 的高度计测量的残差和残差协方差ahrs10filter
构成 的当前方向和位置估计ahrs10filter
重置 重置内部状态ahrs10filter
stateinfo 显示状态向量信息ahrs10filter
调优 调优ahrs10filter参数,以减少估计误差
复制 创建副本ahrs10filter

例子

全部折叠

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

负载(“fuse10exampledata.mat”...“imuFs”“accelData”“gyroData”...“magnetometerFs”“magData”...“altimeterFs”“altData”...“expectedHeight”“expectedOrient”...“initstate”“initcov”);imuSamplesPerAlt = fix(imuFs/altimeterFs);imuSamplesPerMag = fix(imuFs/magnetometerFs);

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

Filt = ahrs10filter(“IMUSampleRate”imuFs,...“AccelerometerNoise”, 0.1,...“状态”initstate,...“StateCovariance”, initcov);Ralt = 0.24;Rmag = 0.9;

预分配变量以记录高度和方向。

numIMUSamples = size(accelData,1);estHeight = 0 (numIMUSamples,1);estOrient = 0 (numIMUSamples,1,“四元数”);

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

ii = 1:numIMUSamples使用predict来估计基于加速度计和滤波器状态%陀螺仪数据。预测(filt accelData (ii):), gyroData (ii):));%磁力计数据的收集速率比IMU数据低。保险丝%磁力计数据在较低的速率。如果~国防部(ii, imuSamplesPerMag) fusemag (filt, magData (ii):), Rmag);结束%高度计数据的采集速率低于IMU数据的采集速率。保险丝%高度计数据在较低速率。如果~mod(ii, imuSamplesPerAlt) fusealometer (filt,altData(ii),Ralt);结束记录当前高度和方向估计。[estHeight(ii),estOrient(ii)] =姿态(filt);结束

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

pErr = expectedHeight - estHeight;qErr = rad2deg(dist(expectedOrient,estOrient));pRMS =√(mean(pErr.^2));qRMS =√(mean(qErr.^2));流(海拔RMS误差\n);
海拔RMS误差
流(' \ t %。2f (meters)\n\n'人口、难民和移民事务局);
0.38(米)

想象真实的和估计的高度随着时间的推移。

t = (0:(numimusample -1))/imuFs;情节(t, expectedHeight);情节(t, estHeight);传奇(“地面实况”“估计高度”“位置”“最佳”) ylabel (身高(米)的)包含(“时间(s)”网格)

图中包含一个轴对象。带有xlabel Time (s), ylabel Height (m)的axis对象包含2个line类型的对象。这些物体代表地面真相,估计高度。

流('四元数距离RMS误差\n');
四元数距离RMS误差
流(' \ t %。2f (degrees)\n\n',则);
2.93(度)

扩展功能

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

版本历史

在R2019a中引入

另请参阅

|