本文へ移動
雑学書庫好奇心が集まる場所
日本語

指先から関節を逆に解く、逆運動学(Inverse Kinematics)

テーブルの上のカップをつかむとき、私たちは肩を何度回し、肘を何度曲げるかをいちいち考えません。手をカップまで伸ばそうと思えば、関節が自然に角度を合わせます。ロボットはこの動作を計算で実現しなければなりません。指先が向かう位置から逆に関節角度を求めるこの計算が、「逆運動学(Inverse Kinematics)」です。

逆運動学とは、簡単にいえば「ロボットアームの先端に付いた手や工具を、望む位置と向きに配置するには、各関節をどれだけ回転させたり伸ばしたりすればよいかを求める問題」を意味します。ロボットの作業は指先で行われますが、モーターは関節に取り付けられているため、この両者をつなぐ逆運動学は、ロボットアームを動かすほぼすべての過程に関わります。

本資料では、順運動学と逆運動学の違いから、解が複数あったり存在しなかったりする厄介な性質、そして問題の解き方と現場での活用まで、順に見ていきます。

順運動学は関節角度から指先の位置と向きを求め、逆運動学は目標の位置と向きから関節角度を求める。平面2関節アームは同じ指先位置に2通りの姿勢で届き、アームの到達範囲を超えた目標には解がない。
逆運動学は、目標から関節の姿勢を求める問題です。下の比較は指先の位置だけを合わせる平面2関節の例で、実際の計算では目標の向き・関節の制限・衝突も考慮します。出典:Lynch・Park『Modern Robotics』第6章。

指先の目標を関節の動きに変える計算

順運動学と逆運動学は何が違うのか?

明るい実験室で、白い6軸ロボットアームが木製テーブルの上の陶器のカップに向かってグリッパーを伸ばし、その横に人の腕も並んでいる様子

ロボットアームは、硬い棒であるリンク(Link)を関節(Joint)でつなぎ合わせた鎖状の構造です。この鎖の先端で、実際に物をつかんだり溶接したりする部分を、エンドエフェクタ(End Effector)と呼びます。

(1) 順運動学(Forward Kinematics)
すべての関節角度が分かっているときに、指先がどこにあるかを求める計算です。リンクの長さと角度を三角関数で順につなげていけばよいため、解は一意にすっきりと求まります。

(2) 逆運動学(Inverse Kinematics)
反対に、指先が向かうべき位置と向きを決めておき、関節角度を逆に求める計算です。人がロボットに出す指示は、たいてい「このねじの上へ移動せよ」のように指先を基準にしているため、実際の作業では逆運動学がはるかによく使われます。

人の腕にたとえると、順運動学は「肩を30度、肘を90度曲げると、手はどこに届くか」を問うもので、逆運動学は「カップの取っ手に手を添えるには、肩と肘を何度曲げればよいか」を問うものです。順運動学は計算をそのまま進めればよいのですが、逆運動学は複数の関節が絡み合う非線形方程式を解かなければならず、はるかに難しくなります。


解が複数ある、あるいは存在しない厄介な問題

明るい作業台の上で、同じ卓上ロボットアームが並び、同じ金属球にグリッパーを当てているが、片方は肘を高く上げ、もう片方は低く曲げている様子

逆運動学が難しい理由は、計算量だけではありません。同じ目標でも、状況によって解の数が変わります。

(1) 解が複数ある場合
同じカップをつかむ場合でも、肘を上げることも下げることもできます。産業用の6軸ロボットのうち、手首関節の三軸が一点で交わる構造では、ある姿勢に対して最大8通りの解が得られます。

(2) 解が無限にある場合
関節が7個あるロボットアームのように、自由度が必要な数より多いと、指先を固定したまま肘だけをぐるりと回すといった形で、解が無限に生まれます。このようなロボットを冗長ロボット(Redundant Robot)といいます。

(3) 解が存在しない場合
腕が届かない遠い場所や、関節を曲げられない方向に対しては、どれだけ計算しても解がありません。指先が届く空間を作業空間(Workspace)と呼びます。

  • 特異点(Singularity):腕をまっすぐ伸ばしたり、関節軸が一直線に重なったりする姿勢では、指先を特定の方向へ動かせなくなり、その付近では、わずかな動きでも関節を急速に回転させる必要があります。

逆運動学を解くための二つの方法

明るい大学の研究室でロボット工学者が小さなロボットアームを調整し、隣のノートパソコンの画面には、関節を色付きの球で示したロボットアームの3次元の線モデルと曲線の経路が表示されている様子

逆運動学を解く方法は、大きく分けると、数式で一度に解く方法と、少しずつ目標に近づける方法に分かれます。

(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):ゲームのキャラクターが階段を上るときに、足が床を突き抜けたり空中に浮いたりしないよう、足先を地面に合わせ、脚の関節角度を自動的に求めます。

逆運動学は、指先が向かうべき目標から出発し、関節角度を逆に求める計算です。解が複数あったり存在しなかったりするうえ、特異点という落とし穴もありますが、幾何学的構造を生かした公式と反復計算のおかげで、今日ではロボットアームや歩行ロボット、画面の中のキャラクターまで自然に動けるようになりました。

関節の一つひとつを考える前に、指先が届くべき目標を明確に定めること。それが、正確なロボット動作への第一歩です。