2リンクロボットアーム運動学 戻る
ロボティクス

2リンクロボットアーム 順逆運動学

FK(順運動学)モードで関節角度からエンドエフェクタ位置を計算、IK(逆運動学)モードでキャンバスをクリックして目標位置への関節角度を逆算。

モード選択
リンク設定
リンク1長さ L₁
m
リンク2長さ L₂
m
関節角度 (FK)
θ₁ (関節1)
°
θ₂ (関節2)
°
計算結果
エンドX
エンドY
最大リーチ
肘位置 (x,y)
可視化
理論・主要公式

$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)$

逆運動学 (IK):
$\cos\theta_2 = \dfrac{x^2+y^2-L_1^2-L_2^2}{2L_1L_2}$
$\theta_1 = \mathrm{atan2}(y,x) - \mathrm{atan2}(L_2\sin\theta_2,\,L_1+L_2\cos\theta_2)$

2リンクロボットアームの順逆運動学とは

🙋
ロボットアームの「順運動学」と「逆運動学」って何ですか?名前は似てるけど、大きく異なるものなんですか?
🎓
大まかに言うと、計算の向きが真逆なんだ。順運動学(FK)は「関節をこれだけ曲げたら、手先はどこに来る?」を求める計算。逆運動学(IK)は「手先をここに持っていきたいなら、関節をどう曲げればいい?」を逆算するんだ。このシミュレーターで、上の「θ1」「θ2」のスライダーを動かしてみて。アームの形が変わるでしょ?これがFK。逆に、キャンバスをクリックして目標点(赤い点)を置くと、アームがそこに向かって形を変えるのがIKの動きだよ。
🙋
え、そうなんですか!クリックしたら自動で角度が計算されるんですね。でも、同じ目標点に対してアームの形が2通りあるときがあります。あれは何ですか?
🎓
良いところに気が付いたね。それが「肘上(Elbow Up)」と「肘下(Elbow Down)」の2つの解だ。人間の腕でも、肘を上に向けるか下に向けるかで、同じ手の位置を実現できるよね。数学的には、$\cos\theta_2$を求める式から$\theta_2$の符号をプラスマイナス両方取れるから、2通りの関節角度の組み合わせが生まれるんだ。シミュレーターの「解の選択」で「Elbow Up」と「Elbow Down」を切り替えて、姿勢がどう変わるか確かめてみよう。
🙋
なるほど!でも、キャンバスの端っこをクリックすると、アームが届かなくて解が計算されないことがあります。あれはなぜですか?
🎓
それはアームの「到達可能領域」の外を指定しちゃったからだ。2リンクアームが手先を置ける範囲は、リーチの最大値$L_1+L_2$を外径、最小値$|L_1 - L_2|$を内径とするドーナツ状の領域になるんだ。例えば、アームの長さ$L_1, L_2$をスライダーで極端に短くしたり長くしたりすると、このドーナツ領域がどう変わるか観察してみて。設計では、この領域をワークスペースと呼んで、ロボットが作業できる範囲を決める重要な指標になるよ。

よくある質問

FKモードでは、スライダーで関節角度θ1、θ2を指定すると、エンドエフェクタの位置が自動計算されます。IKモードでは、キャンバス上の目標位置をクリックすると、その位置に到達するための関節角度が逆算されます。用途に応じて切り替えてご利用ください。
リンク長の合計(L1+L2)よりも遠い位置や、逆に近すぎる位置(|L1-L2|未満)は到達不能です。また、関節角度に制限がある場合はその範囲内で解が存在しないこともあります。キャンバス上の到達可能範囲を目安にクリックしてください。
本ツールでは度(°)を単位として使用しています。スライダーは0°〜360°の範囲で調整可能です。数式上では計算時にラジアンに変換されますが、表示や入力はすべて度で行ってください。
はい。計算された座標や角度は数値として表示されるため、その値をメモしてロボット制御の設計や教育資料に活用できます。ただし、本ツールは簡易シミュレーターであり、実機の制御には物理パラメータや誤差を考慮する必要があります。

