テーブルの上のカップをつかむとき、私たちは肩を何度回し、肘を何度曲げるかをいちいち考えません。手をカップまで伸ばそうと思えば、関節が自然に角度を合わせます。ロボットはこの動作を計算で実現しなければなりません。指先が向かう位置から逆に関節角度を求めるこの計算が、「逆運動学(Inverse Kinematics)」です。
逆運動学とは、簡単にいえば「ロボットアームの先端に付いた手や工具を、望む位置と向きに配置するには、各関節をどれだけ回転させたり伸ばしたりすればよいかを求める問題」を意味します。ロボットの作業は指先で行われますが、モーターは関節に取り付けられているため、この両者をつなぐ逆運動学は、ロボットアームを動かすほぼすべての過程に関わります。
本資料では、順運動学と逆運動学の違いから、解が複数あったり存在しなかったりする厄介な性質、そして問題の解き方と現場での活用まで、順に見ていきます。

指先の目標を関節の動きに変える計算
順運動学と逆運動学は何が違うのか?

ロボットアームは、硬い棒であるリンク(Link)を関節(Joint)でつなぎ合わせた鎖状の構造です。この鎖の先端で、実際に物をつかんだり溶接したりする部分を、エンドエフェクタ(End Effector)と呼びます。
(1) 順運動学(Forward Kinematics)
すべての関節角度が分かっているときに、指先がどこにあるかを求める計算です。リンクの長さと角度を三角関数で順につなげていけばよいため、解は一意にすっきりと求まります。
(2) 逆運動学(Inverse Kinematics)
反対に、指先が向かうべき位置と向きを決めておき、関節角度を逆に求める計算です。人がロボットに出す指示は、たいてい「このねじの上へ移動せよ」のように指先を基準にしているため、実際の作業では逆運動学がはるかによく使われます。
人の腕にたとえると、順運動学は「肩を30度、肘を90度曲げると、手はどこに届くか」を問うもので、逆運動学は「カップの取っ手に手を添えるには、肩と肘を何度曲げればよいか」を問うものです。順運動学は計算をそのまま進めればよいのですが、逆運動学は複数の関節が絡み合う非線形方程式を解かなければならず、はるかに難しくなります。
解が複数ある、あるいは存在しない厄介な問題

逆運動学が難しい理由は、計算量だけではありません。同じ目標でも、状況によって解の数が変わります。
(1) 解が複数ある場合
同じカップをつかむ場合でも、肘を上げることも下げることもできます。産業用の6軸ロボットのうち、手首関節の三軸が一点で交わる構造では、ある姿勢に対して最大8通りの解が得られます。
(2) 解が無限にある場合
関節が7個あるロボットアームのように、自由度が必要な数より多いと、指先を固定したまま肘だけをぐるりと回すといった形で、解が無限に生まれます。このようなロボットを冗長ロボット(Redundant Robot)といいます。
(3) 解が存在しない場合
腕が届かない遠い場所や、関節を曲げられない方向に対しては、どれだけ計算しても解がありません。指先が届く空間を作業空間(Workspace)と呼びます。
- 特異点(Singularity):腕をまっすぐ伸ばしたり、関節軸が一直線に重なったりする姿勢では、指先を特定の方向へ動かせなくなり、その付近では、わずかな動きでも関節を急速に回転させる必要があります。
逆運動学を解くための二つの方法

逆運動学を解く方法は、大きく分けると、数式で一度に解く方法と、少しずつ目標に近づける方法に分かれます。
(1) 解析的方法(Analytical Method)
ロボットの幾何学的構造を利用して、関節角度を公式から直接求めます。1968年、米国スタンフォード大学のドナルド・パイパー(Donald L. Pieper)は、手首の三軸が一点で交わる6軸ロボットであれば、手首の位置と手の向きを分けて公式で解けることを示しました。多くの産業用ロボットが手首をこの構造にしているのは、そのためです。
(2) 数値的方法(Numerical Method)
最初に推定した姿勢から出発し、目標との差を少しずつ縮めていきます。関節がわずかに動いたときに指先がどれだけ動くかを表すヤコビ行列(Jacobian Matrix)を使って反復計算する方法が代表的で、どのような構造のロボットにも使えるという利点があります。ただし、開始姿勢によって異なる解に到達することがあり、特異点の近くでは計算が不安定になりやすいため、動きを意図的に少し抑えて安定させる減衰最小二乗法(Damped Least Squares)などの補完策を併用します。
- ヒューリスティック法(Heuristic Method):関節を順に回転させて合わせる巡回座標降下法(Cyclic Coordinate Descent)や、2011年に発表されたFABRIK(Forward And Backward Reaching Inverse Kinematics)のように、簡単な規則を繰り返すことで、近似解を素早く求めます。
現場で使われる逆運動学

逆運動学は、工場から画面の中のキャラクターまで、指先や足先を正確な位置へ動かす必要がある場所なら、どこでも使われます。
- 産業用ロボット(Industrial Robot):溶接線や塗装経路を指先の座標で指定すると、制御装置が刻々と関節角度に変換してモーターを動かします。
- 歩行ロボット(Legged Robot):次に足を置く位置を先に決め、膝と足首の角度を逆運動学で計算して、でこぼこした地面を歩きます。
- 手術ロボット(Surgical Robot):医師が操作装置で動かした手の動きを、体内に挿入された細い器具の先端の目標位置に変換し、その位置を実現する関節角度をリアルタイムで計算します。
- コンピュータアニメーション(Computer Animation):ゲームのキャラクターが階段を上るときに、足が床を突き抜けたり空中に浮いたりしないよう、足先を地面に合わせ、脚の関節角度を自動的に求めます。
逆運動学は、指先が向かうべき目標から出発し、関節角度を逆に求める計算です。解が複数あったり存在しなかったりするうえ、特異点という落とし穴もありますが、幾何学的構造を生かした公式と反復計算のおかげで、今日ではロボットアームや歩行ロボット、画面の中のキャラクターまで自然に動けるようになりました。
関節の一つひとつを考える前に、指先が届くべき目標を明確に定めること。それが、正確なロボット動作への第一歩です。