行列 5). オイラー角変換

行列

オイラー角変換の入り口

座標軸各軸まわりにて回転変換を行う行列については以下をご参照。

この座標軸廻りの回転行列を使って、3次元上の回転を行うのがオイラー角変換。

再度、オイラー角変換は

(3次元上の実回転を直接算出する(中心軸まわりに回転する)のではなく)、

”座標軸”を中心軸に使用し3度回転させる事により、回転後の座標を算出する変換
(3つの回転角をもつ)。

一般にはオイラー角と呼ばれる。

回転の中心軸を実際に使用しなくとも、 回転平面に直である座標軸を中心軸に使いながら回転すれば、3次元上のどの様な回転も3度以内の回転で再現できる事を言っているのがオイラー角(\( \small {R_{Euler}} \))。

つまり、 前の記事の ㉔、㉕、㉖式 を使えばよい。つまり、\( \small {R_\phi, R_\theta, R_\psi} \)の組合せ

3軸(X,Y,Z軸)全て使用する場合、もしくは2軸を交互の使用する場合がある。

以下の順で回転させる12種類が存在する。

  1. X 軸 -> Y 軸 -> Z 軸 : \( \small {(R_{Euler}=R_\psi\cdot R_\theta\cdot R_\phi}) \)
  2. X 軸 -> Z 軸 -> Y 軸 : \( \small {(R_{Euler}=R_\theta\cdot R_\psi\cdot R_\phi}) \)
  3. Y 軸 -> X 軸 -> Z 軸 : \( \small {(R_{Euler}=R_\psi\cdot R_\phi\cdot R_\theta}) \)
  4. Y 軸 -> Z 軸 -> X 軸 : \( \small {(R_{Euler}=R_\phi\cdot R_\psi\cdot R_\theta}) \)
  5. Z 軸 -> X 軸 -> Y 軸 : \( \small {(R_{Euler}=R_\theta\cdot R_\phi\cdot R_\psi}) \)
  6. Z 軸 -> Y 軸 -> X 軸 : \( \small {(R_{Euler}=R_\phi\cdot R_\theta\cdot R_\psi}) \)
  7. X0軸 -> Y 軸 -> X1軸 : \( \small {(R_{Euler}=R_{\phi1}\cdot R_\theta\cdot R_{\phi0}}) \)
  8. X0軸 -> Z 軸 -> X1軸 : \( \small {(R_{Euler}=R_{\phi1}\cdot R_\psi\cdot R_{\phi0}}) \)
  9. Y0軸 -> X 軸 -> Y1軸 : \( \small {(R_{Euler}=R_{\theta1}\cdot R_\phi\cdot R_{\theta0}}) \)
  10. Y0軸 -> Z 軸 -> Y1軸 : \( \small {(R_{Euler}=R_{\theta1}\cdot R_\psi\cdot R_{\theta0}}) \)
  11. Z0軸 -> X 軸 -> Z1軸 : \( \small {(R_{Euler}=R_{\psi1}\cdot R_\phi\cdot R_{\psi0}}) \)
  12. Z0軸 -> Y 軸 -> Z1軸 : \( \small {(R_{Euler}=R_{\psi1}\cdot R_\theta\cdot R_{\psi0}}) \)

どれでもオイラー角変換により3次元上の任意の回転が可能。

注記として、オイラー角による変換は、”回転させる軸の選択”とその”回転順序の決定”により各軸の回転角が決まる。
が、この逆はない。つまり、各軸の回転角が同じであっても回転順序が違えば、変換後の位置が異なる事に注意(∵ 行列の積に交換則は成り立たない : \( \small {R_a \cdot R_b ≠ R_b \cdot R_a} \) )

さて、イメージしやすいように、上記3つの回転角を、(船、飛行機、車等の回転角を表す)ヨー角 ψ 、ピッチ角 θ 、ロール角 φとしてISO/JISの定義と一致させておく。

