
コンピュータアニメーションやロボット工学において、逆運動学(IK) は、ロボットマニピュレータやアニメーションリグの手や足などの運動連鎖の末端を、連鎖の開始点に対する特定の位置と向きに配置するために必要な可変関節パラメータを計算する数学的プロセスです。IK 操作は、連鎖の末端の位置と向きを実現するために関節パラメータを三角関数で計算する順運動学よりも計算がはるかに複雑です。 [ 1 ] [ 2 ] [ 3 ]
ロボット工学では、逆運動学は運動学方程式を利用して、ロボットの各エンドエフェクタの目的の構成(位置と回転)を提供する関節パラメータを決定します。[ 4 ]これは、ロボットのタスクはエンドエフェクタで実行され、制御努力は関節に適用されるため重要です。エンドエフェクタが初期構成から目的の構成に移動するようにロボットの動きを決定することは、モーションプランニングとして知られています。逆運動学は、モーションプランをロボットの関節アクチュエータの軌道に変換します。 [ 2 ]同様の式は、映画で特定の方法で動くアニメーションキャラクターの骨格の位置、または映画のシーンを撮影するカメラを搭載した車やボートなどの乗り物の位置を決定します。乗り物の動きがわかれば、建物などの風景内のオブジェクトのコンピュータ生成画像の絶えず変化する視点を決定するために使用できます。これにより、乗り物に搭載されたカメラが通過しても、オブジェクト自体は動いていないように見えながら、これらのオブジェクトの視点が変わります。
ロボットであれアニメーションキャラクターであれ、 運動連鎖の動きは、連鎖の運動方程式によってモデル化されます。これらの方程式は、関節パラメータの観点から連鎖の構成を定義します。順運動学は関節パラメータを使用して連鎖の構成を計算し、逆運動学はこの計算を逆にして、目的の構成を実現する関節パラメータを決定します。[ 5 ] [ 6 ] [ 7 ]

