我尝试了几种算法来获得连续线性加速度和振动(小于0.4g,频率小于10HZ)下的俯仰,侧倾和偏航。它们均未提供良好的结果,因为读数可能漂移或受线性加速度的影响太大。我要实现的是,当外部加速度小于+ -0.4g时,俯仰和横滚的误差应小于+ -1deg。
我已经尝试过这些算法:
麦格威克算法。当Beta增益设置得很高时,收敛速度很快,但是角度更容易受到线性加速度的影响。我将其调低,并将线性加速度下的误差降低至+ -0.5deg。但是,如果振动是连续的,则读数将漂移,并且需要很长时间才能收敛到真实值。这是有道理的,因为在线性加速度下,陀螺仪受到更多的信任,并且计算出的角度随着陀螺仪积分的漂移而漂移。
Mahony的算法。与Madgwick的相反,无论我为Ki和Kp使用什么值,它都不会漂移。但是,它始终受线性加速度的影响。(误差大于+ -6deg)
传统卡尔曼滤波器。在调整那些巨大的R和Q向量上已经花费了很多时间。到目前为止,它具有与Mahony相同的性能。
我正在使用剃刀IMU。我知道使用廉价的传感器不可能获得与这一传感器相同的结果。
还有更多类似UKF的选项,但是很难理解或实施。
任何建议都欢迎。