1. 程式人生 > >[SLAM](3-4):四元數的定義與計算

[SLAM](3-4):四元數的定義與計算

結合 高翔老師的著作《視覺SLAM十四講:從理論到實踐》,加上小白的工程經驗共同完成。


1.四元數的定義

        旋轉矩陣用九個量描述三自由度的旋轉,具有冗餘性:尤拉角與旋轉向量是緊湊的,但是具有奇異性。事實上,我們找不到不帶奇異性的三維向量描述方式。

奇異性舉例解釋為:

當我們想用兩個座標表示地球表面時(如經度和維度),必定存在奇異性(維度為\pm 90°時經度無意義)。

        我們用複數集表示複平面上的向量,而複數的乘法則能表示複平面上的旋轉:例如,乘上覆數 i 相當於逆時針把一個復向量旋轉90度。四元數是Hamilton找到的一種擴充套件的複數,它既是緊湊的,也沒有奇異性。如果說缺點的話,四元數不夠直觀,其運算稍微複雜一些。

        一個四元數 q 擁有一個實部和三個虛部。如:

                                             q = q_{0} + q_{1}i + q_{2}j + q_{3}k

        其中 i , j , k 為四元數的三個虛部。這三個虛部滿足關係式:

                                             \left\{\begin{matrix} i^{2}=j^{2}=k^{2}=-1\\ ij=k,ji=-k\\ jk=i,kj=-i\\ ki=j,ik=-j \end{matrix}\right.

        有時人們也用一個標量和一個向量來表達四元數:

                                     q=[ s,v ], s=q_{0}\epsilon \Re,v=\begin{bmatrix} q_{1}\\ q_{2}\\ q_{3} \end{bmatrix}\varepsilon \Re ^{3},

        這裡s稱為四元數的實部,而 v 稱為它的虛部。如果一個四元數的實部為零,稱之為實四元數。反之,若讓門的實部為零,稱之為虛四元數。

        我們能用單位四元數表示三維空間中任意一個旋轉。乘以 i 對應著旋轉180度,而 i^{2}

,意味著繞 i 軸旋轉360度後,你得到了一個相反的東西。這個東西要旋轉兩週才會和它原先的樣子相等。

        假設某個旋轉是繞單位向量 n = \begin{bmatrix} n_{x}\\ n_{y}\\ n_{z} \end{bmatrix} 進行了角度 \theta 的旋轉,那麼這個旋轉的四元數形式為: 

                                                                 q = \begin{bmatrix} cos\frac{n}{2}\\ n_{x}sin\frac{n}{2}\\ n_{y}sin\frac{n}{2}\\ n_{z}sin\frac{n}{2} \end{bmatrix}.

        反之,我們亦可從單位是四元數中計算出對應旋轉軸夾角

                                                                   \left\{\begin{matrix} \theta = 2 arccos q_{0}\\ \begin{bmatrix} n_{x}\\ n_{y}\\ n_{x} \end{bmatrix}=\begin{bmatrix} q_{1}\\ q_{2}\\ q_{3} \end{bmatrix}/sin\frac{\theta }{2} \end{matrix}\right.

        在四元數中嗎,任意的旋轉都可以由兩個互為相反數的四元數表示。同理,取 \theta為0,則得到一個沒有旋轉的四元數:

                                                                q_{0} = \begin{bmatrix} \pm 1\\ 0\\ 0\\ 0 \end{bmatrix}


《視覺SLAM十四講:從理論到實踐》 PDF資源

下載連結:https://download.csdn.net/user/robot_starscream/uploads

此資源僅供各位研究員試讀,請購買紙質書籍。