====== 変換の連鎖 ====== 3x3の直交行列で表現された座標の姿勢変換(回転変換)や4x4の同時変換行列で表現された座標変換は,乗算により連鎖させることができる. その乗算は数の演算と異なり可換性がないので(交換法則が成り立たない)どの順で掛けていくかが重要になる. たとえばx軸周りに$ \alpha $回転する直交行列$R_x (\alpha) $,y軸周りに$ \beta $回転する直交行列$R_y (\beta) $とする. このとき, $$ R_x (\alpha) R_y (\beta)  \tag{1} $$ と $$ R_y (\beta) R_x (\alpha) \tag{2} $$ とで何がどう異なるか.このことを十分に理解しないと座標変換を使いこなすことは難しい. 式(1)は図1のようにx軸周りに$\alpha$回転させ,回転後のy'軸周りに$\beta$回転させる. 一方,式{2}は図2のようにy軸周りに$\beta$回転させ,回転後のx'軸周りに$\alpha$回転させる. ただし,これは$\alpha$,$\beta$が大きくない場合は違いが分かりにくい. [{{ articles:chain_01.png?200 | 図1 $R_x (\alpha) R_y (\beta)$ }}] [{{ articles:chain_02.png?200 | 図2 $R_y (\beta) R_x (\alpha) $ }}] そこで分かりやすいように$\beta=\pi/2$とした場合を例示する. 式(1)の場合は$\alpha$がいくつであっても変換後のz"軸は変換前のx軸に重なる(図3). しかし式(2)の場合は変換後のx'軸が変換前の-z軸方向になり,変換後のz"軸は変換前のxy平面で変化前のx軸を$-\alpha$回転 ((一般のxy平面内での回転と考えるとマイナスになる)) させたものになる(図4). 面白いことに式(2)は,x軸周りに$\alpha$回転させ,回転前のy軸周りに$\beta$回転させたものと一致する(図5). 図5は$\beta=\pi/2$に見えないかもしれないがy軸周りに$\pi/2$回転するとyz平面がyx平面に重なるようになる ことを理解して図を見るとよい. これを$R_x(\alpha)$で表される座標系を中心に考えると ((回転行列は座標系の座標軸の表現でもある)), 回転行列(たとえば$R_y (\beta)$)を右から掛けると$R_x(\alpha)$を基準として回転変換を行い, 左から掛けると元の座標系を基準として回転変換が行われることになる. [{{ articles:chain_03.png?200 | 図3 $R_x (\alpha) R_y (\pi/2)$ }}] [{{ articles:chain_04.png?200 | 図4 $R_y (\pi/2) R_x (\alpha) $ }}] [{{ articles:chain_05.png?200 | 図5 $R_y (\pi/2) R_x (\alpha) $の別解釈 }}] これは並進を含む同時座標による座標変換でも同様に成り立っている. たとえば図6のようにテーブル座標系$\Sigma_t$からみたハンド座標系$\Sigma_h$の座標変換$^tT_h$となっているとする. これにz軸方向に沿わせて移動させるために以下の座標変換 $$ T_z(d) = \left( \begin{array}{cc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d \\ 0 & 0 & 0 & 1 \end{array} \right) $$ を適用することを考える. ハンド座標の座標変換行列$^tT_h$に対して右から$T_z(d)$を掛けると図7のようにハンドのz軸にそって$d$移動する. 逆に,ハンド座標の座標変換行列$^tT_h$に対して左から$T_z(d)$を掛けると ((これは$^tT_h$のz軸並進成分に$d$を加えるだけの効果になる)) 図8のようにテーブルのz軸にそって$d$移動する. [{{ articles:chain_06.png?250 | 図6 $^tT_h$ }}] [{{ articles:chain_07.png?250 | 図7 $^tT_h T_z(d) $ }}] [{{ articles:chain_08.png?250 | 図8 $T_z(d) ^tT_h$ }}]