一.前言
良好的传感器数据是实现精确的导航解算与闭环控制的重要基础,然而,无论采用何种传感器,都会存在不同特性的噪声,同时,会随着应用环境的变化而变化。因此,我们需要通过设计滤波器、针对传感器特性设计校准算法等方式对传感器原始测量数据进行“优化”。本篇将针对数字滤波器的设计方法进行阐述,着重针对MATLAB FDA工具箱的使用方法进行说明。
二.MATLAB FDA工具箱的使用教程
首先,在MATLAB命令行窗口输入“fdatool”指令,随后即可打开MATLAB自带的功能强大的滤波器设计工具——“FDATool”。如图1所示,
打开后,会显示如图2所示的界面。
滤波器类型设置区域选择使用何种滤波器,常用的如FIR、IIR,滤波器的响应类型又分为低通、高通、带通、带阻、陷波等等。
滤波器阶次设置区域可以用于设置滤波器的阶次,或使用自动计算阶次的方式。
滤波器频率参数设置区域则可以用于设置滤波器的采样频率,截止频率,带通、带阻频率等等。
滤波器幅值参数设置区域则用于设置滤波器增益等。
当前滤波器信息区域显示了当前设计的滤波器的阶次以及稳定性,这里能够保存设计完成的滤波器。
滤波器相关特性曲线区域可显示滤波器的幅频特性、相频特性以及群时延等参数曲线,具体切换方式如图3所示。
点击“Analysis”按钮,弹出下拉选项框,其中包括滤波器的幅频响应、相频响应、群时延、脉冲响应、阶跃响应、零极点图等等,可谓是一应俱全。通过选择不同的选项,我们能够在滤波器相关特性曲线曲线显示我们需要的特性曲线,以此作为我们设计滤波器时的参考依据。
在设计完滤波器相关参数后,如图4所示,点击“File”—“Export”按钮,弹出如图5所示选项框,这里选择“MAT-File”、“Coefficient”。MATLAB会生成对应的MAT文件,如示例中,采用的IIR滤波器,最终生成的MAT文件中会包含“SOS”与“G”两个系数矩阵,然后,我们可以调用MATLAB自带的滤波函数进行IIR滤波器实现,或使用自定义的IIR滤波器进行实现,均可。
如图6所示,在MATLAB中调用通过FDA设计的滤波器,这里不再对FFT的使用方式进行赘述,通过调用“sos2tf”函数,将设计的IIR滤波器的系数进行变换,再次调用“filter”函数对待滤波数据进行滤波即可,滤波结束后,针对原始数据与滤波后数据进行时域与频域对比,如图7所示。
如图7所示为滤波前后的时域与频域数据图,红色为原始数据,绿色为滤波后数据。
三.总结
本篇介绍了MATLAB自带的FDA工具,该工具能够根据工程数据,快速设计出满足不同需求的滤波器,以供工程师使用。这里没有过多阐述滤波器相关的细节,下篇将着重结合多旋翼无人机的实际应用场景,针对不同的滤波器设计方法以及优劣点进行阐述。