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