サンプルプログラム12:MM_S12_Viz_ForLoop

現在ご覧いただいているのは最新版の内容です(V2.1.0)。異なるバージョンを参照する場合は、画面右上のボタンから切り替えが可能です。

■ ご利用中のバージョンが分からない場合はお気軽にサポート窓口までご連絡ください。

プログラム概要

機能

ロボットがMech-Vizプロジェクトをトリガーして実行し、計画された経路を取得します。その後、ループで計画された経路を保存し、把持および配置を実行します。

ファイル場所

Mech-VisionとMech-Vizソフトウェアのインストールディレクトリにある Communication Component/Robot_Interface/YASKAWA/sample/MM_S12_Viz_ForLoop

必要なプロジェクト

Mech-VisionとMech-Vizプロジェクト

使用前提

  1. 標準インターフェース通信設定 が完了しました。

  2. 自動キャリブレーション が完了しました。

このサンプルプログラムは参考用です。ユーザーは実際の状況に応じて、このプログラムを基に変更を加える必要があります。このプログラムをそのまま使用しないでください。

プログラム説明

以下はMM_S12_Viz_ForLoopサンプルプログラムのコードと関連する説明です。

MM_S2_Viz_Basicは計画された経路点を一つずつ保存しますが、このサンプル(太字部分のコード)はループを使用して計画された経路点を保存します。そのため、MM_S2_Viz_Basicサンプルと同じ部分のコードについては、以下で再度説明することはありません(詳細は MM_S2_Viz_Basicサンプルの説明 をご参照ください)。
NOP
'--------------------------------
'FUNCTION: trigger Mech-Viz
'project and get planned path,get
'poses using for-loop structure
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
'move to image-capturing position
MOVJ C00001 VJ=50.00 PL=0
'open socket connection
CALL JOB:MM_OPEN_SOCKET
'trigger Mech-Viz project
CALL JOB:MM_START_VIZ ARGF"2;30"
'get planned path, 1st argument
'(1) means getting pose in JPs
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"
'check whether planned path has
'been got from Mech-Viz
'successfully
IFTHENEXP I053<>2100
	'add error handling logic here
	'according to different error
	'codes
	'e.g.: I053=2038 means no
	'point cloud in ROI
	 PAUSE
ENDIF
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
'save waypoints of planned path
'to local variables using
'for-loop structure
SET I001 1
SET I002 71
SET I003 61
SET I004 81
*CYCLE
VAL2STR S001 I001
VAL2STR S002 I002
VAL2STR S003 I003
VAL2STR S004 I004
CHR$ S005 59
CAT$ S000 S001 S005
CAT$ S000 S000 S002
CAT$ S000 S000 S005
CAT$ S000 S000 S003
CAT$ S000 S000 S005
CAT$ S000 S000 S004
CALL JOB:MM_GET_JPS ARGFS000
INC I001
INC I002
INC I003
INC I004
IFTHENEXP I001⇐I051
	 JUMP *CYCLE
ENDIF
'follow the planned path to pick
'move to approach waypoint of
'picking
MOVJ P071 VJ=50.00 PL=0
'move to picking waypoint
MOVJ P072 VJ=10.00 PL=0
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'move to departure waypoint of
'picking
MOVJ P073 VJ=50.00 PL=0
'move to intermediate waypoint of
'placing
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'placing
MOVL C00003 V=166.6 PL=0
'move to placing waypoint
MOVL C00004 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE
'move to departure waypoint of
'placing
MOVL C00005 V=166.6 PL=0
'move back to robot home position
MOVJ C00006 VJ=50.00
END

上記のサンプルプログラムの処理流れは、下図の通りです。

sample12

下表は、ループで計画された経路を保存するコードとその説明です。コマンド名のリンクをクリックすることで、その詳細な説明を確認できます。

処理流れ コートと説明

ループで計画された経路を保存

SET I001 1
SET I002 71
SET I003 61
SET I004 81

SETコマンドは、他のプログラミング言語の代入文と似ています。上記のコードは、変数I001、I002、I003、I004をそれぞれ1、71、61、81に代入することを意味します。

*CYCLE
...
    JUMP *CYCLE

上記のコードは、プログラムが「*CYCLE」と「JUMP *CYCLE」の間のコードを繰り返し実行することを意味します。

VAL2STR S001 I001
VAL2STR S002 I002
VAL2STR S003 I003
VAL2STR S004 I004

VAL2STRコマンドは、他のデータ型の変数を文字列型の変数に変換することを意味します。例えば、I001の変数値が整数型の1である場合、「VAL2STR S001 I001」は、整数型の1を文字列型の"1"に変換しすることを意味します。この時点でS001の変数値は"1"になります。したがって、整数型の変数I001、I002、I003、I004がそれぞれ1、71、61、81である場合、プログラムは上記のコードを実行した後、S001、S002、S003、S004がそれぞれ"1"、"71"、"61"、"81"となります。

CHR$ S005 59

上記のコードは、文字コード59の文字「;」(英語セミコロン)をS005に保存することを意味します。

CAT$ S000 S001 S005
CAT$ S000 S000 S002
CAT$ S000 S000 S005
CAT$ S000 S000 S003
CAT$ S000 S000 S005
CAT$ S000 S000 S004

CAT$コマンドは、他のプログラミング言語における文字列結合の操作に似ています。例えば、S001が文字列"1"、S005が文字列";"である場合、「CAT$ S000 S001 S005」は、"1"と";"を結合して"1;"にし、それをS000に代入することを意味します。この時点でS000の変数値は"1;"になります。プログラムが上記のコマンドを実行した後、S000の変数値は"1;71;61;81"になります。

CALL JOB:MM_GET_JPS ARGFS000

S000の変数値が"1;71;61;81"である場合、上記のコマンドは「CALL JOB:MM_GET_JPS ARGF"1;71;61;81"」に相当します。

INC I001
INC I002
INC I003
INC I004

INCコマンドは、指定された変数の値を1増加させることを意味します。上記のコマンドは、I001、I002、I003、I004の変数値をそれぞれ1増加させることを意味します。

IFTHENEXP I001<=I051
	 JUMP *CYCLE
ENDIF

I001はループ回数を表します。I051は MM_GET_VIZDATA コマンドの2番目のパラメータに対応する変数で、これはビジョンシステムから返された経路点の数を示します。

このサンプルでは、計画された経路に3つの経路点(把持のアプローチ点、把持点、把持の離れる点)があると仮定すると、I051は3となります。上記のループは次の2つのコマンドに相当します。

CALL JOB:MM_GET_JPS ARGF"2;72;62;82"
CALL JOB:MM_GET_JPS ARGF"3;73;63;83"

Mech-Mindは、お客様のプライバシーを重視しています

このサイトでは最高の体験を提供するために Cookie を使用しています。サイトの閲覧を続ける場合、Cookie の使用に同意したことになります。「拒否する」を選択すると、このサイトを訪れた際に追跡や記憶が行われないように単独の Cookie が使用されます。