首页 > 代码库 > 四轴加速度计滤波
四轴加速度计滤波
加速度计滤波实验参数:
采样频率Fs=250Hz 截止频率Cutoff Frequency | 未开电机静止 | 开电机悬停 | 未开电机转动飞控 |
原始输出(Raw) | 260 Hz | 260Hz | 260Hz |
MPU6050内部(LPF) | 94 Hz | 94 Hz | 94 Hz |
2阶(Butterworth) | 30 Hz | 30 Hz | 30 Hz |
8深度窗口滑动(Window) | N/A | N/A | N/A |
数据分析 | 4组画图对比(A) | 4组画图对比(C) | 4组画图对比(F) |
4组FFT变换(B) | 4组FFT变换(D) | N/A | |
8组 RMSE (E) | N/A |
说明:
1. 所有数据来源于MPU6050,单片机采样周期为4ms,即采样频率Fs=250Hz
2. 开电机悬停:绑住对角机臂,四电机同时打开,解开绳索飞行器可在空中飞行不掉下。由于没有快速无线数传,所以没有测试实际飞行悬停加速度计输出,因此该测试结果只近似做参考。
3. 原始输出Raw:根据芯片手册配置,低通滤波器最大带宽为260Hz,即截止频率为260Hz。近似可看成原始加速度计输出
4. MPU6050内部LPF:根据芯片手册配置,LPF这里选择94Hz,用于测试内部LPF性能
5. 2阶Butterworth:截止频率选择为30Hz,对Raw进行滤波
6. 8深度窗口滑动:目前四轴上广泛使用的平均滑动滤波,深度为8,对Raw进行滤波
测试结果(以下“>”表示:“性能好于”):
A(未开电机静止):
结论:
静态平滑性能:窗口滑动>Butterworth>LPF>Raw
B(未开电机静止):
结论:
1. 从Raw的FFT变换结果可以看出静态时的加速度计类似白噪声,其振幅平均分布在Fs/2上
2. LPF的结果不尽如人意。LPF的截止频率为94Hz,理应在94Hz处有较大的幅值下降,但是这种幅值变化的不明显,由此可见MPU6050内置的LPF性能有待改进
3. 2阶Butterworth滤波器效果就好很多,在30Hz以前和Raw的频谱大致相同,接着在30Hz出现大幅度的幅值衰减,说明滤波器起到了效果
4. 窗口平均滑动滤波出现了匪夷所思的现象,这种幅值衰减特别有规律!鉴于笔者信号分析学的很烂,这里就不展开了。
5. 其实从窗口滑动滤波的FFT结果就可以看出来效果了,简单的平均滤波效果在频谱上确实有不错的效果,至少比内置的LPF效果要好。如果在四轴同时应用了LPF和窗口平均滑动,那么效果会更好
C(开电机悬停):
结论:
打开电机之后,结果同静态平滑性能:窗口滑动>Butterworth>LPF>Raw
D(开电机悬停):
结论:
1. 从Raw的FFT变换结果可以看出打开电机时的加速度计与静止时的结果有了明显不同:首先是振幅有了明显的变化,从原先的200~600,到现在的10000~60000,这是由于打开电机后的机械震动引起的巨大振幅;其次就是频率分布,可以清楚地看到在40Hz和90Hz附近有较大的振幅分布,说明机械震动产生的信号频率大多数分布在这两个频率范围附近,而这种频率附近的信号我们是不需要的,这也就是说:我们要采用某种滤波器,至少在40Hz或者90Hz处截止,高于该频率的信号一律屏蔽。
2. LPF的结果很奇怪。在低频阶段0~40Hz的振幅极小,反而在100Hz处有较大的幅值分布,看起来就像是高通滤波器,而不像是低通滤波器。虽然设置的LPF在94Hz截止,但是在94Hz后面仍然有较大的震动信号出现,再次证明了MPU6050内置的LPF的效果确实不怎么令人满意
3. 2阶Butterworth滤波器效果比LPF效果好很多。在打开电机后,可以看到在30Hz之前的信号频谱和Raw的分布基本一致,说明保留了真实的信号输出。而在30Hz以后,其信号的幅值有了大幅度的明显衰减,有效的滤掉了高频的电机震动引起的干扰信号
4. 对于窗口平均滑动滤波依旧出现了匪夷所思的现象。这种有规律的频谱实在是看不懂,不过在低频段和原始输出保持一致,而在高频部分也有效的抑制了电机产生的震动信号。所以这种方法应用在四轴上的加速度计滤波是可以的,至少比内部LPF效果要好。
E(8组 RMSE):
这个图很有意思,RMSE(Root-Mean-Square-Error)均方根误差,常用来表征估计的准确程度。RMSE越小说明精度越高,这里由于是静止测试和开电机悬停测试,所以这里的RMSE用来表示数据的平滑性。
结论:
无论开电机与否,数据平滑性性能:窗口滑动>Butterworth>LPF>Raw
F(未开电机转动):
该测试用来比较Butterworth和窗口滑动滤波的延迟特性
结论:
数据平滑性性能指标:窗口滑动>Butterworth>Raw
为了更加清楚的看到延迟特性,下图放大Y轴在980次采样点的三条输出曲线:
结论:
数据延迟性能特性:Raw>Butterworth>窗口滑动,也就是说Butterworth滤波延迟小于8深度的窗口滑动滤波。
最后总结:
1. 尽量不要用MPU6050内置的LPF滤波。虽然相比于原始加速度计输出,该LPF可以平滑输出,但是在FFT频谱上的表现相当差劲。
2. 广泛使用的窗口平均滑动滤波无论在FFT还是RMSE表现上都有不错的表现,所以一般基础应用(低速运动或四轴初学者)采用窗口平均滤波是比较明智的选择。
3. 想要达到更好的滤波效果,FIR或者IIR滤波器是更好的选择。笔者测试2阶30Hz的Butterworth滤波器虽然在平滑性RMSE只比窗口平均滑动差了一点(但是比LPF要好),但是数据实时性性能指标上比前者响应速度提高了近一倍。因此在制作四轴的进阶阶段,可以考虑将窗口平均滑动换成Butterworth滤波器。
四轴加速度计滤波