順運動学シミュレーター 戻る
ロボット工学シミュレーター

順運動学 シミュレーター — 2リンク平面マニピュレータ

リンク長 L₁, L₂ と関節角度 θ₁, θ₂ から末端位置 (x, y) を計算し、アーム姿勢と作業空間・特異点を可視化します。ヤコビアン行列式 det J = L₁L₂sinθ₂ もリアルタイム表示。

パラメータ設定
L1 リンク1長さ
cm
L2 リンク2長さ
cm
θ1 関節1角度
deg
θ2 関節2角度
deg
θ₁ を −180° → 180° で連続スイープします。
計算結果
末端 x
末端 y
原点距離 r
|sinθ₂| = |detJ|/(L₁L₂)
アーム姿勢と作業空間
関節空間ヤコビアンマップ (θ₁, θ₂)
理論・主要公式

2リンク平面マニピュレータの末端位置(順運動学):

$$x = L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2)$$ $$y = L_1\sin\theta_1 + L_2\sin(\theta_1+\theta_2)$$

ヤコビアン行列式(特異点指標):

$$\det J = L_1\,L_2\,\sin\theta_2$$

作業空間半径:$|L_1 - L_2| \le r \le L_1 + L_2$、特異点:$\theta_2 = 0°$ または $180°$

順運動学とは

🙋
順運動学って、関節の角度から手先の位置を計算するんですよね?逆運動学(IK)と比べて、なんでこっちは「簡単」って言われるんですか?
🎓
ざっくり言うと、順運動学(FK)は「関節角度を全部知っている → そのまま三角関数で末端位置を計算」というだけだから、解は常に一つで、しかも閉じた式で書けるんだ。例えばこの2リンクなら、x = L₁cosθ₁ + L₂cos(θ₁+θ₂) で一発。逆運動学は「目標の手先位置 → どんな関節角を選べばいい?」を逆向きに解く問題で、解が複数あったり、そもそも到達不能で存在しないケースもある。実務だと、ロボットを動かす前にまずFKで姿勢を描画してから、IKで目標角度を逆算する、という流れがよく使われるよ。
🙋
画面の右下に「ヤコビアンマップ」っていうのがあって、赤い破線で「特異曲線」って書いてあります。これって何ですか?
🎓
それが今日のキモだね。ヤコビアン行列 J は「関節角を少し動かすと、末端がどっちにどれだけ動くか」を表す行列で、2リンク平面アームでは det J = L₁L₂ sinθ₂ という単純な式になる。θ₂ = 0°(リンクが一直線に伸び切った姿勢)や θ₂ = 180°(折り畳まれた姿勢)では sinθ₂ = 0 になって行列式がゼロになる。これが「特異点」で、その姿勢ではある方向への末端移動を実現するために関節速度が無限大に発散してしまう。実機では危ない姿勢なので、経路計画でこの帯を避けるのが基本だよ。
🙋
L₁とL₂を同じ長さにすると、アームの根元まで届くようになる気がします。リンク長の比って、何か意味があるんですか?
🎓
いい観察だね。作業空間の最小半径は r_min = |L₁ - L₂| になるから、L₁ = L₂ にすると r_min = 0、つまり原点(根元)にちょうど届く円板状の作業空間になる。逆に L₁ ≠ L₂ だと、中心付近にドーナツの穴のような到達不能領域が出る。例えば L₁ = 30 cm, L₂ = 25 cm だと半径 5 cm の小さな穴ができて、その範囲は逆運動学で解が存在しない。産業ロボットは作業対象のサイズに合わせて、デッドゾーンが邪魔にならないようにリンク長比を設計しているんだ。

順運動学の物理モデルと主要な数式

2リンク平面マニピュレータは、原点に第一関節(基底)を持ち、リンク長 $L_1$ の腕が角度 $\theta_1$ で出て、その先端の関節2から長さ $L_2$ のリンクが角度 $\theta_2$(相対角)でさらに伸びる構造です。末端位置 $(x, y)$ は単純な三角関数の和で表されます。

$$x = L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2),\quad y = L_1\sin\theta_1 + L_2\sin(\theta_1+\theta_2)$$

ヤコビアン行列:$J = \begin{pmatrix} -L_1\sin\theta_1 - L_2\sin(\theta_1+\theta_2) & -L_2\sin(\theta_1+\theta_2) \\ L_1\cos\theta_1 + L_2\cos(\theta_1+\theta_2) & L_2\cos(\theta_1+\theta_2)\end{pmatrix}$、$\det J = L_1 L_2 \sin\theta_2$

