ロボットアームは、モーターが回せるのは各関節の角度だけなのに、実際にやりたいことは「手先をこの位置・向きに持っていく」という作業空間側の要求である。この「関節が分かっていること」と「手先がどうなってほしいか」という2つの世界を数式でつなぐのが運動学(Kinematics)であり、ロボットアームを制御するあらゆるソフトウェアの土台になっている。この記事では、関節角から手先姿勢を求める順運動学、その逆を解く逆運動学、そして両者の間で「速度」を橋渡しするヤコビアンまでを、式を追いながら体系的に積み上げていく。

0. この記事で分かること

1. まず結論:ロボットアーム運動学とは何か

一言で言えば、運動学とは、ロボットアームの各関節の角度(関節空間)と、手先の位置・姿勢(作業空間)という2つの異なる表現を、幾何学的な関係だけで(力やモーターの特性を考えずに)相互に変換する数学的な枠組みである。

「幾何学的な関係だけで」という点が重要な限定である。運動学は、腕がどれだけの重さを支えられるか、モーターがどれだけ速く動けるかといった力学(dynamics)の問題にはいっさい踏み込まない。あくまで「関節角がθのとき、手先はどこにあるか」「手先をこの位置に置くには、関節角はいくつであるべきか」という、純粋に幾何の問題を扱う。この幾何の土台があって初めて、その上に力・トルク・軌道追従といった制御の議論を積み上げられる。

2. なぜ運動学が必要なのか

ロボットアームのモーターは、それぞれの関節を回転(または伸縮)させることしかできない。しかし人間がロボットに与えたい指示は、ほとんどの場合「この部品をこの位置に置いてほしい」「このカップをここまで運んでほしい」という、手先(エンドエフェクタ)の位置・向きに関する指示である。関節角の集まり(関節空間)と、手先の位置・姿勢(作業空間)は、直感的にはまったく違う量に見える——6軸アームなら関節角は6個の数値の組だが、手先姿勢は3次元の位置(x, y, z)と3次元の向き(回転)、合わせて6自由度の量として表される。

この2つの空間を行き来する変換規則がなければ、「関節を何度回せば手先が目標の位置に届くか」を計算できず、ロボットアームはそもそも意図した動作ができない。運動学は、この関節空間と作業空間のあいだの、ロボットの構造(リンクの長さ・関節の配置)によって決まる幾何学的な対応関係を、明示的な数式として与える役割を持つ。

3. 入力は何か

運動学が扱う入力は、解きたい方向によって変わる。

ロボットの構造情報は「モデル」であり毎回の計算入力ではないが、これが不正確だと、FK・IKのどちらも実機とズレた結果を出す。ロボットアームの運動学を扱う前提として、まずこの構造モデルが正しく校正(キャリブレーション)されていることが必要になる。

4. 何を求めるのか/出力は何か

FKの出力は、関節角 \boldsymbol{\theta} が与えられたときの手先姿勢 \mathbf{x} = (\mathbf{p}, R) である。これは一意に決まる——関節角がすべて決まれば、リンクの長さと関節配置は固定なので、手先がどこにあるかは幾何学的に1つに定まる。

IKの出力は、目標姿勢 \mathbf{x}_d を実現する関節角 \boldsymbol{\theta}^{*} である。ここがFKと本質的に異なる点で、IKの解は一般に一意ではない。同じ手先位置に届く肘の曲げ方が複数通りある(多解)場合もあれば、そもそもロボットの可動範囲外で解が存在しない(可到達域の外)場合もある。この非一意性こそが、IKをFKよりも数学的に難しくしている核心である。

さらに、位置や姿勢そのものではなく「今の関節角からどれだけ動かせば、手先がどれだけ動くか」という速度の対応関係を求めたい場面も多い——これがヤコビアンの役割であり、6節で詳しく扱う。

5. 基本構成

運動学まわりの処理は、FK・IK・ヤコビアンという3つの変換が、関節空間と作業空間のあいだをどう結ぶかという構造で整理できる。

