概要
逆運動学 (IK: Inverse Kinematics) は、エンドポイント(手の位置など)から、各関節の角度を求めることを言う。 逆に、各関節の角度からエンドポイントの位置を導く出すことは、順運動学 (FK: Forward Kinematics) という。
順運動学では、一意にエンドポイントが定まるが、逆運動学では一般に関節の角度は一意に定まらず、複数の解が存在する。
ヤコビアンを用いた近似解法
$m$ 個のパラメータ(各関節の回転量) $\vec{x} \in \mathbb{R}^{m}$ から3次元空間上での各関節の位置を決定できるものとする。 $i$ 番目の関節の位置は $p_{i}: \mathbb{R}^{m} \rightarrow \mathbb{R}^{3}$ で与えられる。
ここで初期状態の関節位置が $p_{i}(\vec{x_{0}})$ で与えられ、最終的な関節の位置は $p_{i}(\vec{x_{0}} + \sigma)$ で表されるものとする。
いくつかの関節において、目標となる位置を与える。目標となる関節の位置を $\vec{t}_{i} \in \mathbb{R}^{3}, i \in \tau$ で表す。 $\tau$ は目標となる位置を持つ、全ての関節の添字をまとめた集合。
ここで $\sigma$ を決めるため、 $$ \| \sum_{i \in \tau} p_{i}(\vec{x_{0}} + \sigma) - p_{i}(\vec{x_{0}}) \| $$ を最小にする事を考える。
$\sigma$ が小さい場合は、 $$ p_i(\vec{x_{0}} + \sigma) \approx p_i(\vec{x_{0}}) + J_{p}(\vec{x_{0}})\sigma $$ と近似することが出来る。ここで、 $J_{p}(\vec{x_{0}})$ は $\vec{x_{0}}$ における、$3 \times m$ のヤコビアンを表している。