2017-01-30 110 views
0

我正在使用C++實現的Madgwick Algorithim,使我的傳感器(加速度計,磁力計和陀螺儀)校準。一切看起來都很順利,但是當我將傳感器置於垂直位置(俯仰角度達到90度)時,其他角度開始變得奇怪。這是我得到的: Matlab plot problemMadgwick IMU 90度角度

事實上,我得到的角度是正確的,但用不同的方式表達。我應該只得到:

  • 卷:0
  • 間距:90
  • 偏航:-150

,但我得到:

  • 卷:-180
  • Pitch:90
  • 偏航:50

兩個結果都是一樣的吧?我的問題是:

  • 這是萬向節鎖定問題嗎?
  • 據我所知,Gimbal Lock應該會在角度上出現錯誤,但是我會把它們弄好。 Madgwick算法是否試圖避免Gimbal Lock?

回答

0

不,你不能鎖定傳感器,因爲它是你移動的物理物體。

萬向節鎖指的是一個狀態,如果你在哪裏移動2個角度,它們對旋轉會產生相同的效果。這不是一個錯誤,而是一個特定的旋轉狀態。但如果您親自手動移動物體,則不可能使用Gimbal鎖。維基百科有一個輝煌的GIF:

enter image description here

萬向鎖定飛機。當俯仰(綠色)和偏航(品紅色)萬向節對齊時,滾動(藍色)和偏航的改變對飛機施加相同的旋轉。

但是,請注意,萬向節鎖定的原因可能是數據的原因:在歐拉角度中,有多組角度給出完全相同的終點。你的系統給你哪一個?你不知道。取決於用於提供數據的傳感器和算法。

確保您進一步數學的一個好方法是一致的,並且知道兩個旋轉是相同的,就是將您的測量值轉換爲四元數。這些對於每次輪換都是獨一無二的,並且可以幫助您更好地瞭解旋轉發生的原因。