(ヨー:Z軸まわりの回転(舵角)、ピッチ:Y軸まわりの回転(前後傾斜)、ロール:X軸まわりの回転(左右傾斜))

”座標系”を回転させる時の回転行列 (原点共有、任意の軸まわり)

”座標系”の回転 (回転順序:ヨー軸ψ ->ピッチ軸θ ->ロール軸φ

ヨー軸 -> ピッチ軸 -> ロール軸 の順に回転させる座標軸変換は、単に、㉔、㉕、㉖を順に組んだ行列を用いればよい

\( \begin{align}
\small{\left ( \begin{array}{c} a_{x1} \\ a_{y1} \\ a_{z1} \end{array} \right ) }
&= \small{R_\phi \cdot R_\theta \cdot R_\psi}
\small{\left ( \begin{array}{c}
a_{x0} \\ a_{y0} \\ a_{z0}
\end{array} \right ) } \\[8pt]
&= \scriptsize{\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 &\cos\phi & \sin\phi \\
0 & -\sin\phi & \cos\phi
\end{array} \right )}
\scriptsize{ \left( \begin{array}{ccc}
\cos\theta & 0 & -\sin\theta \\
0 & 1 & 0 \\
\sin\theta & 0 & \cos\theta
\end{array} \right )}
\scriptsize{ \left( \begin{array}{ccc}
\cos\psi & \sin\psi & 0 \\
-\sin\psi & \cos\psi & 0 \\
0 & 0 & 1
\end{array} \right )}
\small{\left ( \begin{array}{c}
a_{x0} \\ a_{y0} \\ a_{z0}
\end{array} \right ) } \\[8pt]
&=\scriptsize{\left( \begin{array}{ccc}
\cos\theta\cos\psi & \cos\theta\sin\psi & -\sin\theta \\
\sin\phi \sin\theta\cos\psi-\cos\phi\sin\psi &
\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi &
\sin\phi \cos\theta \\
\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi &
\cos\phi \sin\theta\sin\psi-\sin\phi\cos\psi &
\cos\phi \cos\theta
\end{array} \right )}
\small{\left ( \begin{array}{c}
a_{x0} \\ a_{y0} \\ a_{z0}
\end{array} \right ) }・・・㉗
\end{align}\)

\( \small{R_{\phi~\theta~\psi}=R_{\phi}\cdot R_{\theta}\cdot R_{\psi}} \) とすれば、\( \small{R_{\psi}、R_{\theta}、R_{\phi} }\) は全て正規直行行列である事から、その積\(\small{R_{\phi~\theta~\psi} }\) も正規直行行列。

よってその行ベクトルは、変換後の座標軸(X1Y1Z1軸)の方向を示す(各軸の方向余弦)。

