1. 歐拉角
1.1. 歐拉角的定義
歐拉角是一組三個角度,用于描述一個剛體在三維空間中的定向關系。具體來說,它們表示從一個固定參考坐標系到剛體坐標系的一系列旋轉。常見的定義方式是將總體旋轉分解為三個連續的簡單旋轉,每次旋轉都繞著當前坐標系的某一固定軸進行。
例如,一種常用的歐拉角序列是 Z–Y–X(或稱為航向、俯仰、滾轉順序),其含義如下:
- Yaw 第一個旋轉(航向/偏航):繞固定坐標系的 Z 軸旋轉角度 ψ \psi ψ;
- Pitch 第二個旋轉(俯仰):繞新坐標系的 Y 軸旋轉角度 θ \theta θ;
- Roll 第三個旋轉(滾轉):繞再次更新后的 X 軸旋轉角度 ? \phi ?。
這種分解使得三維旋轉問題轉化為三個獨立旋轉角度的疊加。
1.2. 歐拉角的公式
以 Z–Y–X 順序為例,剛體總旋轉矩陣 R R R 可以寫成三個旋轉矩陣的乘積:
R = R x ( ? ) ?? R y ( θ ) ?? R z ( ψ ) R = R_x(\phi) \; R_y(\theta) \; R_z(\psi) R=Rx?(?)Ry?(θ)Rz?(ψ)
其中:
-
繞 X 軸旋轉的矩陣:
R x ( ? ) = [ 1 0 0 0 cos ? ? ? sin ? ? 0 sin ? ? cos ? ? ] R_x(\phi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi \end{bmatrix} Rx?(?)=???100?0cos?sin??0?sin?cos?????
-
繞 Y 軸旋轉的矩陣:
R y ( θ ) = [ cos ? θ 0 sin ? θ 0 1 0 ? sin ? θ 0 cos ? θ ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry?(θ)=???cosθ0?sinθ?010?sinθ0cosθ????
-
繞 Z 軸旋轉的矩陣:
R z ( ψ ) = [ cos ? ψ ? sin ? ψ 0 sin ? ψ cos ? ψ 0 0 0 1 ] R_z(\psi) = \begin{bmatrix} \cos\psi & -\sin\psi & 0 \\ \sin\psi & \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz?(ψ)=???cosψsinψ0??sinψcosψ0?001????
將上述三個矩陣依次相乘,就可以得到描述剛體最終定向的旋轉矩陣 R R R
1.3. 歐拉角的常見問題
在使用歐拉角描述旋轉時,需要注意以下問題:
-
萬向鎖(Gimbal Lock)
以常見的ZYX歐拉角為例,即首先繞全局z軸旋轉,然后繞新的y軸旋轉,最后繞新的x軸旋轉。當第二次旋轉(即繞y軸的旋轉)旋轉角(例如上例中的 θ \theta θ)達到 ± 9 0 ° \pm90^\circ ±90° 時。
第一次和第三次旋轉將會圍繞同一個軸。這意味著,在這些特殊的角度下,系統失去了一個自由度,因為兩次旋轉現在作用于相同的軸,不能獨立地控制物體的方向。 -
多值性與奇異性
歐拉角存在多值性,即不同的角度組合可能表示相同的旋轉。此外,某些角度組合可能使反求公式退化,導致奇異性問題,增加了數值計算的復雜性。
2. 旋轉矩陣
2.1. 旋轉矩陣的定義
旋轉矩陣是一種用于描述剛體或坐標系在歐幾里得空間中旋轉變換的矩陣。其主要特點包括:
- 正交性:旋轉矩陣 R R R 滿足 R T R = I R^T R = I RTR=I,其中 R T R^T RT 為 R R R 的轉置, I I I 為單位矩陣。這一性質保證了向量的長度和旋轉前后向量間的夾角不變。
- 行列式為1:即 det ? ( R ) = 1 \det(R) = 1 det(R)=1,這一性質表明旋轉矩陣不含有鏡像或反射分量。
- 參數冗余性:在三維空間中,盡管旋轉矩陣有 9 個元素,但由于正交性和行列式約束,其實際自由度僅為 3 個。
2.2. 常見旋轉矩陣的公式
1. 二維旋轉矩陣
在二維平面上,繞原點逆時針旋轉角度 θ \theta θ 的旋轉矩陣為:
R ( θ ) = [ cos ? θ ? sin ? θ sin ? θ cos ? θ ] R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} R(θ)=[cosθsinθ??sinθcosθ?]
2. 三維旋轉矩陣
在三維空間中,常用的旋轉矩陣包括繞各個坐標軸旋轉的矩陣:
-
繞 X 軸旋轉角度 ? \phi ? 的矩陣:
R x ( ? ) = [ 1 0 0 0 cos ? ? ? sin ? ? 0 sin ? ? cos ? ? ] R_x(\phi) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi \end{bmatrix} Rx?(?)=???100?0cos?sin??0?sin?cos?????
-
繞 Y 軸旋轉角度 θ \theta θ 的矩陣:
R y ( θ ) = [ cos ? θ 0 sin ? θ 0 1 0 ? sin ? θ 0 cos ? θ ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry?(θ)=???cosθ0?sinθ?010?sinθ0cosθ????
-
繞 Z 軸旋轉角度 ψ \psi ψ 的矩陣:
R z ( ψ ) = [ cos ? ψ ? sin ? ψ 0 sin ? ψ cos ? ψ 0 0 0 1 ] R_z(\psi) = \begin{bmatrix} \cos\psi & -\sin\psi & 0 \\ \sin\psi & \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz?(ψ)=???cosψsinψ0??sinψcosψ0?001????
2.3. 旋轉矩陣的示例
1. 二維示例
設有一個二維向量 v = [ 1 0 ] \mathbf{v} = \begin{bmatrix} 1 \\ 0 \end{bmatrix} v=[10?