理系的な戯れ

理工学系とくにロボットやドローンに関する計算・プログラミング等の話題を扱って、そのようなことに興味がある人たちのお役に立てればと思っております。

オイラー角とは?回転表現の基礎からジンバルロックまで

オイラー角アイキャッチ

はじめに

ロボット工学や航空宇宙工学、ゲーム開発など、多くの分野で物体の姿勢(向き)を扱う際に使われる代表的な表現方法が「オイラー角(Euler angles)」です。オイラー角は直感的に姿勢を理解しやすい反面、使用方法を誤ると混乱しやすい特徴もあります。

この記事では、オイラー角の基本的な定義から回転行列を用いた具体的な表現方法までを丁寧に説明し、「ジンバルロック」と呼ばれる現象についても詳しく解説していきます。

オイラー角の基本

オイラー角は3次元空間における物体の向きを3つの連続した回転角度で表現する方法です。回転させる軸の順序が重要であり、その組み合わせは以下のように全部で12通り存在します。

  • 異なる3つの軸を順番に使う方法(6通り)
    • XYZ, XZY, YXZ, YZX, ZXY, ZYX
  • 同じ軸を複数回使う方法(6通り)
    • XYX, XZX, YXY, YZY, ZXZ, ZYZ

この中で、航空工学やロボット工学では特にZYX(ヨー→ピッチ→ロール)の順序を採用することが一般的です。

具体的な軸の回転は以下のように定義されます。

  • ヨー角(Yaw, ψ):Z軸(上下軸)を中心とした回転
  • ピッチ角(Pitch, θ):Y軸(左右軸)を中心とした回転
  • ロール角(Roll, φ):X軸(前後軸)を中心とした回転

重要なのは、各回転が一つ前の回転で変化した新たな座標軸を基準にして行われる点です。例えばZYXオイラー角の場合、最初にZ軸を中心に回転し、その結果得られた新たな座標系のY軸を使って次の回転を行い、最後に同様に新たなX軸を使って回転を行います。

各軸の回転行列

各軸の回転行列は次のように示されます。

  • Z軸回転(ヨー角ψ)

R_z(\psi) = \begin{bmatrix}
\cos\psi & -\sin\psi & 0 \\
\sin\psi & \cos\psi & 0 \\
0 & 0 & 1
\end{bmatrix}
  • Y軸回転(ピッチ角θ)

R_y(\theta) = \begin{bmatrix}
\cos\theta & 0 & \sin\theta \\
0 & 1 & 0 \\
-\sin\theta & 0 & \cos\theta
\end{bmatrix}
  • X軸回転(ロール角φ)

R_x(\phi) = \begin{bmatrix}
1 & 0 & 0 \\
0 & \cos\phi & -\sin\phi \\
0 & \sin\phi & \cos\phi
\end{bmatrix}

姿勢を表す回転行列(方向余弦行列)

ZYXオイラー角を使った姿勢を表す回転行列は、Z軸、Y軸、X軸の順に回転を適用したものとなります。


R = R_z(\psi) R_y(\theta) R_x(\phi)

この行列を展開した結果は以下のようになります。


R = \begin{bmatrix}
\cos\psi\cos\theta & \cos\psi\sin\theta\sin\phi - \sin\psi\cos\phi & \cos\psi\sin\theta\cos\phi + \sin\psi\sin\phi \\
\sin\psi\cos\theta & \sin\psi\sin\theta\sin\phi + \cos\psi\cos\phi & \sin\psi\sin\theta\cos\phi - \cos\psi\sin\phi \\
-\sin\theta & \cos\theta\sin\phi & \cos\theta\cos\phi
\end{bmatrix}

回転行列は直交行列であり、以下の性質があります。

  • 逆行列が転置行列に等しい  { R^{-1} = R^T }
  • 行列の各列(および各行)は互いに直交し、長さが1の単位ベクトルを成す

さらに、この回転行列はドローンなどの物体座標系(機体座標系)から地球座標系(慣性座標系)への座標変換行列としても機能します。また、この回転行列を転置することにより、地球座標系から物体座標系への逆の座標変換にも用いることができます。

回転順序による姿勢の違い

オイラー角の特徴として、回転順序を変えると同じ角度の組み合わせでも最終的な姿勢が異なります。その違いを以下の動画で確認してみましょう。

youtu.be

各回転がそれまでの回転で変化した新たな座標軸を基準にするため、回転の順序は非常に重要です。

ジンバルロックについて

オイラー角を使う場合の注意点として「ジンバルロック」があります。 たとえば2番目の軸(ピッチ角θ)が±90度になる場合、1番目(ヨー角ψ)と3番目の軸(ロール角φ)の回転が重なってしまい、ヨー角とロール角の区別がつかなくなる特異点が存在する問題です。

数学的には、オイラー角から回転行列を作成する際には常に一意に決まりますが、逆に回転行列(方向余弦行列)からオイラー角を逆算するときに、2番目の軸(ZYXオイラー角ではピッチ角θ)が±90度になる場合、オイラー角を逆算する際に次元が一つ落ちてしまい、一意にオイラー角が求められなくなります。これが数学的な「ジンバルロック」です。

この現象を回避するために、状況によってはクォータニオン(Quaternion)など他の回転表現を用いることがあります。

オイラー角の具体的な応用

ドローンの制御、航空機の姿勢表示、ゲーム内のキャラクター制御など、オイラー角は様々な分野で広く用いられています。

まとめ

オイラー角は直感的に理解しやすく広く普及していますが、回転順序やジンバルロックなどの問題もあるため、使用する際は注意が必要です。用途や状況に応じて適切な回転表現(クォータニオンや方向余弦行列)を選びましょう。

今後の記事では、クォータニオンとの比較や、実際のプログラムでの活用方法についてさらに詳しく解説していきます。