Madgwick IMU 90 度角

Madgwick IMU 90 Degrees Angles

我正在使用 Madgwick 算法的 C++ 实现,校准我的传感器(加速度计、磁力计和陀螺仪)。一切似乎都运行良好,但当我将传感器置于垂直位置(俯仰至 90 度)时,其他角度开始出现奇怪的现象。这就是我得到的: Matlab plot problem

其实我得到的角度是正确的,只是表达方式不同而已。我应该只得到:

但我得到:

两个结果是一样的吧?我的问题是:

不可以,您不能通过 Gimbal 锁定传感器,因为它是您移动的物理对象。

云台锁定指的是你从哪里移动2个角度,它们对旋转的影响是一样的。这不是错误,而是特定的旋转状态。但如果你是亲自用手移动物体,Gimbal lock 是不可能的。维基百科有一个很棒的 gif:

Gimbal locked airplane. When the pitch (green) and yaw (magenta) gimbals become aligned, changes to roll (blue) and yaw apply the same rotation to the airplane.

但是请注意,万向节锁定的原因可能是您的数据的原因:在欧拉角中,有多组角度给出完全相同的终点。你的系统给你哪一个?你不知道。取决于用于为您提供数据的传感器和算法。

确保您的进一步数学计算一致并知道 2 个旋转相同的好方法是将您的测量值转换为四元数。这些对于每个旋转都是独一无二的,将帮助您更好地了解发生了什么旋转。