順運動学・逆運動学・ヤコビアンの関係 関節空間と作業空間を、順運動学(FK)・逆運動学(IK)・ヤコビアンがそれぞれどう結び付けるかを示す図 関節空間 θ = (θ₁,…,θₙ) 順運動学 (Forward Kinematics) 作業空間 手先姿勢 x = (p, R) 目標姿勢 x_d = (p_d, R_d) 逆運動学 (Inverse Kinematics) 関節角(解) θ*(複数解のことも) 関節角速度 θ̇ ヤコビアン v = J(θ) θ̇ 作業空間速度 v = (ṗ, ω)

図1 — 順運動学(FK)は関節角から手先姿勢を一意に求める。逆運動学(IK)はその逆方向を解くが、解が複数または0個のこともある。ヤコビアンは両空間の「速度」を線形な関係で結び付ける。

上段がFK、中段がIK、下段がヤコビアンによる速度の関係を表している。FKは常に一意に(左から右へ)計算できる一方、IK(右から左)は幾何学的な逆問題であり、一般には複数の解法が必要になる。ヤコビアンは、位置・姿勢そのものではなく「変化量(速度)」を線形代数の枠組みで結び付けるため、FKやIKよりも扱いやすい性質を持つ——これが、数値的IKの多くがヤコビアンを土台にしている理由である。

6. 代表アルゴリズム

同次変換行列とDHパラメータ — 順運動学の作り方

順運動学の基本操作は、隣り合うリンクの座標系を、回転と並進をまとめた同次変換行列(homogeneous transformation matrix)でつなぐことである。

{}^{i-1}T_i = \begin{pmatrix} R_i & \mathbf{d}_i \\ \mathbf{0}^{\top} & 1 \end{pmatrix}

R_i はリンクiの座標系からリンクi-1の座標系への回転、\mathbf{d}_i は並進を表す。n関節のアームであれば、基準座標系から手先座標系までの変換は、各関節の変換をすべて掛け合わせた積になる。

{}^{0}T_n(\boldsymbol{\theta}) = {}^{0}T_1(\theta_1)\, {}^{1}T_2(\theta_2)\, \cdots\, {}^{n-1}T_n(\theta_n)

この n 個の同次変換行列を、リンクごとに毎回バラバラな定義で書くと、ロボットが変わるたびに式全体を作り直す必要が出てしまう。そこで標準化された記法として広く使われているのがDenavit-Hartenberg (DH) パラメータである。Jacques DenavitとRichard Hartenbergが1955年にASME Journal of Applied Mechanicsで発表した論文「A Kinematic Notation for Lower-Pair Mechanisms Based on Matrices」で提案したこの記法は、隣接する2つの関節軸の位置関係を、リンク長 a_i・リンクのねじれ角 \alpha_i・関節間距離 d_i・関節角 \theta_i というたった4つのパラメータで表現し、各関節の変換行列を統一された形式で組み立てられるようにした。

{}^{i-1}T_i = \text{Rot}_z(\theta_i)\, \text{Trans}_z(d_i)\, \text{Trans}_x(a_i)\, \text{Rot}_x(\alpha_i)

このDHパラメータ表(各関節について a_i, \alpha_i, d_i の3つの定数と、可変の \theta_i)さえ与えれば、どんなシリアルリンク構造のロボットでも、同じ手続きで順運動学の式を機械的に組み立てられる。産業用ロボットのマニュアルやシミュレータの多くが、ロボットの仕様をこのDHパラメータの形で提供しているのはこのためである。

2リンク平面アームで見る解析的IK

DHパラメータで組み立てたFKの式を逆に解く解析的逆運動学(analytic IK)の考え方を、もっとも単純な例——リンク長 l_1, l_2 を持つ2リンクの平面アーム——で具体的に見てみる。

2リンク平面アームのFK/IKの幾何 肩関節O・肘関節J・手先Eからなる2リンクアームの関節角θ1, θ2、リンク長l1, l2、手先座標(x, y)の関係を示す図 θ₁ l₁ O(肩) J(肘) θ₂ l₂ E(手先) y x (x, y)

図2 — 2リンク平面アーム。肩関節Oと肘関節Jの角度θ₁, θ₂、リンク長l₁, l₂から手先Eの位置(x, y)が定まる(FK)。逆に(x, y)からθ₁, θ₂を求めるのがIKである。

