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


示意圖

尤拉角示意圖


參考資料

  • 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