本文へ移動
MANUFAC

スカラロボットでワークを移載する、届く範囲と逆運動学の計算

40mm角のワークを4つの置き台の間で移載する、第1アーム250mm・第2アーム200mmのスカラロボットで、プレース位置から2つの関節角を余弦定理で出します。右腕系と左腕系の2つの解、可動範囲で欠ける届く範囲、アーム長の比による違い、伸びきる手前で関節の角速度が跳ね上がる位置まで計算します。

公開 /更新 /読了の目安 11 分

執筆・監修: 佐々木 航/人が監修しながらAIを活用して執筆

白い柱にアルミの第1アームとオレンジの第2アームを載せ、上下軸で金色のワークを運ぶスカラロボットの3Dモデル
目次
  1. 置き台とワークのクリアランス
  2. 2つの円が交わる点がひじになる
  3. 届く範囲は、ドーナツ形から欠けていく
  4. アーム長の比を変えると、穴と背中側が変わる
  5. 伸びきる手前で、関節の角速度が跳ね上がる
  6. 実機のコントローラーは停止するか、減速する
  7. 置き台の配置を決める前に確認すること

ワークは幅40mm×奥行き40mm×高さ30mmのブロックで、作業台の上の4つの置き台のあいだで移載します。プレース位置の1つ、点Bは根元から前へ380mm、左へ160mmです。先端をここへ持っていくとき、スカラロボットが2つの関節をどれだけ回せばよいかは、余弦定理で求められます。第1アーム250mm、第2アーム200mmのモデルで計算すると、答えは2組ありました。第1関節1.86°と第2関節47.55°、それに43.80°と−47.55°。ひじを右に張り出すか、左に張り出すかの違いです。

スカラロボットは、縦軸で回る関節を2つ並べ、先端に上下軸を付けたロボットです。名前はSelective Compliance Assembly Robot Armの頭文字で、山梨大学工学部の牧野研究室で開発されました1。SMCの用語集によると、水平方向にだけコンプライアンス(追従性)を持ち、垂直方向は剛性が高いのが特徴です2。

下のモデルは、4つの置き台のあいだで2個のワークを搬送し続けます。1個はAとB、もう1個はCとDを行き来します。先端の経路を先に決めておき、1コマごとに逆運動学で関節角に直して動かしました。逆運動学とは、先端の位置から関節角を求める計算のことです。次の3Dでは、上下軸がワークの真上で下降し、持ち上げてから水平に移動する順番を見てください。

寸法と可動範囲は計算のために決めた値で、製品の寸法ではありません。第1関節は±130°、第2関節は±145°、上下軸のストロークは150mmにしました。形は模式で、モーターや減速機、上下軸を動かす仕組みは省き、先端の回転(第4関節)はワークの向きを保つように回したとみなしています。

置き台とワークのクリアランス

置き台は64mm角、厚さ2mmの板で、40mm角のワークを中央に載せます。プレース位置がずれてもワークが置き台からはみ出さない範囲は、(64 − 40) ÷ 2 = 12mmです。置き台の中心どうしはAとD、BとCが160mm離れているので、隣り合う置き台の縁どうしは160 − 64 = 96mm、ワークどうしは160 − 40 = 120mm離れています。

搬送中のクリアランスは上下軸のストロークで決まります。置き台に載ったワークの下面は、作業台から置き台の厚さ2mmと、モデルで面どうしに置いた0.05mmを足した2.05mmの高さにあり、持ち上げると150mm上がって152.05mmです。もう1個のワークの上面は2.05 + 30 = 32.05mmなので、その上を通っても152.05 − 32.05 = 120mmのクリアランスがあります。

把持する瞬間とプレースする瞬間を含む18コマで、部品どうしの干渉体積をブーリアン演算で計算すると、どのコマも0でした。部品の組ごとに最短距離と必要クリアランスで干渉を判定し、干渉部を3Dで赤く示す機能は、装置設計の支援アプリ MEKARIQ にもあります。(MEKARIQ は、株式会社Anamorphosis Networks が開発している装置設計の支援アプリです。MANUFAC を制作する株式会社Game は、その開発を受託しています。この段落はその紹介です。)工程表の時刻をスライダで動かすと、移載の途中のクリアランスも確認できます。

2つの円が交わる点がひじになる

