返回信息流最近做毕设,被加速度计的噪声搞得焦头烂额,终于找到个办法滤掉了这些噪声。
加速度计是非常敏感的一种传感器,
上一张图感受下,电机旋转起来后引起的振动在加速度计上的表现:
(蓝色为加速度计、粉色为角度值)
显然,必须对加速度计进行一定的低通滤波,滤除高频部分。
如果不进行滤波,高频的噪声会影响角度的解算,表现就是会影响角度的解算,例如静止时候相同位置的角度是0°,那么一旦有高频噪声,此时计算出来可能就是5°了。
有一篇文章对此有详细的分析:
http://blog.csdn.net/nemol1990/article/details/41811061
根据文章所述,效果最好的是窗口滑动滤波,
下图是使用窗口滑动滤波对加速度计的三轴进行滤波后,角度值的波形:(忘记输出加速度了)
以下为窗口滑动滤波的一个实现:
typedef struct{
float * Window_Buffer;
int max; //数组长度
int i;
}Window_Filter_Struct;
float Window_Filter(Window_Filter_Struct * wfs,float data){
int j;
float sum=0;
int count;
if(!wfs->Window_Buffer)
return 0;
wfs->Window_Buffer[wfs->i]=data;
wfs->i++;
if(wfs->i==wfs->max){
wfs->i=0;
}
for(j=0;j<wfs->max;++j){
sum+=wfs->Window_Buffer[j];
}
return sum/wfs->max;
}
这是一条镜像帖。来源:北邮人论坛 / smartcar / #301同步于 2018/3/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Smartcar机器人发帖
加速度计的滤波
Ncer
2018/3/14镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。