手の届くところにあるロボット

ロボット同士を会話させるには

作成者: Sam Paxton|2018/09/18 8:10:43

ビジョンシステムなど、ロボット支援機器の利用が広まっている現在、ロボットはますます複雑な作業を行うようになってきています。その結果、ロボット同士が部品を受け渡すような状況が生まれていますが、その際効率を落とさず生産時間を短縮するために、ロボット間での通信が必要になります。Universal Robotsの製品には、MODBUSProfiNetEtherNet/IPTCP/IPXMLRPCなど、新旧ほとんどすべてのネットワークに対応する通信プロトコルが備わっています。

TCP/IPとリモート制御

Universal Robotsの製品で特によく用いられる通信方法が、Ethernetを経由する単純なTCP/IPソケット接続です。TCP/IPが一般的である理由として、UR上で動作するリモート制御サーバの多く(プライマリサーバ、セカンダリサーバ、リアルタイムサーバ、ダッシュボードサーバなど)がTCP/IPを利用していることが挙げられます。これらのサーバは、外部デバイスや別のロボットで実行されているクライアントプログラムから、さまざまなコマンドをリモートで受け取ります。2台のロボットが部品を受け渡すとき、前に行った作業によってタイミングが変わる場合は、ダッシュボードサーバを使用してロボットの起動、一時停止、または停止を行うことができます。ダッシュボードサーバの実際の使用例として、2台のUR3がルービックキューブを攻略する事例を見てみましょう。

 

それぞれのロボットがキューブの3つの面を動かしていますが、一方のロボットが面を動かすために、もう一方のロボットがキューブの持ち方を変えなければならない場合があります。これを実現するために、キューブを保持する側のロボットが別の位置に移動し、準備が整ったらもう一方のロボットにそれを伝えます。次に、保持する側のロボットは自身のプログラムを一時停止し、面を動かす側のロボットから動かし終わった確認が出されるのを待ちます。

 

ダッシュボードサーバには、ロボットの起動/停止の他にも多くの機能があります。ダッシュボードサーバのコマンドおよび使用方法の詳細については、Universal Robots社のサポートページの記事15690を参照してください。

 リモートコントロールサーバによる制御

ダッシュボードサーバからは、プログラムのロード、ロボットの状態の取得、ロボットのオン/オフなど、高いレベルの機能を実行することができます。ロボットの移動などより具体的な機能は、プライマリサーバ(ポート30001)、セカンダリサーバ(ポート30002)、またはリアルタイムサーバ(ポート30003)によって実現されます。これらのサーバもロボット上で実行され、次のようなURScriptコマンドを待ち受けます。

  • movej(pose):ロボットを指定された姿勢に動かします。
  • sleep(seconds):指定された秒数の間、ロボットを待機させます。
  • freedrive_mode():ロボットをフリードライブモードにします。

これらのコマンドはエンコードされた文字列としてロボットに送信され、ただちに実行されます。この方法は、2台のロボット間の受け渡し位置が場合により変化する際に有効です。すなわち、部品を持っているロボットが他のロボットに、部品を受け渡そうとしている特定の位置に移動するように指示したり、現在の位置で所定の時間待機するよう指示したりできます。URScriptとそのネイティブ関数の詳細については、URScript Manual (SW3.5) をダウンロードしてください。
この機能によってURロボットをリモート操作できるようになるので、これらのサーバをまとめて「リモート制御サーバ」と呼びます。使用したい機能がURScriptでネイティブにサポートされていない場合は、定義済み関数を作成して、ロボットのプリアンブル(データ本体に先立って送信される信号)に含めることができます。これで、ロボットはリモートサーバ経由で送信された新しいコマンドを理解できるようになります。

ダッシュボードサーバのテスト:テストには、ハイパーターミナルなどソケットをテストするプログラムを使用することができます。この例では、SocketTestというフリーウェアを使用しています。


XMLRPCが有効な場合

取り上げておきたいもう一つの通信方法がXMLRPCです。
これは「XMLフォーマットのリモートプロシージャコール」(XML-formatted Remote Procedure Call)の略で、必ずしもロボット間の通信には使用されないものですが、URScriptのサポート外となる関数を実行する場合に非常に便利です。
XMLRPCは、別の言語で記述されたプログラムまたは定義済み関数を呼び出すことができるため、URControllerと互換性がないけれど、別途実行する必要があるルーチンに対してとりわけ有効です。
XMLRPCの機能の詳細については、Universal Robots社のサポートページの記事16326を参照してください。

 米国インディアナ州のTask Force Tips社では、2台のUR5ロボットがタンデムに配置され、ビジョン制御型のマシン・テンディング(部品搬送・取り出し)のシステムに組み込まれています。ビジョンシステムとロボットの間のすべての通信はMODBUS経由で行われています。

MODBUSに関する電子書籍の入手
MODBUSプロトコルは、ロボットの世界で広く使わる業界標準の通信規格です。MODBUSMODBUSコントローラとの組み合わせで使用されることが多いのですが、ロボット単独で他のロボットとの通信に使用することもできます。
UR
の販売代理店であるAxis New England社では、MODBUS接続のセットアップ方法や2台のロボット間の通信を構成するために必要な事項を説明した便利な電子書籍(eBook形式)を発行しています。この電子書籍では、MODBUSレジスタを使用して2台のロボット間で座標情報を送信するサンプルプログラムも紹介されており、サンプルプログラムおよび実演動画のダウンロードリンクも記載されています。