歐拉角插值思想總結---如何插值兩個歐拉角


本文講解的歐拉角旋轉順序為x,y,z。對應矩陣為[z][y][x]。當y為90°時會引起死鎖。

歐拉角插值問題分析。

答:事實1 . 單個歐拉角能夠正確表示旋轉無論死鎖還是不死鎖。但是當兩個歐拉角插值的時候,由於死鎖的存在,導致插值后的歐拉角表示的旋轉與原始的兩個歐拉角表示的旋轉差異很大。

         事實2. 一種旋轉可以用多種歐拉角表示。例如,x角度為100,與x角度為460其實是一樣的。X角度為-179其實和+179很接近。更有甚者,當出現死鎖的時候,同一種旋轉有無數種歐拉角表示。具體方法參照文章Computing Euler angles from a rotation matrix

         事實4. 當歐拉角接近死鎖的時候會引起抖動。例如48.5557    82.8384       48.0888以及   141.922       81.0177             142.027.這兩個歐拉角其實非常相近,但是除了y角之外其余兩個坐標差異比較大。因為兩個歐拉角的y旋轉角度都接近90°了,越靠近90°,y軸的微小變動就對xz兩個角度影響非常大,所以進行插值的時候直接進行插值會引起抖動。例如上面的插值結果可能為5.23894            90.9103       5.05811,這個結果與上面兩個原始角度所表達的方向都不一樣。

歐拉角插值解決方法

答:1. 將需要插值的兩個歐拉角轉化成矩陣,再通過矩陣分解出所有可能的歐拉角,找出兩個比較相近的歐拉角進行插值。用此種方法可能引起抖動,如事實4中所示,當y軸的角度靠近90°的時候,就算使用矩陣分解找出兩個最為相近的歐拉角,這兩個找出來的歐拉角還是會差異很大。因為y軸的小變化就會引起xz角度的大幅變化。

2.真正的解決方法

設有兩個歐拉角A,B進行插值。A,B兩角表示的旋轉是非常相似的,但是其角度數值差異比較大。其中A.y以及B.y接近90°。

步驟一:將A,B做同一個旋轉,例如將A,B都繞Y軸正方向旋轉45°。務必將旋轉后A.y和B.y的角度保持在70°以內。

步驟二:將旋轉后的A,B轉換成旋轉矩陣。

步驟三:將矩陣A和矩陣B分解出各種可能的歐拉角。

步驟四:找出A矩陣和B矩陣分解出來的所有的歐拉角中最為相近的兩個歐拉角。

步驟五:對這兩個歐拉角進行插值得到歐拉角C。

步驟六:將C繞y軸正方向旋轉-45°。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM