由于无人机在飞行过程中受到电机桨叶转动的引起的振动影响,从陀螺仪、加速度计等传感器出来的数据需要进行滤波,一般是通过低通滤波,结合电机的频率特性,通常30Hz左右是比较合适的阈值
Matlab提供了较为方便的设计低通滤波器的工具,如Buttorworth低通滤波器,
[b, a] = butter(order, normalized_cutoff);
order为阶数,normalized_cutoff为标准化的截止频率,比如程序运行的频率是1000Hz,过滤30Hz的频率,设计一个三阶的滤波器,那么命令就是
[b, a] = butter(3, 0.03)
b和a分别为得到的滤波器的滤波参数,a=[a0,a1,...,ak],b=[b0,b1,...,bk],k为阶数,这些参数的滤波作用如下
即
其中为输入信号,为滤波输出信号,通过上述的公式,可以对输入信号进行阶的滤波得到输出
对于输入和输出阶数不同的低通滤波器,可以通过Matlab的maxflat命令来进行设计
[b,a] = maxflat(n,m,Wn);
其中a和b的意义同上,m为输出阶数,n为输入的阶数,Wn为标准化的截止频率,即上面的normalized_cutoff参数
通过对输入信号如陀螺仪信号、加速度信号进行滤波可以优化无人机的控制效果,Buttorworth是目前较为通用的低通滤波器,具有较好的效果,设计其它类型的低通滤波器,如Chebyshev, Elliptic等,Matlab也提供了相应的支持,可以通过fdatool等图形化工具或者一些命令来选择和设计滤波器,并查看它的滤波效果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)