【宇宙機制御入門】キネマティクスその2,オイラー角【第2弾】 | デイビッドの宇宙開発ブログ

【宇宙機制御入門】キネマティクスその2,オイラー角【第2弾】

前回の記事

【宇宙機制御入門】キネマティクスその1,DCM(方向余弦行列)【第1弾】
はじめに この記事は,宇宙機制御基礎講座の第1弾です.この講座では,宇宙機の主に姿勢力学・制御について,初学者の方が難しい専門書を読まずにサクッとエッセンスが習得できることを目指しています.また,そういった専門書では述べられない,理解...

 

はじめに

この講座では,宇宙機の主に姿勢力学・制御について,初学者の方が難しい専門書を読まずにサクッとエッセンスが習得できることを目指しています.また,そういった専門書では述べられない,理解の近道やちょっとした工夫なども盛り込むようにしています.

宇宙工学の分野,特に宇宙機の制御に関する専門書は和書にはほとんどないのが現状です.またそういった専門書は,初学者にはあまりにも難解で途方にくれてしまいます.院試や学科の勉強で苦労される方も多いと思います.実際に筆者もそうでしたしなんなら今もよく困ります笑.そのような方が,まずは手軽に学習のとっかかりを得て・概観と本質を上手くつかんでいただくサポートができれば,と考えています.不明点などがあれば,ぜひ気軽にコメントいただければ,追記させていただきます!

姿勢の表記には,座標系が大切です.ある座標での姿勢と別の座標での姿勢は,座標を取っ払えば同じ姿勢です.しかしながら計算していく上で何かしら量を与えなくてはいけません,そこで,どのように姿勢を表記して,どのように二つの座標間で変換計算を行うかを考えるべきです.

キネマティクス表現

おさらいですが,方式には,

  1. DCM(Direction cosine matrix)方向余弦行列
  2. オイラー角
  3. クォータニオン

がありました.

今回はオイラー角についてです.

オイラー角によるDCM表現

基底ベクトルまわりの回転を表現すると,{\bf i_1}軸まわりに角\thetaの回転移動を行う座標変換は,s\theta=\sin\theta,\ c\theta=\cos\thetaとすると,

    \begin{eqnarray*} \left\{\begin{matrix}{\bf b_1}\\{\bf b_2}\\{\bf b_3}\end{matrix}\right\} =\begin{bmatrix}1&0&0\\0&c\theta&s\theta\\0&-s\theta&c\theta\end{bmatrix}=\left\{\begin{matrix}{\bf i_1}\\{\bf i_2}\\{\bf i_3}\end{matrix}\right\}\end{eqnarray*}

となるため,DCMは,

    \begin{eqnarray*} C^1\left(\theta\right)=\begin{bmatrix}1&0&0\\0&c\theta&s\theta\\0&-s\theta&c\theta\end{bmatrix}\end{eqnarray*}

同様に,{\bf i_2}軸,{\bf i_3}軸まわりのDCMは,

    \begin{eqnarray*} C^2\left(\theta\right)=\begin{bmatrix}c\theta&0&-s\theta\\0&1&0\\s\theta&0&c\theta\end{bmatrix}\end{eqnarray*}

    \begin{eqnarray*} C^3\left(\theta\right)=\begin{bmatrix}c\theta&s\theta&0\\-s\theta&c\theta&0\\0&0&1\end{bmatrix}\end{eqnarray*}

これら3つの回転行列を組み合わせることによって,任意の回転変換を表現することができるます.

 

例えば,
慣性座標系\{{\bf i}\}からi軸-j軸-k軸,の順に各々\theta_1,\theta_2,\theta_3の回転移動を行い,物体座標系\{{\bf b}\}に変換される場合は,

    \begin{eqnarray*}\{{\bf b}\}=C^k(\theta_3)C^j(\theta_2)C^i(\theta_1)\{{\bf i}\}\end{eqnarray*}

となります.

よって,DCMは,

    \begin{eqnarray*}C=C^k(\theta_3)C^j(\theta_2)C^i(\theta_1)\end{eqnarray*}

と表現できます.

このときの\theta_1,\theta_2,\theta_3をオイラー角と呼んでおるわけですね.