\(
\small{R_{\phi~\theta~\psi} }
=\scriptsize{\left( \begin{array}{ccc}
\color{red}{\cos\theta\cos\psi} &\color{red} {\cos\theta\sin\psi} & \color{red} {-\sin\theta} \\
\color{blue}{\sin\phi \sin\theta\cos\psi-\cos\phi\sin\psi} &
\color{blue}{\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
\color{blue}{\sin\phi \cos\theta} \\
\color{green}{\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} &
\color{green}{\cos\phi \sin\theta\sin\psi-\sin\phi\cos\psi} &
\color{green}{\cos\phi \cos\theta}
\end{array} \right )}
\begin{array}{c}
← \color{red}{X_1軸 方向余弦} \\
← \color{blue}{Y_1軸 方向余弦} \\
← \color{green}{Z_1軸 方向余弦}
\end{array} \)

この 3つの回転角を組み合わせた \( \small{R_{\phi~\theta~\psi}=R_{\phi}\cdot R_{\theta}\cdot R_{\psi}} \) 行列は、物体の回転等の座標変換によく用いられる。
(オイラー角自体は、中心軸の回転順序/軸の選択の違いにより複数存在する)

再度。。。2次元であろうと、3次元空間であろうと、実際には物体はある一つの軸中心で回転する。オイラー角ではみての通り、その実際の回転軸/回転角は使っていない事に注意。

この角度変換においては、ヨー角方向(ψ) 、ピッチ角方向(θ) 、ロール角方向(φ)にわけて、各中心軸まわりに一度づつ、計3回回転させる事で、実際の回転を再現させている。
( ”回転前の座標-回転後の座標” を3つの角度を用いて関係づけている)。

”点”を回転させる時の回転行列 (原点共有、任意の軸まわり)

”点”の回転 (回転順序:ヨー軸ψ ->ピッチ軸θ ->ロール軸φ

さて、ある座標上にて点を回転させる場合

二次元の回転行列の時と考え方は同じ。この変換の回転行列 \(\small{R’_{\phi~\theta~\psi} }\) は \(\small{R_{\phi~\theta~\psi} }\) の逆行列。

ただ \(\small{R_{\phi~\theta~\psi} } \) の逆行列を直接計算をする必要はなく、正規直行行列であることを利用して、

\( \begin{align}
\small{R’_{\phi~\theta~\psi}} & =\small{(R_{\phi~\theta~\psi})^{-1}= (R_{\phi~\theta~\psi})^{tr}} \\[8pt]
&=\scriptsize{\left( \begin{array}{ccc}
\color{red}{\cos\theta\cos\psi} &
\color{blue}{\sin\phi \sin\theta\cos\psi-\cos\phi\sin\psi} &
\color{green}{\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} \\
\color{red} {\cos\theta\sin\psi} &
\color{blue}{\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
\color{green}{\cos\phi \sin\theta\sin\psi-\sin\phi\cos\psi} \\
\color{red} {-\sin\theta}&
\color{blue}{\sin\phi \cos\theta} &
\color{green}{\cos\phi \cos\theta}
\end{array} \right )}・・・㉘
\end{align} \)

(要は、R φθ ψ の行番号/列番号をひっくり返せばよい)

まとめ

ヨー軸(ψ) -> ピッチ軸(θ) -> ロール軸(φ) 順のオイラー角変換

“座標系”の回転ヨー軸(ψ) -> ピッチ軸(θ) -> ロール軸(ψ)

\(
\small{R_{\phi~\theta~\psi}}
=\scriptsize{\left( \begin{array}{ccc}
\color{red}{\cos\theta\cos\psi} &\color{red} {\cos\theta\sin\psi} & \color{red} {-\sin\theta} \\
\color{blue}{\sin\phi \sin\theta\cos\psi-\cos\phi\sin\psi} &
\color{blue}{\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
\color{blue}{\sin\phi \cos\theta} \\
\color{green}{\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} &
\color{green}{\cos\phi \sin\theta\sin\psi-\sin\phi\cos\psi} &
\color{green}{\cos\phi \cos\theta}
\end{array} \right )・・・㉗}
\)

“点”の回転ヨー軸(ψ) -> ピッチ軸(θ) -> ロール軸(ψ)

\(
\small{R’_{\phi~\theta~\psi}}
=\scriptsize{\left( \begin{array}{ccc}
\color{red}{\cos\theta\cos\psi} &
\color{blue}{\sin\phi \sin\theta\cos\psi-\cos\phi\sin\psi} &
\color{green}{\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} \\
\color{red} {\cos\theta\sin\psi} &
\color{blue}{\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
\color{green}{\cos\phi \sin\theta\sin\psi-\sin\phi\cos\psi} \\
\color{red} {-\sin\theta}&
\color{blue}{\sin\phi \cos\theta} &
\color{green}{\cos\phi \cos\theta}
\end{array} \right )}・・・㉘
\)

㉗、㉘式は逆行列。
(回転する向きが変わるだけなので、当然ではあるが。。)

ロール軸(φ) -> ピッチ軸(θ) ->ヨー軸(ψ) 順のオイラー角変換

ついでに、回転順序を変えた場合(ロール軸(φ) -> ピッチ軸(θ) ->ヨー軸(ψ))も記載。

“座標系”の回転

\( \begin{align}
\small{R_{\psi~\theta~\phi}}
&= \small{R_\psi\cdot R_\theta \cdot R_\phi} \\[8pt]
&= \scriptsize{ \left( \begin{array}{ccc}
\cos\psi & \sin\psi & 0 \\
-\sin\psi & \cos\psi & 0 \\
0 & 0 & 1
\end{array} \right )}
\scriptsize{ \left( \begin{array}{ccc}
\cos\theta & 0 & -\sin\theta \\
0 & 1 & 0 \\
\sin\theta & 0 & \cos\theta
\end{array} \right )}
\scriptsize{\left( \begin{array}{ccc}
1 & 0 & 0 \\
0 &\cos\phi & \sin\phi \\
0 & -\sin\phi & \cos\phi
\end{array} \right )} \\[8pt]
&=\scriptsize{\left( \begin{array}{ccc}
{\cos\theta\cos\psi} &
{\sin\phi \sin\theta\cos\psi+\cos\phi\sin\psi} &
{-\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} \\
{-\cos\theta\sin\psi} &
{-\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
{\cos\phi \sin\theta\sin\psi+\sin\phi\cos\psi} \\
{\sin\theta}&
{-\sin\phi \cos\theta} &
{\cos\phi \cos\theta}
\end{array} \right ) }
\end{align} \)

“点”の回転

\( \begin{align}
\small{R’_{\psi~\theta~\phi}} & =\small{(R_{\psi~\theta~\phi})^{-1}= (R_{\psi~\theta~\phi})^{tr}} \\[8pt]
\end{align} \)

つまり

“座標系”の回転:ロール軸(φ) -> ピッチ軸(θ) -> ヨー軸(ψ)

\(
\small{R_{\psi~\theta~\phi}}
=\scriptsize{\left( \begin{array}{ccc}
\color{red}{\cos\theta\cos\psi} &
\color{blue}{\sin\phi \sin\theta\cos\psi+\cos\phi\sin\psi} &
\color{green}{-\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} \\
\color{red} {-\cos\theta\sin\psi} &
\color{blue}{-\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
\color{green}{\cos\phi \sin\theta\sin\psi+\sin\phi\cos\psi} \\
\color{red} {\sin\theta}&
\color{blue}{-\sin\phi \cos\theta} &
\color{green}{\cos\phi \cos\theta}
\end{array} \right )}・・・㉙
\)

“点”の回転ロール軸(φ) -> ピッチ軸(θ) -> ヨー軸(ψ)

\(
\small{R’_{\psi~\theta~\phi}}
=\scriptsize{\left( \begin{array}{ccc}
\color{red}{\cos\theta\cos\psi} &\color{red} {-\cos\theta\sin\psi} & \color{red} {\sin\theta} \\
\color{blue}{\sin\phi \sin\theta\cos\psi+\cos\phi\sin\psi} &
\color{blue}{-\sin\phi \sin\theta\sin\psi+\cos\phi\cos\psi} &
\color{blue}{-\sin\phi \cos\theta} \\
\color{green}{-\cos\phi \sin\theta\cos\psi+\sin\phi\sin\psi} &
\color{green}{\cos\phi \sin\theta\sin\psi+\sin\phi\cos\psi} &
\color{green}{\cos\phi \cos\theta}
\end{array} \right )}・・・㉚
\)

㉙式のロール軸(φ) -> ピッチ軸(θ) ->ヨー軸(ψ)のオイラー角は、回転順序を逆にした㉗式のヨー軸(ψ) -> ピッチ軸(θ) -> ロール軸(φ) 順のオイラー角の逆行列にマイナス角を入れたもの。
-> 回転の動きをイメージすれば、これはすぐにわかるかと。。。

タイトルとURLをコピーしました