ひじの位置は、2つの円が交わる点として決まります。根元の軸を中心に、半径L1で円を描けば、ひじはこの円周上のどこかにあります。目標点を中心に、半径L2で円を描けば、ひじはそちらの円周上にもあるはずです。

だから、ひじの候補は2つの円が交わる2点に絞られます。

次の図は、点Bに届く2つの姿勢を重ねたものです。破線の円が交わる2か所に、右腕系と左腕系のひじが来ることを見てください。

逆運動学の2つの解の図
モデルの寸法から計算。オレンジの実線が右腕系(モデルで使う形)、青の破線が左腕系。φは根元から目標への向き、ψは第1アームとその向きの開き。

右腕系と左腕系は、エプソンのロボット言語で腕の姿勢を指定するときの呼び方です3。ただ、同じリファレンスには、水平多関節ロボットでどちらの形を右腕系と呼ぶかの図がありません。そこでこのモデルでは、上から見て、根元から先端へ引いた線の右側にひじが来る形を右腕系としました。角度は上から見て反時計回りを正にしたので、右腕系ではθ2が正になります。

角度の計算に使うのは、根元とひじと先端を結ぶ三角形です。3辺のL1、L2、rが分かっているので、余弦定理で内角が出ます。ひじの内角は180°−θ2なので、cos(180°−θ2)=−cos θ2を入れると、1行目の式になります。

r² = L1² + L2² + 2 × L1 × L2 × cos θ2

点B (x, y) = (380, 160)              x は前、y は左
r² = 380² + 160² = 170,000            r = 412.31 mm
cos θ2 = (r² − L1² − L2²) ÷ (2 × L1 × L2)
       = (170,000 − 62,500 − 40,000) ÷ 100,000 = 0.675
θ2 = ±47.55°
φ  = atan2(y, x) = 22.83°
cos ψ = (L1² + r² − L2²) ÷ (2 × L1 × r)
      = 192,500 ÷ 206,155 = 0.9338    ψ = 20.97°
右腕系  θ1 = φ − ψ = 1.86°    θ2 = +47.55°
左腕系  θ1 = φ + ψ = 43.80°   θ2 = −47.55°

プログラムに書くなら、ψはatan2(L2 sin θ2, L1 + L2 cos θ2)で出すほうが扱いやすいでしょう。θ2の符号を入れ替えるだけで、左右の解がそのまま出てくるからです。cos θ2が1を超えたり−1を下回ったりしたら、その点には届きません。

求めた角度から先端の位置を計算し直すと、480コマすべてで目標との差は1×10⁻¹³mm未満でした。

届く範囲は、ドーナツ形から欠けていく

関節がどこまでも回るなら、先端が届くのは半径450mm(L1+L2)の円から、半径50mm(L1−L2)の円を抜いたドーナツ形です。外側の円はアームを伸ばしきった姿勢、内側の円は折りたたみきった姿勢です。

ところが実機では、関節に可動範囲があります。第2関節を±145°で止めると、たたみきれない分だけ内側の穴が広がります。

内側の半径 = √(L1² + L2² + 2 × L1 × L2 × cos 145°)
          = √(62,500 + 40,000 − 81,915) = 143.5 mm

第1関節を±130°で止めると、今度はロボットの背中側が欠けます。外周では届かない向きが100°の幅で残りますが、内側へ行くほど欠けは細くなり、半径218mmより内側では消えます。ひじを曲げた分、先端は第1アームからψだけずれた向きに出るからです。ψが50°を超えると130°+ψが真後ろの180°に届き、穴の縁では53.1°まで開きます。

次の図で、色の付いたところが届く範囲です。背中側に出た丸い2つの張り出しには、片方の腕系でしか届きません。2つが重なる真後ろの細いところ(半径143.5〜218mm)だけは、両方の腕系で届くことを見てください。

スカラロボットの届く範囲の図
モデルの寸法と可動範囲から計算。図は2.5mm、面積は0.5mmの格子。青と灰色のあいだの小さなオレンジは、2つの張り出しが重なる所。A〜Dはモデルの置き台、線は先端の通り道。中央の四角はベース。

面積にすると、半径450mmの円は0.636m²で、届く範囲は0.523m²。円の82%にあたります。もともと抜けている半径50mmの穴の0.008m²に加えて、第2関節の制限で0.057m²、第1関節の制限で0.049m²を失った計算です。

