四元数 - 使用加速度计和陀螺仪进行角度计算

时间:2016-02-09 07:39:46

标签: math 3d rotation quaternions euler-angles

我一直在使用 6dof LSM6DS0 IMU单元(带加速度计和陀螺仪)。我试图计算所有三个轴的旋转角度。我尝试过may方法,但没有按预期得到结果。

尝试的方法:

(i)补充过滤器方法 - 我可以使用链接Angle comutation method中提供的公式获取角度。

但问题是角度并不一致并且漂移很多。此外,当IMU围绕一个轴旋转时,在其他轴上计算的角度会摆动太多。

(ii)基于四元数的角度计算:有大量资源声称使用四元数方法很好地计算角度,但没有一个有明确的解释。我使用this method来更新从IMU单元获取的每个值的四元数。但链接dint解释了如何从四元数计算角度。

我使用了 glm math 库来将四元数转换为欧拉角,并尝试了wiki link中指定的公式。使用这种方法,因为在音高计算中只返回-90到+90度,我无法像在上述链接中那样在3D中旋转对象。

有没有人尝过四元数进行角度转换?我需要在0到360度或-180到+180度的范围内计算所有三个轴周围的角度。

任何帮助都可以得到真正的赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:0)

http://davidegironi.blogspot.com.ar/2013/02/avr-atmega-mpu6050-gyroscope-and.html#.VzjDKfnhCUk

  Sq = [q0, q1, q2, q3]
  //sensor quaternion can be translated to aerospace sequence of yaw/pitch/roll angles
  yaw = atan2(2*q1*q2 - 2*q0*q3, 2*(q0^2) + 2*(q1^2) - 1)
  pitch = -asin(2*q1*q3 + 2*q0*q2)
  roll = atan2(2*q2*q3 - 2*q0*q1, 2*(q0^2) + 2*(q3^2) - 1)