1 minute read

尤拉角(Euler Angle)與萬向鎖(Gimbal Lock)

除了四元數之外,尤拉角(Euler angle)也是一種姿態表示方法。其雖然有一些計算上的缺點,比如說其中的弦波函數(sinusoidal function)會使計算機運算速度較四元數慢,或是特定情況會有奇異點(singularity)問題等等,但相對四元數較為直觀可想像,因此現實中仍可以看到許多它的應用。

本篇前段會先解釋尤拉角的定義及推導過程,然後解釋奇異點問題,也就是萬向鎖(gimbal lock)。

尤拉角(Euler Angle)

首先來回顧前面章節提及的旋轉矩陣
\(\mathbf{R}(\mathbf{u},\phi)\) 其內部包含一個轉動軸三維向量 $\mathbf{u}$ 以及一個轉動角度 $\phi$,表示如下:

\[\boldsymbol{\rho}_2 = \mathbf{R}(\mathbf{u},\phi)\boldsymbol{\rho}_1\] \[\boldsymbol{\rho}_2 = \underbrace{ \begin{bmatrix} u_x^2(1-\cos\phi)+\cos\phi & u_xu_y(1-\cos\phi)-u_z\sin\phi & u_xu_z(1-\cos\phi)+u_y\sin\phi \\ u_yu_x(1-\cos\phi)+u_z\sin\phi & u_y^2(1-\cos\phi)+\cos\phi & u_yu_z(1-\cos\phi)-u_x\sin\phi \\ u_zu_x(1-\cos\phi)-u_y\sin\phi & u_zu_y(1-\cos\phi)+u_x\sin\phi & u_z^2(1-\cos\phi)+\cos\phi \end{bmatrix} }_{\mathbf{R}(\mathbf{u},\phi)} \boldsymbol{\rho}_1\]

世界座標 $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

示意圖

尤拉角示意圖

參考資料

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

Leave a comment