把持と配置を実行
本ガイドでは、簡単な把持・配置ロジックを構築するためのロボットプログラムの書き方を習得できます。
本ガイドでは、ロボットアプリケーションは以下の機能を実装しています。
-
プログラムを実行するたびに、Mech-Visionプロジェクトは1回実行させます。
-
Mech-Visionプロジェクトを1回実行すると、1つのビジョンポイント(TCP位置姿勢)が返されます。
-
ロボットは、返されたビジョン結果と事前定義済みの把持・配置経路に基づいて、ワークの把持と配置を完了します。
動画:プログラムのデバッグと実行
|
通信概要
以下では、YaskawaロボットとMech-Mindビジョンシステム間の通信の基本原理について説明します。
YaskawaロボットとMech-Mindビジョンシステムは、TCP Socketプロトコル(データ形式はASCII文字列)に基づく標準インターフェースを使用して相互に通信します。その中、ロボットはTCPクライアントとし、ビジョンシステムはTCPサーバーとします。ロボットとビジョンシステム間の通信フローを下図に示します。
プログラミング説明
以下では、Yaskawaロボットの把持・配置アプリケーションを作成するための基礎知識について説明します。
把持・配置アプリケーションを作成する目的は、ロボットとビジョンシステム間の標準インターフェース通信を行うことと、ビジョンシステムによりロボットの把持・配置作業を可能にすることです。このアプリケーションには、TCP接続の確立/切断、データ転送、ロボット動作とDO制御など、様々な機能が含まれています。把持・配置アプリケーションを作成するためのコマンドには、Yaskawaロボットのコマンドと標準インターフェースコマンドの2種類があります。
Yaskawaロボットのコマンド
Yaskawaロボットのコマンドとは、YaskawaロボットのINFORMロボット言語でサポートされているコマンドで、入出力コマンド、制御コマンド、演算コマンド、移動コマンド、シフトコマンド、およびその他の追加コマンドなどが含まれます。簡単な把持・配置アプリケーションを作成するためのコマンド説明については、Yaskawaロボットのよく使うコマンド説明 をご参照ください。
標準インターフェースコマンド
標準インターフェースコマンドとは、標準インターフェースを使用したYaskawaロボットでサポートされているコマンドのことで、ビジョンシステムとの標準インターフェース通信に使用されます。これにはTCP Socket通信やデータ交換などの機能に関するコマンドが含まれます。Yaskawaロボットがサポートしている標準インターフェースコマンドの詳細については、Yaskawaロボットの標準インターフェースコマンド説明 をご参照ください。
Yaskawaロボットがサポートしている標準インターフェースコマンドは、ロボットに読み込まれたフォアグラウンドプログラム(Job)に組み込まれています。フォアグラウンドプログラムがロボットに読み込まれた後 、Yaskawaロボットのコマンド CALL
を使用してフォアグラウンドプログラムを呼び出すことで、標準インターフェースコマンドの呼び出しを実現します。例えば、 CALL JOB:MM_OPEN_SOCKET
のようなコマンドを使用します。
把持・配置アプリケーションの作成方法
把持・配置アプリケーションを作成する最も簡単な方法は、既存のサンプルプログラムを基に修正し、デバッグすることです。
Mech-Mindビジョンシステムと併用可能な把持・配置アプリケーションを迅速に作成するために、Mech-Mindは3つのサンプルプログラムを提供しています。本ガイドでは、最初のサンプルプログラムを基に修正とデバッグを行います。このサンプルは簡単な把持と配置を実現しています。一度にビジョンシステム(Mech-Visionのみ)から1つのみのビジョンポイントを取得し、把持と配置を行います。
サンプルコードは以下の通りです。
NOP
'*****************************
'FUNCTION:simple pick and place
'with Mech-Vision
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
SUB P070 P070
SUB P071 P071
'set 200mm to Z
SETE P070 (3) 200000
'move to the home position
MOVJ C00000 VJ=80.00
'move to the camera position
MOVJ C00001 VJ=80.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
CALL JOB:MM_OPEN_SOCKET
'set vision recipe
CALL JOB:MM_SET_MODEL ARGF"1;1"
'Run vision project
CALL JOB:MM_START_VIS ARGF"1;0;2"
'get result from Vis
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
PAUSE IF I052<>1100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
SFTON P070
MOVJ P071 VJ=50.00
SFTOF
MOVL P071 V=80.0 PL=0
'enable gripper
DOUT OT#(1) ON
SFTON P070
MOVJ P071 VJ=50.00
SFTOF
MOVJ C00002 VJ=80.00
'drop point
MOVJ C00003 VJ=80.00 PL=0
'release gripper
DOUT OT#(1) OFF
CALL JOB:MM_CLOSE_SOCKET
END
上記のサンプルプログラムによって作成された把持・配置ロジックを下図に示します。
下表は、把持・配置ロジックの各ステップと修正が必要な部分を示します。
ステップ | コード | 詳細 | ||
---|---|---|---|---|
変数初期化 |
NOP 'clear I50 to I69 CLEAR I050 20 'Initialize p variables SUB P070 P070 SUB P071 P071 'set 200mm to Z SETE P070 (3) 200000 |
プログラムに使用される整数型変数と位置型変数を初期化します。通常の場合、対応するコードの修正は必要ありません。 |
||
初期位置に移動 |
'move to the home position MOVJ C00000 VJ=80.00 |
ロボットTCPを設定された初期位置に移動させます。初期位置はロボット動作の開始位置だけでなく、安全な位置でもあります。この位置で、ロボットが把持する対象物や周囲の機器から離れ、カメラの視野を遮らないようにする必要があります。
|
||
画像撮影位置に移動 |
'move to the camera position MOVJ C00001 VJ=80.00 PL=0 |
ロボットTCPを設定された画像撮影位置に移動させます。画像撮影位置とは、カメラが画像を撮影したときにロボットがいる位置を指します。この位置では、ロボットハンドがカメラ視野を遮らないようにする必要があります。
|
||
通信確立 |
'set ip address of IPC CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1" TIMER T=0.20 CALL JOB:MM_OPEN_SOCKET |
通信パラメータを初期化し、ビジョンシステムとのTCP Socket通信を確立します。
|
||
Mech-Visionプロジェクトによるビジョン認識 |
'set vision recipe CALL JOB:MM_SET_MODEL ARGF"1;1" 'Run vision project CALL JOB:MM_START_VIS ARGF"1;0;2" |
まずMech-Visionパラメータレシピ(複数種類のワークの場合)を切り替え、Mech-Visionプロジェクトの実行をトリガーしてワークの把持位置姿勢を取得します。本ガイドでは、1種類のワークのみを処理するため、パラメータレシピの切り替えは必要あません。
|
||
ビジョンポイントを取得 |
'get result from Vis CALL JOB:MM_GET_VISDATA ARGF"1;51;52" PAUSE IF I052<>1100 'set the first pos to P071; 'set lables to I61; 'set speed to I62; CALL JOB:MM_GET_POSE ARGF"1;71;61;62" |
Mech-Visionからビジョンポイントを取得し、ビジョンポイントの位置姿勢、位置姿勢が対応するラベルと速度値を変数に保存します。
|
||
アプローチ点に移動 |
SFTON P070 MOVJ P071 VJ=50.00 SFTOF |
ロボットTCPをアプローチ点に移動させ、画像撮影位置から把持点までの移動中に、ロボットがシーンの物体(コンテナなど)と衝突するのを防ぎます。 サンプルプログラムでは、把持点(P071)より200mm上方(アプローチ点)にロボットTCPを移動させます。アプローチ点から把持点の距離が小さすぎる場合、変数P070のZ軸値を変更することができます。 'set 200mm to Z SETE P070 (3) 200000 |
||
把持点に移動 |
MOVL P071 V=80.0 PL=0 |
ロボットTCPを把持点(P071)に移動させます。 サンプルプログラムでは、ロボットTCPはアプローチ点から把持点まで直線移動させます。サンプルコードは、変更せずにそのまま使用できます。 |
||
DO設定による把持 |
'enable gripper DOUT OT#(1) ON |
ロボットハンドを開いてワークを把持します。 本ガイドで使用されるロボットハンドは、汎用出力信号2がオンになると開いた状態に保持されます。したがって、ここでは汎用出力信号を2に設定する必要があります。汎用出力信号は実際の状況に応じて設定する必要があります。 |
||
離れる点に移動 |
SFTON P070 MOVJ P071 VJ=50.00 SFTOF |
ロボットTCPを離れる点に移動させ、ワーク把持後にロボットがシーンの物体(コンテナなど)と衝突するのを防ぎます。 サンプルプログラムでは、把持点(P071)より200mm上方(離れる点)にロボットTCPを移動させます。離れる点から把持点の距離が小さすぎる場合、変数P070のZ軸値を変更することができます。 'set 200mm to Z SETE P070 (3) 200000
|
||
中間点に移動 |
MOVJ C00002 VJ=80.00 |
ロボットTCPを設定された中間点に移動させ、ロボットがシーンの物体と衝突するのを防ぎます。 このステップでは、中間点の設定が必要です。実際の状況に応じて中間点をさらに追加することができます。 |
||
配置位置に移動 |
'drop point MOVJ C00003 VJ=80.00 PL=0 |
ロボットTCPを設定された配置位置に移動させます。 このステップでは、配置位置の設定が必要です。 |
||
DO設定による配置 |
'release gripper DOUT OT#(1) OFF |
ロボットハンドを閉じてワークを配置します。 本ガイドで使用されているロボットハンドは、汎用出力信号1がオンになると閉じられ、ワークの配置を行います。したがって、ここでは汎用出力信号1のステータスをONに設定する必要があります。汎用出力信号の番号とステータスは、実際の状況に応じて設定する必要があります。 |
||
通信終了 |
CALL JOB:MM_CLOSE_SOCKET END |
TCP Socket通信を切断します。サンプルコードは、変更せずにそのまま使用できます。 |
サンプルプログラムの詳細については、 サンプルプログラムの解説 をご参照ください。 |
サンプルプログラムの修正とデバッグ
このサンプルプログラムで使用されているロボット位置姿勢は、TCP位置姿勢となります。サンプルプログラムの修正とデバッグを行う前に、ツールID(01など)を把持のためのロボットハンドの番号に切り替え、このツールのTCP設定を完了する必要があります。 |
サンプルプログラムを開く
把持・配置のサンプルプログラムの修正とデバッグを行うには、まずはサンプルプログラムを開きます。
-
ONLINE MODE では、 Main Menu から
を選択し、インストールされているプログラム一覧が表示されます。 -
mm_sample プログラムをクリックして選択し、SELECT を押して開きます。
サンプルプログラム冒頭のコードは変数の初期化に使用され、通常は変更する必要はありません。 |
初期位置に移動
ロボットTCPを設定された初期位置に移動させます。ここではロボットの初期位置を設定する必要があります。
下記のコードの修正が必要です。
'move to the home position MOVJ C00000 VJ=80.00
ロボットの初期位置を設定するには、以下の操作を実行します。
-
ティーチペンダントのキーを
TEACH
に合わせると ティーチモード になります。 -
手動でロボットをプログラムによって設定された初期位置に移動させます。
-
ティーチペンダントの ▼ キーを押して「MOVJ C00000 VJ=80.00」行を選択し、MODIFY キーを押します。その後、ENTER キーを押し、初期位置の位置姿勢をロボットの現在のTCP位置姿勢に変更します。
「VJ=80.00」は関節運動の速度が80%であることを示します。その他のパラメータの調整は必要ありません。
画像撮影位置に移動
ロボットTCPを設定された画像撮影位置に移動させます。ここでは、ロボットの画像撮影位置を設定する必要があります。
下記のコードの修正が必要です。
'move to the camera position MOVJ C00001 VJ=80.00 PL=0
画像撮影位置を設定するには、以下の操作を実行します。
-
ティーチモード では、手動でロボットを画像撮影位置に移動させます。
-
ティーチペンダントの ▼ キーを押して「MOVJ C00001 VJ=80.00 PL=0」行を選択し、MODIFY を押します。その後、ENTER キーを押し、画像撮影位置をロボットの現在のTCP位置姿勢に変更します。
「VJ=80.00」は関節運動の速度が80%で、「PL=0」は位置レベルが0であることを示します。この2つのパラメータを調整する必要はありません。位置レベルは、ロボットをティーチ位置に設定した際のその位置への接近度を調整するために使用されます。値の範囲は0から8で、値が小さいほど位置はより近くになります。
通信確立
ビジョンシステムとのTCP接続を確立します。このステップでは、「通信初期化」コマンド(MM_INIT_SOCKET)のパラメータ(IPCのIPアドレスとポート)を調整する必要があります。
以下のサンプルコードの修正が必要です。
'set ip address of IPC CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1" TIMER T=0.20 CALL JOB:MM_OPEN_SOCKET
「通信初期化」コマンドのパラメータを設定するには、以下の手順を実行します。
-
ティーチモードでは、ティーチペンダントの ▼ キーを押して「CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1」行を選択し、SELECT キーを押します。
-
ティーチペンダントパネルのソフトキーボードを使用して「192.168.170.22」と「50000」をそれぞれIPCのIPアドレスとポートに変更し、パネルの OK を押して変更を保存します。
Mech-Visionプロジェクトによるビジョン認識
Mech-Visionプロジェクトを実行してビジョン処理による認識を行い、ビジョン結果を出力します。
ここでは、「Mech-Visionプロジェクトを実行」コマンドのパラメータを変更する必要があります。本ガイドは1種類のワークのみを処理するため、「Mech-Visionパラメータレシピの切り替え」コマンドをコメントアウトする必要もあります。
以下のサンプルコードの修正が必要です。
CALL JOB:MM_SET_MODEL ARGF"1;1" 'Run vision project CALL JOB:MM_START_VIS ARGF"1;0;2"
「Mech-Visionパラメータレシピの切り替え」コマンドをコメントアウトし、「Mech-Visionプロジェクトを実行」コマンドのパラメータを変更するには、以下の手順を実行します。
-
ティーチモード では、ティーチペンダントの ▼ キーを押して「CALL JOB:MM_SET_MODEL ARGF"1;1」行を選択し、EDIT タブをクリックします。その後、COMMENT OUT を選択してティーチペンダントの SELECT キーを押します。
複数種類のワークが含まれるプロジェクトでは、パラメータレシピを使用する必要があります。この場合、2番目のパラメータを現在のワークに対応するパラメータレシピの番号に変更する必要があります。 -
ティーチペンダントの ▼ キーを押して「CALL JOB:MM_START_VIS ARGF"1;0;2"」行を選択し、SELECT キーを押します。
-
ティーチペンダントパネルのソフトキーボードを使用して「MM_START_VIS」コマンドのパラメータ(例えば、1;1;0)を変更し、パネルの OK をクリックして変更を保存します。
-
1:Mech-Visionプロジェクト番号です。本ガイドで使用されているプロジェクトの番号が1であるため、変更する必要はありません。
-
0:このサンプルプログラムでは、一度にMech-Visionから1つのビジョンポイントを取得するため、この値を1に変更する必要があります。
-
2:このサンプルプログラムでは、ロボットの位置姿勢をMech-Visionに送信する必要がないため、この値を0に変更する必要があります。
-
ビジョンポイントを取得
Mech-Visionからビジョン結果を取得し、ビジョン結果の取得が成功したかどうかを判断します。取得に成功すると、ビジョンポイントの位置姿勢は位置型変数P071に格納され、この位置姿勢が対応するラベルデータは整数型変数I061に格納され、この位置姿勢が対応する移動速度が整数型変数I062に格納されます。
下記のコードは、修正せずにそのまま使用できます。
'get result from Vis CALL JOB:MM_GET_VISDATA ARGF"1;51;52" PAUSE IF I052<>1100 'set the first pos to P071; 'set lables to I61; 'set speed to I62; CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
アプローチ点に移動
ロボットTCPをアプローチ点に移動させます。
|
下記のコードは、修正せずにそのまま使用できます。本ガイドでは、Z軸のオフセット値を200mmに設定します。実際の状況に応じて設定する必要があります。
'set 200mm to Z SETE P070 (3) 200000 ... SFTON P070 MOVJ P071 VJ=50.00 SFTOF
DO設定による把持
本ガイドでは、開閉式のロボットハンドが使用されており、出力信号による制御します。出力信号2をオンにするとロボットハンドが開き、出力信号1をオンにするとロボットハンドが閉じます。 |
出力信号2をオンにすることでロボットハンドを開き、ワークの把持を実現します。したがって、出力信号の番号を2に設定する必要があります。
以下のサンプルコードの修正が必要です。
'enable gripper DOUT OT#(1) ON
出力信号の番号を2に変更するには、以下の手順を実行します。
-
ティーチモード では、ティーチペンダントの ▼ キーを押して「DOUT OT#(1) ON」行を選択し、SELECT キーを押します。
-
出力信号「1」を「2」に変更し、パネルの OK をクリックして確定します。
離れる点に移動
ロボットTCPは把持点から、離れる点まで直線移動させます。
|
下記のコードは、修正せずにそのまま使用できます。
'set 200mm to Z SETE P070 (3) 200000 ... SFTON P070 MOVJ P071 VJ=50.00 SFTOF
中間点に移動
ロボットTCPを設定された配置位置に移動させます。
ロボットとシーンの衝突を避けるために、通常、離れる点と配置位置の間に中間点を追加します。ここでは、1つの中間点のみを追加します。実際の応用シーンでは、配置経路を最適化するためにさらに中間点を追加することができます。 |
下記のコードの修正が必要です。
MOVJ C00002 VJ=80.00
中間点を設定するには、以下の手順を実行します。
-
ティーチモードでは、手動でロボットを適切な中間点に移動させます。
-
ティーチペンダントの ▼ キーを押して「MOVJ VJ=80.00」行を選択し、MODIFY を押します。その後、ENTER キーを押し、中間点をロボットの現在のTCP位置姿勢に変更します。
配置位置に移動
ロボットTCPを設定された配置位置に移動させます。
下記のコードの修正が必要です。
'drop point MOVJ C00003 VJ=80.00 PL=0
ロボットの配置位置を設定するには、以下の手順を実行します。
-
ティーチモードでは、手動でロボットを適切な配置位置に移動させます。
-
ティーチペンダントの ▼ キーを押して「MOVJ VJ=80.00 PL=0」行を選択し、MODIFY キーを押します。その後、ENTER キーを押し、配置位置をロボットの現在位置姿勢に変更します。
プログラムの実行をテスト
-
ティーチペンダントのキーを
PLAY
に合わせると、再生モード になります。 -
ティーチペンダントの SERVO ON READY を押し、青いRUNボタンを押します。
ロボットは把持・配置アプリケーションを自動的に実行し、ワークの把持と配置を完了します。
ロボットの動作経路にご注意ください。緊急時には緊急停止ボタンを押してください。 |
これで、簡単な把持・配置アプリケーションの作成が完了しました。
参考情報
Yaskawaロボットのよく使うコマンド
より詳しい情報は、Yaskawaロボットの《YRC1000/YRC1000micro/DX200 INFORM 取扱説明書》をご参照ください。
コマンド | 詳細 | プログラミング文法 | 例 |
---|---|---|---|
NOP |
プログラムの開始コマンドであり、何の操作も実行しません。 |
NOP |
|
' |
コードのコメントアウトを実行します。 |
' コメントアウトする文字列 |
|
END |
プログラムは終了します。 |
END |
|
CLEAR |
データ2で指定された数に従って、データ1で指定された番号以降の変数の内容をゼロにします。 |
CLEAR <データ1> <データ2> |
|
SUB |
データ1からデータ2を引き、結果をデータ1に保存します。 |
SUB <データ1> <データ2> |
|
SETE |
データ2をデータ1に設定する位置型変数の要素となります。 |
SETE <データ1> <データ2> |
|
MOVJ |
関節補間(関節運動方式)によりティーチ位置に移動します。対象位置に移動する際、ロボットの経路を制限しない場合に使用されます。 |
MOVJ ロボットティーチ位置のファイル番号 VJ = 関節運動の速度(%) |
|
MOVL |
直線補間(直線運動方式)によりティーチ位置に移動します。直線経路に従って、ティーチング後の位置に移動します。 |
MOVL ロボットティーチ位置のファイル番号 V=TCP速度(mm/秒) PL=位置ラベル(0~8) |
|
CALL |
指定したプログラムを呼び出します。 |
CALL JOB:呼び出されるプログラム |
|
TIMER |
指定した時間まで待機します。 |
TIMER T=時間(秒単位) |
TIMER T=0.20
|
PAUSE |
プログラムの実行を一時停止します。 |
PAUSE IF |
|
IF |
アクション(動作)を実行する際に、ある条件が成立しているかどうかを判断して、適切な処理を行います。これは、他の処理コマンドの後に追加して使用されます。 |
IF <対象1>演算子(=、<>など) <対象1> |
|
SFTON |
並進移動を開始します。並進移動の量は、座標系内のX、Y、Zの増分値であり、位置型変数に設定されます。 |
SFTON 位置型変数の番号 |
SETE P070 (3) 200000 ... SFTON P070 MOVJ P071 VJ=50.00 SFTOF ロボットが関節運動で把持点(P071)の200mm上(アプローチ点)まで移動します。 |
SFTOF |
並進移動を終了します。通常、SFTONとペアで使用されます。 |
SFTOF |
|
DOUT |
汎用出力信号のオン/オフを切り替えます。 |
DOUT OT#(出力信号) ON/OFF |
|
サンプルプログラムの解説
-
NOP
意味:プログラムの実行を開始します。
-
'clear I50 to I69 CLEAR I050 20
意味:整数型変数I50からI69の値をゼロにします。本ガイドでは、I50からI69の変数はステータス、数量、ラベル値を保存するために使用されます。
-
'Initialize p variables SUB P070 P070 SUB P071 P071
意味:位置型変数P070とP071の値をゼロにします。本ガイドでは、変数P071は把持位置姿勢を保存するために使用されます。把持点に対するアプローチ点と離れる点のZ軸のオフセットは、変数P070のZ軸値に保存されます。
-
'set 200mm to Z SETE P070 (3) 200000
意味:把持点に対するアプローチ点と離れる点のZ軸のオフセットをP070変数のZ軸値として保存します。単位はミクロンです。本ガイドでは、オフセットの初期値は200000ミクロン、即ち200ミリメートルとなります。
-
'move to the home position MOVJ C00000 VJ=80.00
意味:ロボットTCPを設定された初期位置に移動させます。「VJ=80.00」は関節運動の速度が80%であることを示します。ここでは初期位置の設定が必要です。
-
'move to the camera position MOVJ C00001 VJ=80.00 PL=0
意味:ロボットTCPを設定された画像撮影位置に移動させます。「VJ=80.00」は関節運動の速度が80%で、「PL=0」は位置レベルが0であることを示します。位置レベルは、ロボットをティーチ位置に設定した際のその位置への接近度を調整するために使用されます。値の範囲は0から8で、値が小さいほど位置はより近くになります。
-
'set ip address of IPC CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
意味:通信パラメータ(IPCのIPアドレスとポート)を初期化します。
-
TIMER T=0.20
意味:ロボットは0.2秒待機します。
-
CALL JOB:MM_OPEN_SOCKET
意味:TCP Socket通信接続を確立します。
-
'set vision recipe CALL JOB:MM_SET_MODEL ARGF"1;1"
意味:プロジェクトのパラメータレシピを切り替えます。プロジェクトは複数種類のワークを処理する場合、パラメータレシピの使用が必要になります。
-
'Run vision project CALL JOB:MM_START_VIS ARGF"1;0;2"
意味:Mech-Visionプロジェクトの実行をトリガーし、ビジョン処理による認識を行います。「MM_START_VIS」コマンドのパラメータを正しく設定する必要があります。
-
'get result from Vis CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
意味:ビジョンポイントを取得し、ビジョンポイントの送信が完了したかどうかのステータス、返された位置姿勢の数、コマンドのステータスコードをそれぞれ変数I050~I052に保存します。
-
PAUSE IF I052<>1100
意味:コマンドのステータスコード(I052変数値)が1100(正常実行完了のコード)でない場合、プログラムの実行は中止されます。
-
'set the first pos to P071; 'set lables to I61; 'set speed to I62; CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
意味:取得されたビジョン結果から、最初の位置姿勢とそれに対応するラベルおよび移動速度データをP071、I061、I062に保存します。後続の呼び出しに使用されます。
-
SFTON P070 MOVJ P071 VJ=50.00 SFTOF
意味:並進移動コマンドにより、ロボットTCPを関節運動で画像撮影位置からアプローチ点に移動させます。把持点に対するアプローチ点のZ軸のオフセットは、変数P070のZ軸値によって決まります。
-
MOVL P071 V=80.0 PL=0
意味:ロボットTCPは直線運動で把持点(変数P071によって指定された位置)に移動させます。TCP移動速度は80mm/sであり、位置ラベルは0です。
-
'enable gripper DOUT OT#(1) ON
意味:出力信号1をオンにすることで、ロボットハンドを制御してワークを把持します。汎用出力信号は実際の状況に応じて設定する必要があります。
-
SFTON P070 MOVJ P071 VJ=50.00 SFTOF
意味:並進移動コマンドにより、ロボットTCPは直線運動で離れる点に移動させます。把持点に対する離れる点のZ軸のオフセットは、変数P070のZ軸値によって決まります。
-
MOVJ C00002 VJ=80.00
ロボットTCPを設定された中間点に移動させ、ロボットがシーンの物体と衝突するのを防ぎます。ここでは中間点を設定する必要があります。
-
'drop point MOVJ C00003 VJ=80.00 PL=0
ロボットTCPを設定された中間点に移動させ、ロボットがシーンの物体と衝突するのを防ぎます。ここでは中間点を設定する必要があります。
-
'release gripper DOUT OT#(1) OFF
意味:出力信号1をオフにし、ロボットハンドを制御してワークを配置します。実際の応用シーンでは、実際の状況に応じて出力信号の番号やステータスを変更する必要があります。
-
CALL JOB:MM_CLOSE_SOCKET
意味:TCP Socket通信接続を切断します。
-
END
意味:プログラムは終了します。