互补过滤器到底是如何工作的?

问题描述 投票:0回答:2

我正在尝试结合加速度计和陀螺仪的数据来精确测量物体的俯仰角和偏航角。在研究了互补过滤器并尝试实现它之后,我对它的工作原理有一些疑问。

我读到,如果存在大量角运动,则过滤器“信任”陀螺仪数据;如果物体稳定,则过滤器“信任”加速度计数据。

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,表明加速度计数据受到青睐,以获得类似的结果。我是否完全误解了这个过滤器的工作原理? “偏向”加速度计数据正常吗?

另外,当需要长时间监测物体角度时,陀螺仪数据不是会因为漂移太大而变得毫无用处,滤波器如何补偿呢?

accelerometer gyroscope sensor-fusion mpu6050
2个回答
1
投票

我意识到我哪里出了问题。 我基本上仅使用陀螺仪数据计算角度并将其用于滤波器中。即

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

这样做产生了更好的结果


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.