運動学的解析は、ほとんどの産業用ロボットの設計における最初のステップの一つです。運動学的解析によって、設計者は機械システム内の各コンポーネントの位置に関する情報を得ることができます。この情報は、その後の動的解析や制御経路の決定に不可欠です。
逆運動学は、拘束された剛体システム、すなわち運動連鎖の運動学的解析の一例です。ロボットの運動方程式を用いて、複雑な関節システムのループ方程式を定義することができます。これらのループ方程式は、システムの構成パラメータに対する非線形制約です。これらの方程式における独立パラメータは、システムの自由度として知られています。
逆運動学問題に対する解析解は、幅広い運動連鎖に対して存在しますが、コンピュータモデリングおよびアニメーションツールでは、非線形運動方程式を解くためにニュートン法がよく使用されます。 [ 2 ]解析解を見つけようとする場合、システムの幾何学的形状を利用して、既知の解を持つ部分問題を使用してそれを分解することが便利な場合がよくあります。[ 8 ] [ 9 ]
逆運動学はゲームプログラミングや3Dアニメーションにおいて重要であり、ゲームキャラクターを物理的に世界に結びつけるために使用されます。例えば、足が地形の上にしっかりと着地するなどです。 [ 10 ]
アニメーション化された図形は、関節で接続された剛体セグメントの骨格(運動連鎖と呼ばれる)でモデル化されます。図形の運動学方程式は、図形の関節角度とその姿勢または構成との関係を定義します。順運動学アニメーション問題は、運動学方程式を使用して、関節角度が与えられたときの姿勢を決定します。逆運動学問題は、図形の目的の姿勢に対する関節角度を計算します。
コンピュータベースのデザイナー、アーティスト、アニメーターにとって、関節角度を直接操作するよりも、部品や腕、脚を動かすことでアセンブリやフィギュアの空間構成を定義する方が容易な場合が多い。そのため、逆運動学は、コンピュータ支援設計システムでアセンブリをアニメーション化したり、コンピュータベースのアーティストやアニメーターがフィギュアやキャラクターを配置したりする際に利用される。
アセンブリは、メイトまたは幾何学的拘束として定義されたジョイントで接続された剛体リンクとしてモデル化されます。ある要素を動かすには、ジョイント拘束を維持するために他の要素のジョイント角度を計算する必要があります。たとえば、逆運動学を使用すると、アーティストは3D人体モデルの手を目的の位置と向きに移動させ、アルゴリズムに手首、肘、肩のジョイントの適切な角度を選択させることができます。コンピュータアニメーションを成功させるには、通常、人物が妥当な人体的な範囲内で動くことも必要です。
キャラクターのアニメーションにおける順運動学と逆運動学の比較方法は、それぞれに内在する利点に基づいて定義できます。例えば、大きなモーションアークを用いるブロッキングアニメーションでは、順運動学の方が有利な場合が多いです。しかし、より繊細なアニメーションや、他のモデルに対するターゲットエンドエフェクタの位置決めには、逆運動学の方が容易な場合があります。最新のデジタルクリエーションパッケージ(DCC)は、順運動学と逆運動学の両方をモデルに適用する方法を提供しています。
逆運動学問題には、解析解が存在する場合もありますが、すべての場合に存在するわけではありません。その一例として、3D空間(位置自由度3、回転自由度3)を移動する6自由度(DOF)(例えば、回転関節6個)のロボットが挙げられます。ロボットの自由度がエンドエフェクタの自由度以上である場合、例えば回転関節7個を持つ7自由度ロボットの場合、逆運動学問題には無限に多くの解が存在し、解析解は存在しません。この例をさらに拡張すると、1つの関節を固定して他の関節を解析的に解くことは可能ですが、数値的手法の方がより良い解が得られる可能性があります。数値的手法では、追加の優先順位(最適化問題におけるコスト)に基づいて解を最適化することができます。
逆運動学問題の解析解は、エンドエフェクタの姿勢を入力として受け取り、関節位置を出力として与える閉形式の式である。解析的逆運動学ソルバーは、数値ソルバーよりも大幅に高速で、与えられたエンドエフェクタの姿勢に対して複数の解を提供するが、解の数は有限である。
IKFastやInverse Kinematics LibraryなどのFOSSプログラムをはじめとする多くの異なるプログラムは、FABRIKソルバーなどの様々なアルゴリズムを使用して、これらの問題を迅速かつ効率的に解決することができます。これらのソルバーの問題点の一つは、隣接する2つの構成間で局所的に滑らかな解を必ずしも得られるとは限らないことです。そのため、逆運動学の反復解が必要な場合(例えば、高速制御ループ内で逆運動学を解く場合など)には、不安定性が発生する可能性があります。
多くの産業用6DOFロボットは、交差する軸を持つ3つの回転関節(「球面手首」)を備えています。これらのロボットは「直交平行基底と球面手首」を持つロボットとして知られており、想定される標準ジオメトリにおける距離である7つの運動学的パラメータによって定義できます。[ 11 ]これらのロボットは、ロボットツールヘッドの任意の位置と回転に対して最大8つの独立した解を持つ可能性があります。C ++ [ 12 ]およびRust [ 13 ]用のオープンソースソリューションが存在します。OPWはROSフレームワークにも統合されています。[ 14 ]
逆運動学問題をモデル化して解く方法は数多く存在する。これらの方法の中で最も柔軟性の高いものは、順運動学方程式の逆変換の難しさや解空間が空になる可能性を考慮し、反復最適化を用いて近似解を求めるのが一般的である。これらの方法のいくつかに共通する基本的な考え方は、順運動学方程式をテイラー級数展開を用いてモデル化することである。テイラー級数展開は、元のシステムよりも逆変換や解法が容易になる場合がある。
ヤコビアン逆法は、逆運動学を実装するシンプルかつ効果的な方法です。順運動学方程式、すなわち位置関数を支配する変数。これらの変数は、関節角度、長さ、またはその他の任意の実数値である可能性があります。たとえば、IKシステムが3次元空間に存在する場合、位置関数はマッピングとして見なすことができます。。 させてシステムの初期位置を与え、
をシステムの目標位置とする。ヤコビアン逆法は、 の推定値を反復的に計算する。誤差を最小限に抑える 。
小規模向け-ベクトルでは、位置関数の級数展開は次のようになります。
どこは、位置関数の(3 × m)ヤコビ行列です。。
ヤコビ行列の (i, k) 番目の要素は数値的に近似できる
どこ位置関数の i 番目の成分を示します。単にk番目の成分に小さなデルタを追加し、これは、比較的小さな正の値です。
ヤコビ行列のムーア・ペンローズ擬似逆行列(特異値分解を用いて計算可能)を取り、項を並べ替えると、
どこ。
逆ヤコビアン法を一度適用すると、目的の値の非常に大まかな推定値が得られます。-ベクトル。これをスケーリングするには、線探索を使用する必要があります。許容値に。以下のアルゴリズム(ニュートン・ラフソン法として知られる)によって改善することができる。
かつては-ベクトルによって誤差がほぼゼロにまで低下したため、アルゴリズムは終了するべきである。システムのヘッセ行列に基づく既存の手法は、望ましい収束を示すことが報告されている。ただし、場合によっては、より少ない反復回数で値が得られますが、より多くの計算リソースが必要になることもあります。
逆運動学の問題は、ヒューリスティック法を用いて近似することもできます。これらの方法は、単純な反復操作を実行して、徐々に解の近似値に導きます。ヒューリスティックアルゴリズムは計算コストが低く(最終姿勢を非常に速く返します)、通常は関節拘束をサポートしています。最も一般的なヒューリスティックアルゴリズムは、サイクリック座標降下法(CCD)[ 15 ]と前方および後方到達逆運動学(FABRIK)[ 16 ]です。