再谈IMU数据处理(滤波器)

本文开始前,先回答一个问题。

上一篇文章最后提到了卡尔曼滤波器用来做一维数据的数字滤波处理,最终的实验结果说:该模型下的卡尔曼滤波处理与二阶IIR低通滤波处理效果几乎一致。有网友指出是错误的,卡尔曼滤波一定比二阶IIR要好。这里特别做个说明:

首先,笔者指出的是该模型下,意思是在上篇文章中设计的模型下得到的结果,不排除有更优秀的模型,能得到更佳的性能。卡尔曼滤波器得到的结果与模型密切相关,并不存在说只要是卡尔曼就一定比别的算法好,还要看应用的场景是否受限;

其次就是应用场景的说明,单就卡尔曼而言,使用方法有很多,可以加入其它的数据,设计模型从而重新估计出最优的数据,笔者也有过类似的设计经验,通过对飞机建模,引入卡尔曼算法,从而得到滤波后的IMU数据(可见视频教程),而上篇文章也特别说明了是一维数据的处理,假如你非要说我的卡尔曼结果比你的好,但其实比如引入了其它数据,那这就是降维打击。

最后,之所以上次提出一个卡尔曼的例子,也主要是其代码简单,非常适合初学者理解其5个公式。

此外,上篇文章的卡尔曼,其实本质上来讲与一阶低通滤波类似

推导如下:

这里,卡尔曼增益k为定值,并不是时变的,所以可以看出,最终得到的结构与一阶低通几乎一致的。

回答完卡尔曼的问题后,开始我们今天的主题。

一般来说,飞控IMU的数据滤波采用低通滤波即可,截止频率50以下,但是如果出现机体共振,或者说在某一个特定的高频下,震动明显又该如何处理?

特别是针对比如机体轴距较小,机动性强的小飞机,假设有用数据的频率在100hz以内,这时候假设有一个120hz的高频震动,如果采用100hz的低通滤波,由于滤波器对增益的衰减是一个平缓的曲线(截止频率越低,衰减越快),这时候对这个120hz的高频震动就很难处理,假设为了衰减到一定的强度,这时候把截止频率降低,加强滤波效果,但是有用的数据又会被滤除,同时延时也会增大。

针对以上问题,处理办法是对这个特定的频率采用带阻或陷波滤波器,去除掉该干扰后,再进行低通滤波。

 

带阻和陷波滤波器区别?

带阻顾名思义是针对某一段的频率范围,而陷波则是针对某一具体的频率点,且其对其他频率段的增益几乎不做处理,而带阻则会有一些影响。

使用前提?

就是说什么情况下使用这种方法,正如前面所说,是针对机身在某一特定频率有共振的情况下,假如本身没有共振,则没有必要采取该处理。

为什么说陷波对特定频率处理好?

换个角度来提问,比如干扰是90hz,假设使用截止频率为30hz的低通滤波,那按理来说不是也能滤除?为什么还要另外加个滤波器处理这个90hz?

从滤波器的设计来看:

假设使用2阶IIR低通滤波,截止频率30hz

图中可以看出,在80hz的衰减大概是31db。

而采用同等阶数的notch滤波,中心频率设为80hz,带宽10hz。

图中可以看出,其在80hz的衰减达到了50db以上,说明加一个notch滤波,对特定干扰的滤波效果更好。

使用该方法还有一个前提,就是能准确估计出干扰的频率,否则这个陷波滤波器也不知从何设计。图中可以看出,假设你设计的陷波滤波器针对的是80hz的干扰,而实际的干扰假如在85左右,可以看出,85hz的衰减其实并没有太大,即该滤波器并未能起作用

 

实验验证:

还用上一篇的一组数据(由于采样的限制,只能看到100hz以内的频谱)。这里设计了两个滤波器,分别是90hz的陷波滤波,80-99hz的带阻滤波。

可以看出,陷波滤波器对90hz的频率幅值已经滤除,而带阻滤波正如设计的一样,对80-99的区域有一个抑制作用。说明最终效果正如我们想要的一样。

放大观察:

可以看出几乎没有延时,这时候对带阻过后的数据进行低通滤波,假设截止频率为80hz,则时域波形如下:

带阻处理后的数据更光滑一些。这里也说明如果对干扰频率不是那么精确的话,笔者建议使用带阻滤波更加。

 

总结:

  • 一般应用场景下,低通滤波即可满足要求;
  • 如若出现具有特定的干扰频率,且与真实数据的频率较为接近,这时候低通滤波很难处理该情况。所以先进行陷波处理,再进行低通滤波,效果更佳;
  • 滤波器待研究:动态陷波处理和自适应滤波,将来有时间可以再更进一步学习。

 

后记:

笔者之前对滤波器的处理认识不深,正好前阵子有遇到过类似上面提到的问题,用软件低通滤波要不就是滤不掉干扰,要不就是有用信息丢失过多,延时较大,导致控制还是很难控好。之前的经验就是想办法去除机身的干扰问题,比如结构、减震等。但实际工程上很难把控要求其他环节,所以软件这边只能硬上。通过这个问题的深层次探究,也了解了更多方法,通过本篇文章分享出来,与读者共同成长。

  • 10
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值