ロボットの腕が2本あれば、2本を同時に動かすこと自体はそれほど難しくありません。難しいのは、2本の腕が 一緒に仕事をする ことです。同じ物を持ったまま腕どうしの位置関係を崩さずに動かす、片手が支えている間にもう片手が作業して、終わったら合流する、といった動きです。
現在開発中の LEIVOR の新機能「多腕の協調動作」をご紹介します。協調動作は多くの研究がある分野です。LEIVOR では研究で使われる考え方をそのまま設計の骨格にし、シミュレーター上の双腕ロボット AIDAL で、性格の違う2つの作業を動かしました。
- 両手で一緒に持つ ― 2本の腕でタオルの手前の辺を持ち上げ、向こうの辺へ重ねて折る
- 左右で手分けする ― 左右で部品を治具に置き、左手で支えている間に右手がねじを締める
どちらも、LEIVOR の画面上で教示して作った動作です。
デモ映像
協調動作の4つの層
双腕・多腕ロボットの協調は、研究ではおおむね次の4つの層に分けて考えられています。
| 層 | 決めること |
|---|---|
| 1. タスク | どの腕が、何を、いつやるか |
| 2. 協調 | 腕どうしの拘束(同じ物を持ったままの位置関係) |
| 3. 動作計画 | 全部の腕がぶつからずに動ける道 |
| 4. 制御 | 持っている物にかかる力(内力・張力)の制御 |
LEIVOR ではこの層に沿って作り、今回は 1〜3 の層 を実装しました。4 の力の制御は研究要素が大きく、これからの取り組みです。
協調を4種類に分け、時間ごとに切り替える
協調のしかたは、腕どうしの結びつきの強さで分類されます。LEIVOR では次の4種類を扱います。
| 種類 | 動き | 例 |
|---|---|---|
| 非協調 | それぞれの腕が教示したとおりに動く | 左右で別々の動作 |
| 疎結合 | 腕は別々に動き、要所で動き出しをそろえる | 左手が支え、右手がねじを締め終えたら合流 |
| 一緒に持つ(密結合・対称) | 両手の中心を動かし、全部の腕が同じ物を持ったまま動く | タオルの2隅を持って運ぶ |
| 片方に従う(密結合・主従) | 主の腕は教示したとおり、他の腕は主の手先との位置関係を保つ | 片手で導き、もう片手が添える |
タオルは「一緒に持つ」、組み立ては「疎結合」の代表例です。そして、1つの動作の中で、時間ごとに協調のしかたを切り替えられます。「つかむまでは疎結合、持っている間は一緒に持つ、離したら非協調」という流れを、1本の動作として表せます。
タイムラインを「腕ごとの行」に
どちらの作業も、土台は同じタイムラインです。LEIVOR のタイムラインは腕ごとの行に分かれます。
- キーごとに「動かす腕」 を持ちます。指定しなければ全部の腕で、これまでの動作とまったく同じ扱いです。
- 複数の腕にまたがるキーは同期点 です。全部の腕がそろってから動き出し、そろって着きます。先に着いた腕は相手を待ちます。
- 協調区間 として、キーの範囲に「一緒に持つ」などの印を付けます。タイムライン上では帯として見えます。

両手で一緒に持つ:タオルを折る
しくみ
「一緒に持つ」は、次の3段で動かします。
- 把持関係を求める ― 区間の始まりの姿勢から、両手の中心と各手先の位置関係を求めます。
- 物体の座標を補間する ― 両手の中心を「持っている物の座標」とみなし、キーの間をなめらかに動かします。
- 全部の腕の IK を同時に解く ― 同じ時刻で全部の腕の逆運動学を解き、関節の指令にします。
両手の間隔は「広がり(%)」として、区間の中で変えられます。区間全体は 再生前にすべて計算 し、途中で届かない・関節が急に大きく動く・手先の誤差が大きい、といった場合は 腕を動かす前に理由を示して止めます。持っている物を途中で引っ張ってしまわないためです。
動作の作り方
新しい画面は作らず、今ある画面に欄を足しました。IK・JOG の「動かす腕」で複数の腕にチェックすると、「基準」と「広がり(%)」が出ます。

