当我使用默认值 0.0041 或 0.033 时,当我将四元数数据发送到 Unity 3D 时,旋转很奇怪。当我将 beta 值更改为 0.001 时,旋转很好,但随着时间的推移会有轻微的漂移。我正在使用 LSMD9S0 IMU 传感器。这是我的代码 Madgwick_Arduino
问问题
4747 次
1 回答
4
查看Sebastian Madgwick 写的原始文章,我们可以找到以下关于 beta 值的段落:
β是发散率,
{^S_E}q_ω
表示为对应于陀螺仪测量误差的四元数导数的大小。
后来,它说:
滤波器计算
{^S_E}q_est
为陀螺仪测量的方向变化率,{^S_E}q_ω
,陀螺仪测量误差的大小, β,在估计误差的方向上移除,{^S_E}q_e
,从加速度计和磁力计测量值计算得出。
因此,beta 幅度与陀螺仪的误差直接相关(我将偏差理解为这里最重要的误差来源),但直接在四元数梯度的分量上表示。这意味着它没有可理解的单位,也没有直观的最优幅度。
另一方面,Madgwick 滤波器假设加速度计测量重力。这意味着它受到水平加速度的影响。需要根据您的具体情况调整滤波器参数(它具有的两个参数),在陀螺仪偏差校正和对水平加速度的灵敏度之间进行权衡。
根据经验:增加 beta 会导致 (a) 更快的偏差校正,(b) 对横向加速度的更高灵敏度。
我之前使用这个过滤器的经验需要几个小时的实验 + 手动调整,直到我们达到令人满意的结果。我们再也不需要触及这些价值观了。
于 2017-12-12T12:10:08.190 回答