4つの置き台A〜Dは、どれも両方の腕系で届くオレンジの中に配置しました。モデルは右腕系のまま動かしていて、第1関節は−80.83°から1.86°、第2関節は47.55°から122.75°のあいだを行き来します。

では、青の張り出しから灰色の張り出しへ、先端を直線で動かせるでしょうか。答えは、どの腕系を選んでもできません。ひじの左右を入れ替えるには、どこかでθ2=0、つまりアームが伸びきった外周の上を通る必要があります。円の内側の2点を結ぶ線分は、外周に接しません。関節ごとに角度を動かすPTP動作なら、途中でアームを伸ばしきる姿勢を通って移れます。置き台を背中側に配置するときは、この制約がワークの搬送経路を決めます。

アーム長の比を変えると、穴と背中側が変わる

L1とL2の合計を450mmのままにして、比だけを変えて計算しました。可動範囲はモデルと同じ±130°と±145°です。次の図では、3つの比で内側の穴と背中側の張り出しの形を比べてください。

腕の長さの比と届く範囲の図
図は5mm、面積は0.5mmの格子で計算。外側の円は半径450mm。

まず、内側の穴はアームを入れ替えても同じ大きさでした。300:150でも150:300でも、半径は197mm。先ほどの式にはL1とL2が同じ形で入っているので、入れ替えても値は同じです。

違いが出たのは背中側でした。アームを入れ替えて第2アームを長くすると、第1関節を止めた位置からひじを振って届く張り出しが大きくなり、届く面積は0.437m²から0.494m²に増えます。図の3つでいちばん広いのは、長さをそろえた225:225の0.540m²(円の85%)で、穴も半径135mmといちばん小さくなりました。モデルの250:200は0.523m²。計算の幅を広げると、200:250の0.541m²がわずかに上回りました。

注意したいのは、右腕系だけで使う場合です。届く範囲全体では0.058m²違う300:150と150:300が、右腕系だけなら、どちらも0.371m²でぴたりと並びました。これには理由があります。片方の腕系だけなら、どの半径でも届く向きの幅は第1関節の260°で決まるので、面積は穴の半径だけで決まります。その穴の半径は、アームを入れ替えても変わりません。

両方の腕系で届く面積は、第1アームが長い300:150のほうが広く0.306m²、150:300では0.248m²。つまり、アームを入れ替えたときの差は、ひじを左右に使い分けて初めて出てきます。

伸びきる手前で、関節の角速度が跳ね上がる

先端を一定の速度で直線に動かすと、位置によって関節の角速度が大きく変わります。いちばん分かりやすいのは、根元からまっすぐ外へ動かす場合でしょう。r²の式を時間で微分すると、第2関節の角速度が出ます。

2 × r × (dr/dt) = −2 × L1 × L2 × sin θ2 × (dθ2/dt)
|dθ2/dt| = r × v ÷ (L1 × L2 × sin θ2)       v = 500 mm/s
|dθ1/dt| = L2 × (L2 + L1 × cos θ2) ÷ r² × |dθ2/dt|      r = 440 mm で 0.442 × 611 = 270 °/s

r = 300 mm  θ2 = 97.18°   500 × 300 ÷ (50,000 × 0.9922) = 3.02 rad/s = 173 °/s
r = 440 mm  θ2 = 24.36°   500 × 440 ÷ (50,000 × 0.4124) = 10.67 rad/s = 611 °/s

分母のsin θ2は、アームを伸ばしきるθ2=0に向かって0に近づきます。r=449mmでは1,923°/s。1秒に5回転を超える速度です。

この分母のL1 × L2 × sin θ2は、関節の角速度と先端の速度を結ぶヤコビ行列の行列式と同じ値です。分母が0になり、先端の速度から関節の角速度が決まらなくなる姿勢を、特異点と呼びます。CODESYSのヘルプも、特異点の例に「SCARA ロボットでアームが完全に伸びたとき」を挙げています4。

次のグラフは、先端を500mm/sで根元からまっすぐ外へ動かしたときの、第1関節と第2関節の角速度です。右端で2本の線が跳ね上がる位置と、左の灰色の帯を見ると、伸びきる側とたたむ側の違いが分かります。

先端を直線で動かしたときの関節の角速度のグラフ
モデルの寸法から計算した値(右腕系)。灰色の帯は第2関節が±145°を超える範囲。360°/sは比べるために仮に置いた値で、製品の値ではない。

