順運動学と逆運動学
関節角度と手先位置を自在に変換できれば、ロボットアームの軌道設計や制御の土台が固まります。同次変換行列と逆運動学の解法を原理から整理。
- 1.順運動学は各関節の同次変換行列を根元から先端まで連鎖的に掛け合わせ、関節角度からエンドエフェクタの位置・姿勢を一意に求める写像。DH法(Denavit-Hartenberg法)で系統的にパラメータ化する。
- 2.逆運動学は目標位置・姿勢から関節角度を逆算する写像で、一般に解は一意でない(複数解・無限解・解なし)。6軸で幾何学的分離が使えれば解析解、それ以外はヤコビ行列を使う数値解(反復法)に頼る。
- 3.ヤコビ行列が特異になる特異点では、手先の微小変位に対して関節角速度が発散し得る。可操作性やダンピング付き最小二乗法(DLS法)で数値的に回避するのが実務上の要点。
関節空間とタスク空間をつなぐ変換
ロボットアームは各関節の角度(回転関節)や伸縮量(直動関節)をアクチュエータで直接制御しますが、作業指示は「エンドエフェクタ(手先)をこの位置・姿勢へ動かせ」というタスク空間の言葉で与えられます。関節角度の組(関節空間)からタスク空間へ進む写像が順運動学(forward kinematics, FK)、逆にタスク空間から関節角度を求める写像が**逆運動学(inverse kinematics, IK)**です。軌道計画やビジュアルサーボなど上位アルゴリズムの多くはこの変換を土台にしており、PID・LQRのような一般的なフィードバック制御理論とは別の、幾何学固有の問題です。
順運動学: 同次変換行列の連鎖
各関節 i の位置・向きの変化は、回転行列 R と並進ベクトル p を1つにまとめた4×4の同次変換行列 T_i で表せます。n 自由度のロボットでは、根元(ベース座標系)から先端までの変換が各関節の変換の連鎖積になります。
T_base_to_ee = T_1 * T_2 * T_3 * ... * T_n
各 T_i は関節変数 θ_i(回転角)または d_i(伸縮量)のみに依存
→ 関節角度ベクトル q を決めれば T_base_to_ee は常に一意に計算できる
各 T_i を系統的に定義する標準手法が**DH法(Denavit-Hartenberg法)**で、隣接リンク間の位置関係をリンク長・ねじれ角・オフセット・関節角の4パラメータだけで表現し、任意の直列リンク機構を一意な手続きで行列化します。
function forward_kinematics(theta[1..n], dh_params[1..n]):
T = identity(4)
for i in 1..n:
T = T * dh_transform(theta[i], dh_params[i])
return T // 位置pと姿勢Rを含む同次変換行列
順運動学は行列積の評価に過ぎず、同じ関節角度ベクトル q を入れれば必ず同じ手先位置・姿勢が一意に決まります。難しさは常に逆方向、手先位置から関節角度を求める側にあります。
逆運動学: 目標位置から関節角度へ
逆運動学は T_base_to_ee(q) = T_target を満たす q を求める問題で、一般に非線形連立方程式になり、解の個数も保証されません。
| 観点 | 解析解(closed-form) | 数値解(反復法) |
|---|---|---|
| 求め方 | 幾何学的・三角関数的に直接導出 | ヤコビ行列で反復的に近似 |
| 計算コスト | 低い(一度の代数演算) | 高い(毎周期の反復計算) |
| 適用条件 | 6軸・球面手首など幾何条件が必要 | 自由度・幾何形状によらず適用可能 |
| 解の把握 | 全解を数え上げやすい | 初期値近傍の解1つに収束 |
多くの6軸産業用アームは手首の3関節の回転軸が1点で交わる球面手首を持ち、これがあると根元側3関節(位置を決める)と手首側3関節(姿勢を決める)に問題を分離でき、三角関数の逆関数だけで閉じた式が書けます。この場合でも解は一般に複数あり(例: 2リンク平面アームの「肘上げ」「肘下げ」2解)、6軸では最大8通り程度の組み合わせが生じ得ます。関節数がタスク空間の自由度を超える冗長系(7軸など)では、解は離散個ではなく連続的な無限解(解の多様体)になり、余剰自由度を障害物回避や特異点回避に使えます。
数値解: ヤコビ行列による反復法
解析解が導けない一般のロボットでは、関節角速度と手先速度を結ぶヤコビ行列 J(q)(6×n行列、v = J(q) * q_dot)を使った反復法(ニュートン-ラフソン法系)が標準です。
function inverse_kinematics(T_target, q_init):
q = q_init
repeat until convergence:
error = pose_difference(T_target, forward_kinematics(q))
delta_q = pseudo_inverse(compute_jacobian(q)) * error
q = q + delta_q
return q
正方でない場合や特異点近傍では逆行列でなく擬似逆行列を使い、冗長系ではその零空間成分で副次目的を追加できます。
反復法は線形近似に基づくため、初期値が目標から離れすぎると収束しない、または意図と異なる解(別の肘の向きなど)に収束し得ます。前フレームの関節角度を初期値にする、解析解を初期値にして微修正するなどのハイブリッド手法が実務でよく使われます。
特異点: ヤコビ行列が正則でなくなる姿勢
ヤコビ行列の行列式や特異値がゼロに近づく関節配置を**特異点(singularity)と呼びます。代表例は、2リンクが伸びきる肘伸びきり特異点、球面手首の2回転軸が同一直線上に重なる手首特異点、手首中心がある軸の真上に来る肩特異点です。特異点近傍では擬似逆行列の要素が急増し、わずかな目標速度でも関節角速度指令が過大になり、実機では過大なトルク要求を招きます。この危険度はヤコビ行列の特異値から計算する可操作性(manipulability)**で定量化でき、特異点でゼロに落ちます。
特異点近傍で単純な擬似逆行列を使うと関節角速度指令が発散します。ヤコビ行列の逆算に小さな正則化項を加える**DLS法(Damped Least Squares)**が広く使われ、厳密解からわずかにずれる代わりに角速度指令を有限に保てます。減衰係数を大きくすると安全性は増しますが追従誤差も増えます。
まとめ
順運動学は各関節の同次変換行列を連鎖的に掛け合わせる一意な写像で、DH法で系統的にパラメータ化できます。逆運動学は球面手首を持つ6軸アームなど幾何条件が揃えば解析解(複数解を含む)が得られますが、一般にはヤコビ行列を用いた反復的な数値解に頼ります。特異点では関節角速度指令が発散し得るため、可操作性で危険度を評価しDLS法などで回避するのが実務の要点です。この枠組みは軌道計画やビジュアルサーボなど、ロボットアーム制御の多くのアルゴリズムが前提とする基盤になります。
ロボティクス Article
順運動学と逆運動学を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ロボティクス
比較で見る軸
難易度: advanced / カテゴリ: ロボティクス / タグ数: 6
導入後に効く点
逆運動学は目標位置・姿勢から関節角度を逆算する写像で、一般に解は一意でない(複数解・無限解・解なし)。6軸で幾何学的分離が使えれば解析解、それ以外はヤコビ行列を使う数値解(反復法)に頼る。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ロボティクス
- タグ数
- 6
判断チェックリスト
- 自社の用途が「ロボティクス / 運動学」に近いか確認する。
- 強みである「順運動学は各関節の同次変換行列を根元から先端まで連鎖的に掛け合わせ、関節角度からエンドエフェクタの位置・姿勢を一意に求める写像。DH法(Denavit-Hartenberg法)で系統的にパラメータ化する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。