タオルを運ぶ動作は、次の5つの手順で教示できます。
- 左右の腕をタオルの角へ合わせ、グリッパーを閉じて、両腕のキーを追加
- 基準を「手先の中心」にして持ち上げ、キーを追加
- 中心を向こうへ動かして下げ、キーを追加
- タイムラインでキー1〜3を選び、協調区間「一緒に持つ」を追加
- グリッパーを開くキーを足して、再生
つかむ姿勢さえ作れば、あとは 両手の中心を1つの物として動かすだけ です。両腕の姿勢を毎回別々に合わせる必要はありません。
結果
| つかむ | 持ち上げる | 重ねる | 離す |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- 50×28 cm の布で、手前の辺が向こうの辺の 4 mm 手前 まで重なりました
- 再生中、腕どうしは一番近いところでも 29 cm 離れていました
左右で手分けする:ねじを締める
しくみ
組み立てでは、左右の腕がそれぞれ自分の手順で動き、決めたところで合流します。
| 腕 | 流れ |
|---|---|
| 右腕 | 部品へ動く → PLC 出力でねじを締める → 締め終わりの入力を待つ |
| 左腕 | 部品を支えたまま、右腕を待つ |
| 両腕 | そろったところで合流して、次の工程へ |
これを表すために、次のしくみを足しました。
- PLC 出力や入力待ちを、腕ごとに置ける ― その腕が着いたのを確かめてから出力し、その腕だけが入力を待ちます。ほかの腕は止まらずに進みます。
- 「並行」ブロック ― タスクの中で、枝ごとに担当の腕を決めて、別々のスキルを同時に動かします。全部の枝が終わったら次へ進みます。
- 左右の反転 ― 左腕で教示したスキルを、本体の対称面で鏡に映して右腕でも使えます。
- 学習した方策や AI エージェントにも担当の腕を指定 できます。

結果
シミュレーターには治具、左右で別の部品、ドライバーとねじを置き、PLC は Modbus で模擬しています。LEIVOR の PLC ノードとそのままやりとりできます。左右で部品を置き、片手で部品を支え、もう片手でドライバーを持って、PLC の合図でねじを締め、締め終わりの入力を待って次へ進むまでを、最後まで再生できました。

腕どうしがぶつからないように
2つの作業に共通して、腕どうしの干渉は動かす前と、動いている間の両方で見ています。
- 動かす前 ― 腕どうしの距離を計算し、近づきすぎる動作は再生しません。
- 動いている間 ― 組み立てのように入力待ちがあると、各腕がいつ動くかは実行してみないと決まりません。そのため距離を見張り、近づきすぎたら全部の腕を止めます。
- 遅れの見張り ― 協調区間で1本でも指令から遅れたら、全部の腕を止めます。
- 経路計画では他の腕を障害物に ― 片腕を経路計画で動かすときは、止まっている他の腕を障害物として扱います。
布と組み立てを扱うシミュレーター
タオルのような柔らかい物を試すため、MuJoCo の布モデルを使って AIDAL のシミュレーターを用意し、組み立て用の治具や部品、PLC の模擬も加えました。LEIVOR からは実機と同じ通信の口でつながるため、LEIVOR 側は実機でもシミュレーターでも同じ経路で動きます。
これからの課題
- 力覚 ― 今は関節の位置だけで動かしています。硬い物を両手で持つと、わずかな位置のずれがそのまま物への力になるため、力を感じて内力・張力を制御することが必要です。組み立てで「片手で支える」ときに、ねじの反力を受け止めることも同様です。
- 学習と教示の同時動作 ― 片腕を学習した方策、もう片腕を教示した動作で同時に動かす形は、まだこれからです。
- 3本以上の腕 ― 複数台の産業用ロボットの腕を協調させる形です。腕ごとに関節の情報が別々になるため、今回の双腕とは実装を大きく変えて取り組みます。
まとめ
- 研究で使われる 4層(タスク・協調・動作計画・制御) に沿って、多腕の協調動作を設計
- 協調4種類・腕ごとのタイムライン・協調区間・腕ごとの PLC/入力待ち・並行ブロック・干渉チェック を実装し、1つの動作の中で協調のしかたを切り替え可能に
- LEIVOR の画面上で教示した動作で、シミュレーター上の AIDAL が 両手でタオルを折る ことと、左右で手分けしてねじを締める ことを確認
- 次は力覚、学習と教示の同時動作、3本以上の腕に取り組みます
製品の詳細は LEIVOR 製品ページ をご覧ください。




