我尝试了几种算法来获得连续线性加速度和振动(小于 0.4g,频率低于 10HZ)下的俯仰、滚动和偏航。它们都没有给出好的结果,因为读数要么漂移,要么受线性加速度的影响太大。我想要实现的是当外部加速度小于+-0.4g时,俯仰和滚动的误差应该小于+-1deg。
我已经尝试过这些算法:
Madgwick 算法。当 Beta 增益设置得非常高时,收敛速度很快,但角度更容易受到线性加速度的影响。我将其调低并将线性加速度下的误差降低到 +-0.5 度。但是,如果振动是连续的,则读数会漂移,并且需要永远收敛到真实值。这是有道理的,因为在线性加速度下,陀螺仪更受信任,并且计算出的角度随着陀螺仪积分的漂移而漂移。
Mahony 算法。与 Madgwick 的相反,无论我对 Ki 和 Kp 使用什么值,它都不会漂移。然而,它总是受到线性加速度的影响。(误差大于 +-6deg)
传统卡尔曼滤波器。很多时间都花在调整那些巨大的 R 和 Q 向量上。到目前为止,它的性能与 Mahony 的相同。
我正在使用剃须刀 IMU。我知道使用便宜的传感器不可能达到与这个相同的结果。
还有更多选项,例如 UKF,但理解或实施起来很痛苦。
欢迎任何建议。