ロボット工学で座標変換をよく使うが、結構混乱しがちだ。
例えば、
- 同次変換行列はなぜ右からかけるのか
- 絶対座標系の回転と相対座標系の回転はなぜかける順番が逆になるのか
など、答えは「知っている」ものの、なぜそうなるのか、きちんと理解して説明できる人は意外に少ないのではないだろうか。教科書を見返してみても、結構ややこしい。私が一番わかりやすく説明できる気がするので書いてみる。
簡単のため、2次元の回転で説明するが、3次元の回転や、並進を含めた「同次変換」でも同様である。
まず、回転行列の使い方が複数あるので整理しておく。
回転行列の使い方①:ベクトルの回転
最も基本的な使い方は、ある座標系の中での、ベクトルの回転である。
角度だけ回転させる回転行列を用いて、回転後のベクトルは次式で求められる。
この回転行列は、左からかけるとベクトルがだけ回転するように作った行列であることを覚えておく。絶対座標系で回転させるには、回転行列を左からかける。回転行列の使い方②:座標系自体を表す
座標系の軸をベクトルと考えれば、座標系も同じ使い方で回転させることができる。
座標系を、X軸、Y軸の向きを表す単位ベクトルを並べた行列で
回転行列の使い方③:ベクトルの座標変換
もう一つの使い方は、座標変換である。ある座標系で、で表されるベクトルがあるとする。座標系のみを回転行列で角度だけ回転させると、回転後の座標系ではベクトルがだけ回転したベクトルの位置に見える。
つまり、
である。座標系の変換
、、の3つの座標系がある場合に、上記③の使い方の応用で、「座標系」を座標変換する。座標系は、絶対座標系を回転行列 で回転させたものであるとする。
上記③と同様に、回転「後」の座標系から見た(これをとする)を、回転「前」の座標系から見たに変換するために上記の回転行列 が使える。絶対座標系は単位行列であり、上記使い方②のように、それぞれの座標系自体が回転行列で表せる。
また、はに対する相対的な回転で表せる。これを とすると
したがって、(1)(2)(3)式より
となる。相対座標での回転を表す回転行列 を右からかけると合成した回転行列が求められることがわかる。座標系の数がもっと増えても同様である。
ロボット工学では、ロボットアームの各リンクとともに動く「リンク座標系」を定義する。リンク座標系で表した位置が、絶対座標系でどのように表されるか、を求めたいことが多いが、このときに座標系を相対回転させる行列をそのまま順に右からかけていくのは上記のような理屈による。