ロボットのための座標系表現で述べたように ロボットの動作や作業環境を座標系を用いて記述することには様々な利点がある.
そのためにはロボット自身を座標系を用いて記述する必要がある. それを扱うのがロボットアームの運動学である.
ここでは特にシリアルリンクと呼ばれる構造のロボットアームに限って説明を行うが, 移動台車に搭載したアームや人間型ロボットの場合でも適切に座標系および 移動パラメタや関節パラメタとその座標系との関係を適切に設定すれば 同様な扱いが可能である.
ここでは以下の3つのテーマを扱う.
まずは代表的なシリアルリンクアームの構造を示す.
ロボットアームの構造を簡単に図示する際の記号の例を示す. 3つの回転関節の回転軸は左が紙面に垂直,真ん中が紙面上方向,右が紙面横方向となっている.
ロボットのための座標系表現で述べたように 座標系で記述された世界の中でロボットアームを動かすためにはロボットアームの手先の座標系の 状態を知り,制御する必要がある.
アームの運動学では,アームのベースから見た手先(手首やハンド)の位置・姿勢 (すなわちその座標系)とアームの関節パラメタとの関係を求めるのが主な目的となる.
このとき各リンクに座標系を貼り付け,それら隣り合う座標系がそれを結び付けている 関節のパラメタにより逐次変換されることを利用することで運動学の問題を定式化することができる.
図6はアームのリンク(link)と関節(joint)の関係を示したものである. 一般的にロボットアームのリンクは剛体とみなすことができる1). 空間の剛体の力学を考える場合には,重心を原点に,慣性主軸を座標の各軸にとると便利であることが多い. しかしロボットアームの運動学を考える場合は,前のリンクに置かれた自身を駆動する関節を考え,関節パラメタが$0$の ときに関節座標系(joint frame)と一致し,関節パラメタを変えることでリンク座標系(link frame)が変化するという モデルで考えることが多い.
図7は回転関節,並進関節を例に関節座標系に対してリンク座標系が動かされる様子を描いたものである. シリアルリンクアームは図8のようにそのような関節-リンクが直列につながったものとなる. 図7のような単一の回転もしくは並進の関節の場合,座標系の原点は駆動軸上のどこに置いても数式的には 同様に扱うことが出来る. また駆動軸は必ずしも座標系の軸のどれかに合わせる必要はないが,そうすることで座標変換行列は簡単になる.
アームのリンクにこうした座標系を設定したイメージを図8に示す.
上記のような関節-リンクの関係を考えるとリンク$L_{i-1}$からリンク$L_i$への変換$^{i-1}T_i$は, リンク$L_{i-1}$から関節$J_i$の設置位置・姿勢への変換${^{i-1}T_{J_i}}$と,関節パラメタ$q_i$で動かされる部分の変換${^{J_i}T_i}(q_i)$に 分解されて以下のように書ける 2). $$ ^{i-1}T_i = {^{i-1}T_{J_i}}{^{J_i}T_i}(q_i) \tag{1} $$
各リンクに張り付ける座標系の設定方法はいろいろなものがある. ここでは,直感的に理解しやすい一般的な方法と 数学的にきれいで無駄のないDH(Denavit-Hartenberg,デナビット・ハーテンバーグ)法と の二つを説明する.
この座標系の設定の仕方は厳密な規則があるわけではない. それぞれ開発者がそれぞれの方針に従って設定しているものを ざっくりと俯瞰すると以下のようになっていることが多い.
上記のように座標系を設定するとで式(1)を一つにまとめて簡略化した場合にも分かりやすい簡単な座標変換行列になる.
この方法の利点は
である.
欠点は,
である.
総合的には後述のDH法が優れているように見えるが,実際には直感的な分かりやすさは何物にも代えがたい.とりわけ途中のリンク座標系が意味のある場所に置けるということは,CGによる表示,動力学計算,シミュレーションなどにとっても使いやすい.
上記の理由で,実際の場面ではDH法よりも直感的に理解しやすい設定にすることが多い.
この具体例は3自由度アームの順運動学などの項で示す.
DH法は,駆動軸をz軸に固定し,リンク間の変換を最小数のパラメタで表現することで座標系設定の恣意性を極力排除し 統一的な扱いを可能にするように工夫された方法である.
DH法の図はいろいろなところで紹介されているのでここでは文章で表現する.
各リンクに対する座標系の取り方は以下のようになる.
上記のように座標系を設定することでリンク$L_{i-1}$からリンク$L_i$への変換$^{i-1}T_i$は,
の4パラメタで表現出来る.
すなわち, $$ ^{i-1}T_i = \left( \begin{array}{cc} 1 & 0 & 0 & a_{i-1} \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right) \left( \begin{array}{cc} 1 & 0 & 0 &0 \\ 0 & \mathrm{cos}\, \alpha_{i-1} & - \mathrm{sin}\, \alpha_{i-1} & 0\\ 0 & \mathrm{sin}\, \alpha_{i-1} & \mathrm{cos}\, \alpha_{i-1} & 0 \\ 0 & 0 & 0 & 1\end{array} \right) \left( \begin{array}{cc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \end{array} \right) \left( \begin{array}{cc} \mathrm{cos}\, \theta_i & - \mathrm{sin}\, \theta_i & 0 & 0\\ \mathrm{sin}\, \theta_i & \mathrm{cos}\, \theta_i & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right) $$ $$ = \left( \begin{array}{cc} 1 & 0 & 0 &a_{i-1}\\ 0 & \mathrm{cos}\, \alpha_{i-1} & - \mathrm{sin}\, \alpha_{i-1} & 0 \\ 0 & \mathrm{sin}\, \alpha_{i-1} & \mathrm{cos}\, \alpha_{i-1} & 0 \\ 0 & 0 & 0 & 1\end{array} \right) \left( \begin{array}{cc} \mathrm{cos}\, \theta_i & - \mathrm{sin}\, \theta_i & 0 & 0 \\ \mathrm{sin}\, \theta_i & \mathrm{cos}\, \theta_i & 0 & 0 \\ 0 & 0 & 1 & d_i \\ 0 & 0 & 0 & 1 \end{array} \right) \tag{2} $$ 繰り返しに近いが各項の意味付けを説明すると,
1項目と2項目,3項目と4項目はそれぞれ同じ軸の並進と回転なので順序は入れ替えても同じ結果になる.
これをさらに計算すると, $$ ^{i-1}T_i = \left( \begin{array}{cc} \mathrm{c}(\theta_i) & -\mathrm{s}(\theta_i) & 0 &a_{i-1}\\ \mathrm{c}(\alpha_{i-1})\mathrm{s}(\theta_i) & \mathrm{c}(\alpha_{i-1})\mathrm{c}(\theta_i) & -\mathrm{s}(\alpha_{i-1}) & -\mathrm{s}(\alpha_{i-1}) d_i \\ \mathrm{s}(\alpha_{i-1})\mathrm{s}(\theta_i) & \mathrm{s}(\alpha_{i-1})\mathrm{c}(\theta_i) & \mathrm{c}(\alpha_{i-1}) & \mathrm{c}(\alpha_{i-1}) d_i \\ 0 & 0 & 0 & 1\end{array} \right) $$ となるが$\alpha_{i-1}$が$0$,$\pm{\pi/2}$,$\pi$の場合以外は簡略化につながらないのでこの形にするのは得策ではない.
DH記法の利点は,
である.
欠点は,
である.