原点からの距離: $r = \sqrt{x^2+y^2}$、作業空間:$|L_1-L_2| \le r \le L_1+L_2$、特異点:$\theta_2 = 0°, \pm 180°$

実世界での応用

産業用ロボットの教示再生:溶接・組立・搬送など、関節角度を時系列で記録して再生する制御では、各時刻の関節角から手先位置を順運動学で予測し、ティーチングペンダント上でアニメーション表示します。シミュレーション環境(ROS、MoveIt、RoboDK)の核となる計算です。

FEM解析のリンク姿勢設定:多関節アームの構造解析(剛性・固有値・接触)では、解析対象の姿勢を関節角度で指定し、順運動学で各リンクの座標を計算してメッシュを配置します。負荷のかかる代表姿勢を初期条件として与える際の前処理として必須です。

外科手術ロボット・遠隔操作:術者が操作するマスター側の関節角度から、スレーブ側のエンドエフェクタ位置を順運動学で計算し、画面上に重畳表示します。リアルタイム計算が求められるため、閉形式の順運動学は遅延を最小化する鍵です。

CG・アニメーション・VRリギング:キャラクターの腕や脚の関節角度から、手先・足先位置を順運動学で計算してメッシュを変形します。逆運動学による目標位置追従と組み合わせ、自然な動きを生成します。

よくある誤解と注意点

まず、「順運動学は簡単だから精度を気にしなくていい」という誤解があります。確かに数式は単純ですが、関節角度センサ(エンコーダ)の分解能やリンク長の製造誤差が末端位置に直接累積します。例えば L₁ = L₂ = 50 cm のアームで関節角度に 0.1°の誤差があると、末端で約 0.17 mm のズレが生じます。長いアームほど誤差が拡大するため、産業用途では校正(キャリブレーション)が必須です。

次に、「θ₂ の角度は絶対角度」という勘違い。本ツールの θ₂ は「リンク1に対する相対角度」で定義されています。一部の文献では「水平からの絶対角度」を θ₂' として扱う場合があり、両者は θ₂' = θ₁ + θ₂ の関係です。論文や CAD データを参照するときには角度定義を必ず確認しましょう。

最後に、「特異点は数学的な抽象概念で実機では関係ない」という油断。実際には特異点近傍(det J が小さい領域)で関節速度が急増し、サーボの飽和や振動が起きます。本シミュレーターで θ₂ を 0°や 180° 付近にすると右下マップが青く(暗く)なり、その姿勢で末端を半径方向に動かすには無限大の関節速度が必要なことが視覚的に分かります。経路計画では特異点を回避するか、減衰最小二乗法(DLS)で安定化させます。

よくある質問

既定値 L₁ = 30 cm, L₂ = 25 cm, θ₁ = 30°, θ₂ = 60° のとき、x = 30·cos30° + 25·cos90° = 25.98 cm(約 26.0 cm)、y = 30·sin30° + 25·sin90° = 40.0 cm、原点からの距離 r = √(26.0² + 40.0²) ≈ 47.7 cm となります。ヤコビアンの正規化値は |sinθ₂| = sin60° ≈ 0.866 です。
ヤコビアン J の各列は ∂(x,y)/∂θ_i です。直接展開して 2×2 行列式を計算すると、共通項 sin(θ₁+θ₂)cos θ₁ - cos(θ₁+θ₂)sin θ₁ = sin θ₂ が現れ、結局 det J = L₁ L₂ sin θ₂ という簡潔な形になります。θ₁ には依存しないのが特徴です。
2リンクで到達できる最小距離は、リンクをできるだけ折り畳んだときの差 |L₁ - L₂| です。L₁ ≠ L₂ の場合、この値が正になり、原点を中心とする半径 |L₁ - L₂| の円内には届きません。L₁ = L₂ にすると最小距離が 0 となり、根元まで届きます。
マップは |sin θ₂| を色に変換しているため、θ₂ = ±90° で最大、θ₂ = 0°, ±180° で 0 となり、明暗が周期 180° で繰り返されます。赤い破線はその「ゼロ帯」(特異曲線)を示しています。
n 関節のシリアルマニピュレータでは、各関節に対して同次変換行列(DH 法)を順に掛け合わせて末端の位置・姿勢を求めます。本ツールの 2 リンク版は最も簡単な特殊例で、3D・6 自由度ロボット(UR5、Fanuc M-20など)でも考え方は同じです。