順運動学は、2つのリンクのベクトルを単純に足し合わせるだけで書き下せる。

x = l_1 \cos\theta_1 + l_2 \cos(\theta_1 + \theta_2), \qquad y = l_1 \sin\theta_1 + l_2 \sin(\theta_1 + \theta_2)

逆運動学では、目標位置 (x, y) から \theta_1, \theta_2 を求める。まず余弦定理を使って肘の角度 \theta_2 を求める。

\cos\theta_2 = \frac{x^2 + y^2 - l_1^2 - l_2^2}{2\, l_1\, l_2}

この式の右辺が [-1, 1] の範囲に収まるとき解が存在し、\theta_2 = \pm\arccos(\cdots) という符号の分だけ2通りの解(肘を上に曲げるか下に曲げるか)が得られる。\theta_2 が定まれば、\theta_1 は幾何学的な関係から一意に(その \theta_2 の選択に対しては)決まる。この「三角関数の逆関数を式変形だけで導く」手続きが解析的IKであり、2〜3自由度程度の単純な機構では閉じた式で書けるが、自由度が増えたり関節配置が複雑になったりすると、一般には閉じた式を見つけること自体が困難になる。

数値的IK — ヤコビアンを使う反復解法

自由度が多いロボットや、閉じた式が見つからない機構では、数値的IK(numerical IK)、すなわち現在の関節角から少しずつ目標に近づけていく反復計算が使われる。この土台になるのがヤコビアンである。

手先姿勢 \mathbf{x}(\boldsymbol{\theta}) を関節角で微分すると、関節速度と手先速度の関係が線形に得られる。

\mathbf{v} = J(\boldsymbol{\theta})\, \dot{\boldsymbol{\theta}}, \qquad J(\boldsymbol{\theta}) = \frac{\partial \mathbf{x}}{\partial \boldsymbol{\theta}}

J(\boldsymbol{\theta})マニピュレータヤコビアンで、m \times n 行列(mは作業空間の自由度、nは関節数)である。目標姿勢との誤差 \mathbf{e} = \mathbf{x}_d - \mathbf{x}(\boldsymbol{\theta}) を小さくする関節角の更新方向は、ヤコビアンの逆(または擬似逆行列)を使って求められる。

\Delta\boldsymbol{\theta} = J^{+} \mathbf{e}, \qquad J^{+} = J^{\top}(J J^{\top})^{-1}

このヤコビアン擬似逆行列(Jacobian pseudoinverse)を使った反復更新の考え方は、Daniel E. Whitneyが1969年の論文「Resolved Motion Rate Control of Manipulators and Human Prostheses」で提案した、冗長自由度の解決を含む速度制御の枠組みに遡る。ただし、ロボットが特異姿勢(7節で説明)に近づくと J J^{\top} がほぼ特異(逆行列が発散)になり、この更新が不安定になる。Charles Wampler が1986年の論文で示したDamped Least Squares(減衰最小二乗法、DLS)は、この不安定さを抑えるため、逆行列の計算に減衰項 \lambda^2 I を加える。

\Delta\boldsymbol{\theta} = J^{\top}\left(J J^{\top} + \lambda^2 I\right)^{-1} \mathbf{e}

\lambda が大きいほど特異点付近での数値的な安定性が増す代わりに、収束が遅くなる(誤差を毎回小さくしか減らせなくなる)というトレードオフがある。この式は、収束の速さと安定性を \lambda というたった1つのパラメータで調整できる実用性の高さから、産業用ロボットのIKソルバーで広く採用されている。

CCDとFABRIK — 反復幾何ヒューリスティック

ヤコビアンを使わずに、より直感的な幾何操作を繰り返してIKを解く手法もある。CCD(Cyclic Coordinate Descent)は、手先に近い関節から根本の関節へ向かって1関節ずつ順番に、「その関節だけを回して手先を目標にできるだけ近づける」という単純な操作を繰り返す。実装が容易で計算コストも低いが、関節を1つずつしか動かさないため、収束が遅く不自然な軌道になりやすいという欠点がある。

