剛體姿態運動學06 尤拉角(Euler Angle)與萬向鎖(Gimbal Lock)推導
尤拉角(Euler Angle)與萬向鎖(Gimbal Lock)
除了四元數之外,尤拉角(Euler angle)也是一種姿態表示方法。其雖然有一些計算上的缺點,比如說其中的弦波函數(sinusoidal function)會使計算機運算速度較四元數慢,或是特定情況會有奇異點(singularity)問題等等,但相對四元數較為直觀可想像,因此現實中仍可以看到許多它的應用。
本篇前段會先解釋尤拉角的定義及推導過程,然後解釋奇異點問題,也就是萬向鎖(gimbal lock)。
尤拉角(Euler Angle)
首先來回顧前面章節提及的旋轉矩陣
\(\mathbf{R}(\mathbf{u},\phi)\)
其內部包含一個轉動軸三維向量 $\mathbf{u}$ 以及一個轉動角度 $\phi$,表示如下:
世界座標 $R_0$ 各軸的單位向量分別為:
- $\mathbf{i}_0 = [1,0,0]^T$
- $\mathbf{j}_0 = [0,1,0]^T$
- $\mathbf{k}_0 = [0,0,1]^T$
將 $\mathbf{u}$ 分別代入,可得三個旋轉矩陣:
X 軸旋轉
\(\mathbf{R}(\varphi_x) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\varphi_x & -\sin\varphi_x \\ 0 & \sin\varphi_x & \cos\varphi_x \end{bmatrix}\)
Y 軸旋轉
\(\mathbf{R}(\varphi_y) = \begin{bmatrix} \cos\varphi_y & 0 & \sin\varphi_y \\ 0 & 1 & 0 \\ -\sin\varphi_y & 0 & \cos\varphi_y \end{bmatrix}\)
Z 軸旋轉
\(\mathbf{R}(\varphi_z) = \begin{bmatrix} \cos\varphi_z & -\sin\varphi_z & 0 \\ \sin\varphi_z & \cos\varphi_z & 0 \\ 0 & 0 & 1 \end{bmatrix}\)
其中 $\varphi_x$、$\varphi_y$、$\varphi_z$ 定義為尤拉角。
旋轉順序與 Intrinsic Rotation
旋轉矩陣相乘有順序之分,常見六種排列:
- $X_0 - Y_0 - Z_0$
- $X_0 - Z_0 - Y_0$
- $Y_0 - X_0 - Z_0$
- $Y_0 - Z_0 - X_0$
- $Z_0 - X_0 - Y_0$
- $Z_0 - Y_0 - X_0$
以 $X_0 - Y_0 - Z_0$ 為例:
\[\mathbf{R}_E = \mathbf{R}(\varphi_z)\mathbf{R}(\varphi_y)\mathbf{R}(\varphi_x)\]此為 Intrinsic Rotation,每次旋轉後都產生新的座標系。
尤拉角萬向鎖(Gimbal Lock)數學推導
尤拉角的奇異點問題發生於其中一個角度為 $\pm 90^\circ$ 時,使三個自由度退化為兩個。
以 $X_0 - Y_0 - Z_0$ 為例,其整合旋轉矩陣為:
\[\mathbf{R}_E = \begin{bmatrix} \cos\varphi_z\cos\varphi_y & -\sin\varphi_z\cos\varphi_x + \cos\varphi_z\sin\varphi_y\sin\varphi_x & \sin\varphi_z\sin\varphi_x + \cos\varphi_z\cos\varphi_x\sin\varphi_y \\ \sin\varphi_z\cos\varphi_y & \cos\varphi_z\cos\varphi_x + \sin\varphi_z\sin\varphi_y\sin\varphi_x & -\cos\varphi_z\sin\varphi_x + \sin\varphi_z\sin\varphi_y\cos\varphi_x \\ -\sin\varphi_y & \cos\varphi_y\sin\varphi_x & \cos\varphi_y\cos\varphi_x \end{bmatrix}\]當 $\varphi_y = 90^\circ$ 時:
\[\mathbf{R}_E = \begin{bmatrix} 0 & \sin(\varphi_x-\varphi_z) & \cos(\varphi_x-\varphi_z) \\ 0 & \cos(\varphi_x-\varphi_z) & -\sin(\varphi_x-\varphi_z) \\ -1 & 0 & 0 \end{bmatrix}\]此時 $\varphi_x$ 與 $\varphi_z$ 軸向重疊,失去一個自由度,即為 Gimbal Lock。
示意圖

參考資料
- L. C. Biedenharn, J. D. Louck, Angular Momentum in Quantum Physics, Cambridge University Press, 1981.
- M. E. Rose, Elementary Theory of Angular Momentum, Courier Corporation, 1995.
- GuerrillaCG, Euler (gimbal lock) Explained, YouTube, 2009.
- 林昱廷,飛彈姿態運動之適應控制研究,碩士論文,國立臺灣科技大學,2021。
Leave a comment