【问题标题】:How does the complementary filter work?互补过滤器如何工作?
【发布时间】:2017-03-03 21:39:02
【问题描述】:

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

我了解到,如果有很多角运动,过滤器会“信任”陀螺仪数据,如果物体稳定,它会“信任”加速度计数据。

http://www.pieter-jan.com/node/11 在本文中,互补滤波器是这样描述的:

*角度 = 0.98(角度 + gyrData * dt) + 0.02*(accData)*

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

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

【问题讨论】:

    标签: accelerometer gyroscope sensor-fusion mpu6050


    【解决方案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
    

    这样做会产生更好的结果

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-28
        • 2013-08-08
        • 2018-02-11
        • 2021-06-05
        • 1970-01-01
        • 2014-10-01
        • 2017-12-31
        相关资源
        最近更新 更多