FABRIK(Forward And Backward Reaching Inverse Kinematics)は、Andreas AristidouとJoan Lasenbyが2011年にGraphical Models誌で発表した手法で、回転角を一切扱わず、リンクの各関節位置を「目標点までの直線上の、リンク長を保った点」として順に(手先から根本へ、次に根本から手先へ)動かし直すという反復操作でIKを解く。角度計算を避けるため計算が軽く、少ない反復回数で自然な姿勢に収束しやすいことから、CGアニメーションやゲームのキャラクターの腕・脚の動きに広く使われている。

7. アルゴリズム同士の違い

手法 原理 精度 計算コスト 特異点への頑健性 実装難易度
DHパラメータ+同次変換(FK) リンクごとの変換行列を積み上げる 厳密(モデルが正しければ誤差なし) 低い(行列積のみ) 該当なし(FKに特異点はない) 低い
解析的IK 三角関数の式変形で閉じた解を導く 厳密(存在すれば真の解) 非常に低い 解の場合分けで対応可能 低自由度なら低いが自由度が増すと非常に高い
ヤコビアン擬似逆行列 誤差を線形近似し反復更新 反復回数に依存、収束すれば高精度 中程度(行列演算を反復) 低い(特異点付近で発散しやすい) 中程度
Damped Least Squares 擬似逆行列に減衰項を追加 反復回数と\lambdaに依存 中程度 高い(特異点付近でも安定) 中程度
CCD 関節を1つずつ手先に近づくよう回転 反復回数に依存、局所解に陥ることがある 低い 高い(行列の逆計算が不要) 低い
FABRIK 関節位置を直線上でリンク長を保ちつつ移動 反復回数に依存、視覚的に自然な解に収束しやすい 低い 高い 低い

解析的IKは「解ければ最速かつ最高精度」だが、自由度が増えると式そのものが導出困難になる。数値的手法(ヤコビアン系・CCD・FABRIK)は自由度や機構によらず汎用的に使えるが、反復計算である以上、収束速度・局所解・計算コストのトレードオフを避けられない。

8. 何が苦手か/難しい環境

運動学が本質的に抱える難しさは、大きく3つに整理できる。

特異点(singularity): ある関節配置では、ヤコビアン J の階数(ランク)が落ち、手先をどうしても動かせない方向が生じる。たとえば腕を完全に伸ばしきった姿勢では、手先をそれ以上外側へ動かす関節速度の組み合わせが存在しなくなる。この状態では J J^{\top} が特異行列に近づき、擬似逆行列を使った制御則では関節速度指令が発散する。Tsuneo Yoshikawaが1985年に提案したマニピュラビリティ指標 w = \sqrt{\det(J J^{\top})} は、この特異点への近さを定量化する指標として広く使われており、w がゼロに近づくほど特異点に近いことを意味する。

多解性と可到達域: IKは一般に複数の解(肘の曲げ方など)を持ちうるほか、そもそもロボットのリンク長や可動範囲の制約から、目標姿勢が物理的に到達不可能な場合もある。数値的手法は、この「解なし」のケースでも反復を止める条件を明示的に設計しないと、収束しないまま計算を続けてしまう。

冗長自由度(redundancy): 作業空間の自由度(通常6)より関節数が多いロボット(7軸アームなど)では、同じ手先姿勢を実現する関節角の組み合わせが無数に存在する。この余った自由度は「厄介な曖昧さ」ではなく、むしろ障害物回避や特異点回避、関節可動範囲の中央付近を維持するといった副次的な目的のために積極的に使える資源である。冗長自由度を持つロボットのIKでは、ヤコビアンの零空間(手先姿勢に影響を与えない関節速度の方向)へ副次目的の勾配を投影する、といった設計が行われる。

9. 実用上の選び方

運動学の実装をどう選ぶかは、ロボットの自由度・用途・求められるリアルタイム性によって変わる。

いずれの用途でも、運動学は単体で完結する技術ではなく、実際の関節速度・トルク指令を生成する制御ループ(LQR入門MPC入門)や、手先が辿るべき道筋を時間軸に沿って設計する軌道生成入門と組み合わさって初めて、ロボットアームは意図した動作を実現できる。

10. まとめ(3行で復習)

#ロボットアーム #運動学 #DHパラメータ #逆運動学 #ヤコビアン #ロボティクス入門