补充过滤器如何工作?

时间:2017-03-03 21:39:02

标签: accelerometer gyroscope sensor-fusion mpu6050

我试图将来自加速度计和陀螺仪的数据组合起来,以精确测量物体的俯仰角和偏航角。在研究了补充过滤器并尝试实现它之后,我对它的工作原理提出了一些问题。

我已经读过过滤器"信任"陀螺仪数据,如果有很多角度运动,它会信任"如果物体稳定,则为加速度计数据。

http://www.pieter-jan.com/node/11 在本文中,补充过滤器以这种方式描述:

* angle = 0.98(angle + gyrData * dt)+ 0.02 *(accData)*

对我来说,好像陀螺仪数据似乎受到青睐。在下面的图片中,http://www.pieter-jan.com/images/resize/Complementary_Filter.png位于页面底部,过滤后的数据似乎“保持密切”状态。加速度计数据,即使陀螺仪数据已经漂移。当计算表明陀螺仪数据受到青睐时,我不明白为什么会发生这种情况。我也在其他照片中观察过这一点。在我自己的测试中,我需要"交换" 0.98和0.02,表明加速度计数据受到青睐,以获得类似的结果。我错过了完全误解这个过滤器的工作原理吗? "赞成"是否正常加速度计数据?

此外,当需要长时间监视物体的角度时,由于漂移太大,陀螺仪数据不会变得无用,滤波器如何补偿?

2 个答案:

答案 0 :(得分:0)

我意识到我哪里出错了。 我基本上只使用陀螺仪数据来计算角度,并在滤波器中使用它。即

GyroAngle += d°/s * time_between_cycles
FilteredAngle = 0.98*GyroAngle + 0.02*AccelerometerAngle

相反,我应该这样做:

FilteredAngle = 0.98*(FilteredAngle + d°/s * time_between_cycles) + 0.02*AccelerometerAngle

这样做可以产生更好的效果

答案 1 :(得分:0)

我试图做类似的事情。我使用LSM9DS0传感器在我的Arduino代码中实现了一个互补滤波器(它内置陀螺仪/加速度计https://www.adafruit.com/product/2021

我一直在玩的过滤器值以及我尝试使用的校准方法,但我似乎无法100%摆脱它。与角度总是有一个小偏差,我永远无法获得100%滤波角度,没有错误。