たたみきる側の特異点(r=50mm)は、左端の灰色の帯の中にあります。第2関節を±145°で止めているので、このモデルが使う範囲には出てきません。

関節の許容速度を仮に360°/sとすると、第2関節はr=420.5mmで上限に達します。外周より29.5mm手前です。そこから外では、500mm/sの直線を保てません。

実機のコントローラーは停止するか、減速する

実機のコントローラーは、この場面をどう扱うのでしょうか。エプソンのリファレンスによると、直線補間のMove命令では、設定した速度が関節の許容速度を1つでも超えると「モーターの励磁を切ってロボットは停止します」5。経路を保ったまま関節の速度を自動で抑えるVSDという機能もあり、その間はツール先端の速度が設定どおりにならないと書かれています5。

もっとも、関節ごとに角度を補間するPTP動作なら、直線を保つための跳ね上がりは起きません。同じ言語のJump命令も、上昇して水平に動き、下降する動きをPTP動作として扱います6。

直線の向きでも差が出ます。たとえばモデルのA→Bは、根元を回る向きに近く、第2関節の最大は約48°/s。先端の最大速度は同じ約480mm/sでも、根元へ向かう成分が大きいB→Cでは約175°/sになりました。置き台を根元を回る向きに並べるほど、同じ先端の速度で関節の角速度を抑えられると考えられます。

次の動画では、ワークを持ち上げてから水平に搬送し、プレース位置で下降する一連の動きを見てください。

スカラロボットのピック&プレース

ここでの角速度は、モデルの寸法から計算した目安です。実機で使える速度と加速度の最終の判断は、メーカーの資料と設計基準によります。

置き台の配置を決める前に確認すること

スカラの計算は、根元からプレース位置までの距離rが分かれば、ほとんど片づきます。届くかどうかは、rを外周の450mmと内側の穴の143.5mmに比べ、背中側の点だけは第1関節の範囲を見れば決まります。直線で速く動けるかどうかは、分母のsin θ2が0に近づく外周までの残りで見当が付きます。3本の腕で先端の板を支えるパラレルリンクロボットは、届く範囲の形も特異点の出方も違うので、この物差しは使えません。

点Bは外周まで37.7mm。ここから外へ500mm/sで動かすと、第2関節は320°/sで始まり、8.2mm先のr=420.5mmで仮の上限の360°/sに達します。

一方、モデルに入っていないワークの条件は、客先に確認する項目です。ワークの質量と、吸着や把持に使える面の状態は、モデルでは決めていません。前工程から来るワークの載置位置のばらつきが、置き台の12mmの余裕に収まるかも同じです。AI が決めきれないこうしたワークの条件を、MEKARIQ は客先への確認事項として一覧にします。

2026年11月9日 更新:ワークの移載と置き台まわりのクリアランスを中心に、業界の用語で構成と表現を書き直しました。

注

  1. ロボ学「SCARA ロボットの開発」(2026年10月31日に確認)。開発は、1978年4月に設けられた産学協同の「SCARAロボット研究会」の援助のもとで行われたとあります。 ↩

  2. SMC「電動アクチュエータ 用語集」(す)の「スカラ」の項(2026年10月31日に確認)。 ↩

  3. セイコーエプソン「EPSON RC+ 7.0 (Ver.7.5) SPEL+ ランゲージリファレンス Rev.9」 p.320、p.322(Hand命令とHand関数。右腕系はRighty、左腕系はLefty)。確認日は2026年10月31日。ページ番号は紙面の番号で、PDFの通し番号は8つ後ろです。 ↩

  4. CODESYS SoftMotionのヘルプ「よくあるエラー」(2026年10月31日に確認)。軸グループが指令された経路に従えないエラーの説明の中にあります。 ↩

  5. エプソンの同リファレンス p.505(Move)、p.821(VSD)。 ↩ ↩

  6. エプソンの同リファレンス p.428(Jump。「まず垂直方向に上昇し、それから水平移動し、最後に垂直方向に下降する、門型動作」によりPTP動作する)。 ↩

執筆・監修: 佐々木 航(株式会社Game)。公開した記事も人が確認し、記事の中身の責任は編集部が負います。図面・3D モデル・動画は編集部で作成しています。誤りのご指摘はこちら

関連する記事