どうもこんにちは
一般に,剛体の運動方程式は2次元平面のみで習うことが多いのではないでしょうか.重心座標$x$,重心中心回転角$\theta$を変数に,こんな式です
\begin{eqnarray}
m \ddot x &=& F\\
I \ddot \theta &=& N\\
\end{eqnarray}
上の式はニュートンの運動方程式で,下の式は回転のオイラーの運動方程式です.
これを3次元に持ってくると,実現象を表現するには不十分です.この式では,ジャイロ効果の項が足りていません.
次の式になります.
\begin{eqnarray}
m \ddot x &=& F\\
I \ddot \theta + cross(\dot \theta) I \dot \theta &=& N
\end{eqnarray}
ここで$cross(\dot \theta)$は外積行列へ変形することを意味しています.
\begin{eqnarray}
v &=& \left(
\begin{array}{ccc}
a\\
b\\
c\\
\end{array}
\right)\\
cross(v) &=& \left(
\begin{array}{ccc}
0&-c&b\\
c&0&-a\\
-b&a&0\\
\end{array}
\right)
\end{eqnarray}
という変形です.実際,「ベクトル同士の外積」と「ベクトルの外積行列 × ベクトル」が同じ結果になります.というより,なるように作られた行列です.
と,一見して何を言っているのか,わからないと思いますが,一から丁寧に説明してみようと思います.
座標系について
運動方程式を立てる際の一番の難しいところは座標系です.
以下では,二つの座標系しか登場させません.
- 絶対座標系$O$ : 神視点・動かない座標系
- 慣性座標系$A$ : 対象物視点
例
・ジェットコースターで乗っている人の重心を原点とし,目の前をx方向などとした慣性座標系
すべて,絶対座標系で立てればええやんと最初は思うかもしれません,しかし,定ベクトル(成分が一定)は基本的に慣性座標系で記述した際です.
例
上の例では,「乗っている人の重心から目へのベクトル」は乗っている人の座標系では定ベクトルですが,絶対座標系では「乗っている人の位置・姿勢」によって変動してしまいます.
代数ベクトル
ある座標系から見た代数ベクトルを,別の座標系から見ると,同じ幾何ベクトルですが,x,y,z成分が変わります.座標系によって,x,y,zの方向が異なるためです.
こんがらがるのを防止するために,代数ベクトルの右上に,そのベクトルの表現座標系を常時記述します.
例
v^A
は座標系$A$で表現した代数ベクトル$v$です.
ここでベクトルの名称についてですが
- 幾何ベクトル:図・矢印,数値ではないため,どの座標系で見ているかは関係ない
- 代数ベクトル:成分が数値のベクトル,どの座標系で表したかで数値が異なる
- 変換ベクトル:幾何ベクトルを成分とする代数ベクトル
という使い分けをします.変換ベクトルについては,この後説明します.
座標変換行列
ある座標系での,その代数ベクトルがわかっているとき,別の座標系に変換する行列を定義できます.この行列を座標変換行列といいます.
座標系Aから座標系Oへの変換行列を$C_{OA}$と表すことにします.
v^O = C_{OA} v^A
この行列は,3次元で考えれば3*3の行列で座標系$O,A$に対し一意に定まります.
$C_{OA}$を移項し
v^A = C_{OA}^{-1} v^O
であるため,
C_{AO} = C_{OA}^{-1}
と言えます.実は
C_{OA}^{-1} = C_{OA}^T
という関係があります.
証明
新しく,ベクトルを成分に持つ,これまでとは違う,次の変換ベクトルを定義します.これまでベクトルといえば,成分は数値でした.
変換ペクトルは幾何ベクトルを成分にする,代数ベクトルです.
e_A = \left(
\begin{array}{ccc}
\vec e_{AX}\\
\vec e_{AY}\\
\vec e_{AZ}\\
\end{array}
\right)\\
$\vec e_{AX}$は座標系$A$の$x$方向の単位幾何ベクトルです.ここでベクトルの名称についてですが
- 幾何ベクトル:図・矢印,数値ではないため,どの座標系で見ているかは関係ない
- 代数ベクトル:数値,どの座標系で表したかで数値が異なる
- 変換ベクトル:上で作った,幾何ベクトルを成分とするベクトル
という使い分けがあります.
ここで,幾何ベクトル$\vec r$と変換ベクトルの内積を行います.
e_A \cdot \vec r =
\left(
\begin{array}{ccc}
\vec e_{AX} \cdot \vec r\\
\vec e_{AY} \cdot \vec r\\
\vec e_{AZ} \cdot \vec r\\
\end{array}
\right)\\
=
\left(
\begin{array}{ccc}
rベクトルを座標系Aで表現した時のx成分\\
rベクトルを座標系Aで表現した時のy成分\\
rベクトルを座標系Aで表現した時のz成分\\
\end{array}
\right)\\
=r^{A}
つまり,"幾何ベクトルを代数ベクトルへの変換を行う,変換ベクトル$e_A$" が定義できました.
$C_{OA}$は,$e_{AX}^O$を座標系$A$の$x$方向単位幾何ベクトルを$O$座標系で表した代数ベクトルとすると
C_{OA} = [e_{AX}^O , e_{AY}^O , e_{AZ}^O]
と書けます.例えば,単位代数ベクトルを掛けると
C_{OA} \left(
\begin{array}{ccc}
1\\
0\\
0\\
\end{array}
\right)
=e_{AX}^O
であることから,確認できます(A座標系でのx方向単位代数ベクトルを掛けると,O座標系で表現されたものになる).
ここで,$e_{AX}^O$は変換ベクトルを用いることで
e_{AX}^O = e_O \cdot \vec e_{AX}
と書けます.よって
\begin{eqnarray}
C_{OA} &=& [ e_O \cdot \vec e_{AX} , e_O \cdot \vec e_{AY}, e_O \cdot \vec e_{AZ}]\\
&=& e_O \cdot
\left(
\begin{array}{ccc}
\vec e_{AX} \\
\vec e_{AY} \\
\vec e_{AZ} \\
\end{array}
\right)^T\\
&=& e_O \cdot e_A^T
\end{eqnarray}
と変換ベクトル同士の内積で書けます.
$C_{AO}$についても同様の考えを適用すると
C_{AO}=e_A \cdot e_O^T
と書けます.転置を適用すると
\begin{eqnarray}
C_{AO}^T &=&(e_A \cdot e_O^T)^T\\
&=& e_O \cdot e_A^T\\
&=& C_{OA}
\end{eqnarray}
さらに,
C_{AO} = C_{OA}^{-1}
と合わせて
C_{OA}^{-1}= C_{OA}^T
が証明されました.
追加で必要な知識
座標変換行列は代数ベクトルだけでなく,変換ベクトルについても同様に適用できます.
e_O = C_{OA} e_A
なんとなく,正しいぐらいの理解で,私は証明できません.
しかし,
\left(
\begin{array}{ccc}
\vec e_{OX} \\
\vec e_{OY} \\
\vec e_{OZ} \\
\end{array}
\right) = C_{OA}
\left(
\begin{array}{ccc}
\vec e_{AX} \\
\vec e_{AY} \\
\vec e_{AZ} \\
\end{array}
\right)
こう書くとなんとなく正しく感じませんか(テキトウですね)
外積オペレータと座標変換行列
外積オペレータ$cross(v)$は外積行列へ変形することを意味しています.
\begin{eqnarray}
v &=& \left(
\begin{array}{ccc}
a\\
b\\
c\\
\end{array}
\right)\\
cross(v) &=& \left(
\begin{array}{ccc}
0&-c&b\\
c&0&-a\\
-b&a&0\\
\end{array}
\right)
\end{eqnarray}
という変形です.
ここで,座標変換行列をかけたベクトルに対して,外積オペレータを適用させてみましょう.
cross(C_{OA} v^A)
= C_{OA} cross(v^A) C_{OA}^T
また,左辺を変形し
cross(v^O)
=C_{OA} cross(v^A) C_{OA}^T
とも言えます.
証明
先ほどの変換ベクトル同士の計算を確認します.
e_A \cdot e_A^T =
\left(
\begin{array}{ccc}
\vec e_{AX}\cdot\vec e_{AX} &\vec e_{AX}\cdot\vec e_{AY} &\vec e_{AX}\cdot\vec e_{AZ} \\
\vec e_{AY}\cdot\vec e_{AX}&\vec e_{AY}\cdot\vec e_{AY}& \vec e_{AY}\cdot\vec e_{AZ}\\
\vec e_{AZ}\cdot\vec e_{AX}& \vec e_{AZ}\cdot\vec e_{AY}& \vec e_{AZ}\cdot\vec e_{AZ}\\
\end{array}
\right)\\
=\left(
\begin{array}{ccc}
1&0&0\\
0&1&0\\
0&0&1\\
\end{array}
\right)\\
あくまで,行列としての積の仕方をしながら,成分の演算は「$\cdot$内積」として計算しています.
同様に「$\times $外積」で行うと
\begin{eqnarray}
e_A \times e_A^T &=&
\left(
\begin{array}{ccc}
\vec e_{AX}\times\vec e_{AX} &\vec e_{AX}\times\vec e_{AY} &\vec e_{AX}\times\vec e_{AZ} \\
\vec e_{AY}\times\vec e_{AX}&\vec e_{AY}\times\vec e_{AY}& \vec e_{AY}\times\vec e_{AZ}\\
\vec e_{AZ}\times\vec e_{AX}& \vec e_{AZ}\times\vec e_{AY}& \vec e_{AZ}\times\vec e_{AZ}\\
\end{array}
\right)\\
&=&\left(
\begin{array}{ccc}
0&\vec e_{AZ}&-\vec e_{AY}\\
-\vec e_{AZ}&0&\vec e_{AX}\\
\vec e_{AY}&- \vec e_{AX}&0\\
\end{array}
\right)\\
&=& -cross(e_A)
\end{eqnarray}
という関係があります.
さらに,
e_O = C_{OA} e_A
を外積の関係に代入すると,
\begin{eqnarray}
cross(e_O) &=&- e_O \times e_O ^T \\
&=& - C_{OA} e_A \times (C_{OA} e_A )^T\\
&=&C_{OA} ( -e_A \times e_A ^T ) C_{OA}^T\\
&=&C_{OA} cross(e_A) C_{OA}^T
\end{eqnarray}
2行目から3行目で積の優先順位を変えています.外積では成立しないように思うかもしれませんが,外積はあくまで成分同士の計算で,行列の積として考えられるため,積の優先順位を変えることができます(結合法則が成立しているともいえる.).
証明を行っていきます.
\begin{eqnarray}
cross(v^O) &=& cross(e_O \cdot \vec v)\\
&=&cross(e_O) \cdot \vec v\\
&=&C_{OA} cross(e_A) C_{OA}^T \cdot \vec v\\
&=&C_{OA} cross(e_A \cdot \vec v) C_{OA}^T \\
&=&C_{OA} cross(v^A) C_{OA}^T
\end{eqnarray}
証明できました.2行目,5行目では$\vec v$を「積の順序・外積オペレータ内外への移動」を行っていますが,これは$\vec v$が定数のように扱えるためです.
ここで重要なことは,外積オペレータを付与したベクトルを座標変換すると,座標変換行列に挟まれた形になることです.
以上の基礎を踏まえ,次に角速度・速度・位置の運動学的関係をまとめます.