航空宇宙系でよく使われるのが,3-2-1系,つまりi=3, j=2, k=1なので,

    \begin{eqnarray*}C=C^1(\theta_3)C^2(\theta_2)C^3(\theta_1)\end{eqnarray*}

    \begin{eqnarray*} C=&C^1(\theta_3)C^2(\theta_2)C^3(\theta_1)&\\ =&\begin{bmatrix}1&0&0\\0&c\theta_3&s\theta_3\\0&-s\theta_3&c\theta_3\end{bmatrix} \begin{bmatrix}c\theta_2&0&-s\theta_2\\0&1&0\\s\theta_2&0&c\theta_2\end{bmatrix} \begin{bmatrix}c\theta_1&s\theta_1&0\\-s\theta_1&c\theta_1&0\\0&0&1\end{bmatrix}&\\ =& \begin{bmatrix} c\theta_2 c\theta_1&c\theta_2 s\theta_1&-s\theta_2\\ s\theta_3 s\theta_2 c\theta_1-c\theta_3 s\theta_1&s\theta_3 s\theta_2 s\theta_1 +c\theta_3 c\theta_1&s\theta_3 c\theta_2\\ c\theta_3 s\theta_2 c\theta_1 + s\theta_3 s\theta_1&c\theta_3 s\theta_2 s\theta_1 - s\theta_3 c\theta_1&c\theta_3 c\theta_2\end{bmatrix}& \end{eqnarray*}

となります.煩雑すぎる.いまどきは便利なライブラリがあるので,この数式そのものを目にすることもなさそうですが,中身はこれが使われていることが多いです!

 

なぜ3-2-1系がよく使われるの?

  1. 姿勢の直感的表現: 3-2-1の回転順序は,実際の航空機や宇宙機の運動に対して直感的に理解しやすいためなのだそう.ピッチ,ロール,ヨーの各動作は,パイロットが直面する現実の操縦シナリオと密接に関連しているため,操縦やシミュレーションが容易にするメリットがある.
  2. 回転行列の組み立て: 3-2-1の順序では、各回転行列の積が比較的単純になり,数学的な扱いが他の順序に比べて容易になります.
  3. 数学的特性: 3-2-1のオイラー角では,ジンバルロック(ある回転角が特定の値になった際に,回転の自由度が失われる現象)のリスクが他の順序と比較して相対的に低い.;航空宇宙機では,ピッチ角が±90度を超える場合に,ロール軸とヨー軸が重なってしまい,回転の自由度が失われますが,そもそもピッチ角はそのような極端な値を取りづらいため,ジンバルロックのリスクが低い.

 

なお,DCM側が与えられている場合に,オイラー角を計算するには,以下の式が利用できます.

\theta_2 \theta_1 \theta_3
\sin^{-1}(-C_{ki}) {\rm atan2}(C_{kj}/c2, C_{kk}/c2) {\rm atan2}(C_{ji}/c2, C_{ii}/c2)
atan2 は、x座標とy座標を別々に引数として取り、原点から指定した点(x, y)への角度を計算します。MATLABなどで用意されている関数です.この関数は、全円(-π から π、すなわち -180度から180度)の範囲で角度を返し、四象限すべてを正確に識別できます。atan2は、xとyの正負に基づいて正しい角度を計算できるため、2次元空間で方向を特定するのに適しています。
一方のatan(アークタンジェント)は、与えられた数値(タンジェントの値)から角度を計算します。この関数は、-π/2 から π/2(-90度から90度)の範囲で角度を返します。入力はタンジェントの値(y/x)として与えられますが、xの値は考慮されないため、正確な角度を特定する情報が欠けています。

まとめ

今回はオイラー角による回転表現についてまとめました.航空宇宙以外でも,汎用的に利用される数学表現かなと,思いますので,ご参考になれば幸いです.

次はクォータニオンです!(クォータにオンって変換されがち.)

 

 

ほか記事もどうぞ.
【軌道力学入門】二体問題の基本方程式、軌道要素【第1弾】

【圧縮性流体力学入門】音速とマッハ数【第1弾】

    コメント

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