用語集 · ロボティクスと制御
逆運動学
別名:Inverse kinematics、IK、逆キネマティクス、インバースキネマティクス
手や足を選んだ位置に置くための関節角度を求めること。順運動学の逆です。
順運動学は、関節角度から位置を求めます。逆運動学(IK)は、「左足を横に 35 cm 置く」のような望む位置から、関節角度へと逆にたどります。
こちらのほうが難しい理由は3つあります。
- 答えがないことがあります。目標が届かない場所にある場合です。
- 答えがたくさんあることがあります。肘を高くしても低くしても鼻に触れられます。
- 方程式が非線形なので、一般には簡単な公式がありません。
2本の骨からなる手足
脚(太ももとすね)や腕(上腕と前腕)では、真ん中の関節について閉じた形の答えがあります。セグメントの長さを と 、股関節から足首までの距離を とすると、余弦定理からセグメント間の膝の角度 が得られます。
なら、脚は完全に伸びきっていて、目標はちょうど届く距離かそれより遠くにあります。残りの角度で、手足を目標の方へ向けます。
一般の場合:反復する
もっと長い連鎖では、小さな修正を繰り返して IK を解きます。ヤコビアン は、各関節が動いたときに先端の位置 がどう動くかを表し、 となります。これを逆に解くと、目標へ向かう一歩が得られます。伸びきった姿勢の近くでも安定するように、小さな減衰 を加えます。
誤差が小さくなるまでこれを繰り返します。
このプロジェクトでは
キーフレームで作った回復動作(横へのホップ、前へのステップ、後ろへのステップ)は IK で解いています。足と骨盤をどこに置くかを決めると、IK が脚の角度を見つけます。初期のバージョンには脚が交差してしまう IK のバグがあったので、今ではプレビューで手足の間隔と IK の誤差をチェックしています。