我正在使用Madgwick Algorithim的C ++实现,校准了我的传感器(加速度计,磁力计和陀螺仪)。一切似乎运作良好,但当我将传感器置于垂直位置(俯仰到90度)时,其他角度开始做奇怪的事情。这就是我得到的: Matlab plot problem
事实上,我得到的角度是正确的,但以不同的方式表达。我应该只得到:
但我明白了:
两个结果都一样,对吗?我的问题是:
答案 0 :(得分:0)
不,你无法通过万向节锁定传感器,因为它是你移动的物理对象。
万向节锁是指如果你在哪里移动2个角度的状态,它们对旋转的效果会相同。它不是错误,而是特定的旋转状态。但如果你亲自用手移动物体,万向锁是不可能的。维基百科有一个很棒的GIF:
万向节锁定的飞机。当俯仰(绿色)和偏航(洋红色)万向节变得对齐时,滚动(蓝色)和偏航的变化将相同的旋转应用于飞机。
然而,请注意,万向节锁定的原因可能是您的数据的原因:在欧拉角中,有多组角度给出完全相同的终点。你的系统给你哪一个?你不知道。取决于用于为您提供数据的传感器和算法。
确保您的进一步数学是一致的好方法,并且知道2次旋转是相同的是将测量值转换为四元数。这些对于每次旋转都是独一无二的,可以帮助您更好地了解旋转发生的情况。