実世界での応用

産業用ロボットアームの軌道計画:溶接や塗装、組み立て作業では、工具(エンドエフェクタ)が通過すべき一連の点(軌道)が与えられます。各点に対して逆運動学を解き、対応する関節角度の列を計算することで、滑らかな動作を実現します。

ゲームやアニメーションのキャラクター制御:キャラクターの手や足を特定の位置(例えば、ドアノブや武器)に自然に到達させるために逆運動学が頻繁に使われます。これにより、関節の動きを手作業で設定するよりも効率的で自然な動きを作成できます。

ロボット手術(外科手術支援ロボット):医師が操作するマスターコントローラの位置から、患者体内の手術器具の先端位置を決定するために順運動学が、逆に器具の目標位置から各関節の駆動量を決定するために逆運動学が利用されます。

リハビリテーションやパワーアシストスーツ:装着者の関節角度センサーから、手足の先端位置を順運動学で推定します。また、支援したい動作の目標位置から、モーターに与えるべき関節トルクを計算する際の基礎として逆運動学の考え方が用いられます。

よくある誤解と注意点

まず、「順運動学(FK)は簡単で、逆運動学(IK)は難しい」という単純な二分法は危険です。確かに2リンクのFKは単純な三角関数の和ですが、リンク数が増えると、関節の配置(回転/直動)や座標系の取り方によってFKの式自体が複雑になります。一方で、このツールで扱うような平面2リンクのIKは、幾何学的に「解の公式」が存在する特別なケースです。多くの実用的な6軸アームなどでは、このような閉じた解が存在せず、数値計算(反復法)で解を求めるため、FKとIKの難しさの性質が逆転することもあります。

次に、「解が求まればそれでOK」と思いがちですが、解の「質」を評価する視点が重要です。例えば、同じ目標点に対して「肘上」と「肘下」の2解がある場合、どちらを選ぶかは応用次第です。作業スペースに障害物があれば避けられる姿勢を、エネルギー効率を考えれば関節の可動範囲中央に近い姿勢を選ぶでしょう。また、特異姿勢(例えばアームが完全に伸びきった状態)に近い解は、小さな目標位置の変化で関節角度が急激に変化するため、制御が不安定になります。このツールでL1とL2を同じ長さに設定し、目標点をほぼX軸上(y=0)の遠くに置くと、その感覚を体感できます。

最後に、パラメータの単位と基準方向を常に意識してください。このツールでは角度は度表示ですが、内部計算や多くのライブラリではラジアンが使われます。また、θ1の基準軸(多くの場合はX軸)と正の回転方向(反時計回りが一般的)の定義は、座標系と右手系/左手系によって変わるため、他システムと連携する際は最初に確認すべき最重要事項です。例えば、CADデータとロボットシミュレータで座標系の定義が異なると、全く予期せぬ動きをすることがあります。

使い方ガイド

  1. リンク1の長さ(vL1)とリンク2の長さ(vL2)を設定します。例えばL1=300mm、L2=200mmとして産業用ロボットアームの寸法を入力
  2. 関節1の角度(vT1)と関節2の角度(vT2)をスライダーで調整し、エンドエフェクタの位置をリアルタイムで観察。順運動学により現在位置が自動計算
  3. 逆運動学モードでキャンバス上の目標位置をクリック指定すると、必要な関節角度θ1、θ2が自動求解され、アームが目標点に移動

具体的な計算例

L1=250mm、L2=180mmの2リンクアームで、関節角度θ1=45°、θ2=30°の場合、順運動学によるエンドエフェクタ位置はx≈280mm、y≈210mmとなります。逆に目標位置(400mm, 150mm)を指定すると、逆運動学により複数解の中からθ1≈25°、θ2≈60°が算出され、到達可能性も判定されます。

実務での注意点