サンプルプログラム17:MM_S17_Vis_ParseLabel
プログラム概要
機能 |
ロボットはMech-Visionプロジェクトをトリガーして実行し、ビジョン結果を取得します。その後、ラベルを解析し、解析されたラベルに基づいて異なる処理ロジックを追加し、把持および配置を実行します。 |
ファイル場所 |
Mech-VisionとMech-Vizソフトウェアのインストールディレクトリにある |
必要なプロジェクト |
Mech-Visionプロジェクト(出力 ステップの labels ポートにデータがある必要があります) |
使用前提 |
|
このサンプルプログラムは参考用です。ユーザーは実際の状況に応じて、このプログラムを基に変更を加える必要があります。このプログラムをそのまま使用しないでください。 |
プログラム説明
以下はMM_S17_Vis_ParseLabelサンプルプログラムのコードと関連する説明です。
このサンプルは、MM_S1_Vis_Basicサンプルに比べて、ラベル解析機能(太字部分のコード)のみが追加されています。そのため、MM_S1_Vis_Basicサンプルと同じ部分のコードについては、以下で再度説明することはありません(詳細は MM_S1_Vis_Basicサンプルの説明 をご参照ください)。 |
NOP
'--------------------------------
'FUNCTION: trigger Mech-Vision
'project and get vision result,
'then parse the label info
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P070 P070
SUB P071 P071
'set 100mm to z of P070
SETE P070 (3) 100000
'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 NO.1 Mech-Vision project
CALL JOB:MM_START_VIS ARGF"1;0;2;30"
'get vision result from NO.1
'Mech-Vision project
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
'check whether vision result has
'been got from Mech-Vision
'successfully
IFTHENEXP I052<>1100
'add error handling logic here
'according to different error
'codes
'e.g.: I052=1003 means no point
'cloud in ROI
'e.g.: I052=1002 means no
'vision result
PAUSE
ENDIF
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
'save first vision point data to
'local variables
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
'parse label info received from
'Mech-Vision, eg. "I061=56" will
'decompose into 5 and 6
SET I064 I061
SET I065 I061
'I064=5
DIV I064 10
SET I063 I064
MUL I063 10
'I065=6
SUB I065 I063
IFTHENEXP I064=5
'add handling logic a
PAUSE
ELSE
'add handling logic b
PAUSE
ENDIF
'move to intermediate waypoint of
'picking
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move to picking waypoint
MOVL P071 V=50.0 PL=0
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'move to departure waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move to intermediate waypoint of
'placing
MOVJ C00003 VJ=50.00
'move to approach waypoint of
'placing
MOVL C00004 V=166.6 PL=0
'move to placing waypoint
MOVL C00005 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE
'move to departure waypoint of
'placing
MOVL C00006 V=166.6 PL=0
'move back to robot home position
MOVJ C00007 VJ=50.00
END
上記のサンプルプログラムの処理流れは、下図の通りです。
下表は、ラベル解析機能のコードとその説明です。コマンド名のリンクをクリックすることで、その詳細な説明を確認できます。
処理流れ | コートと説明 |
---|---|
ラベルを解析 |
MM_GET_POSE コマンドを使用して、ビジョンポイントのツール位置姿勢、ラベル、ロボットハンド番号をそれぞれ変数P071、変数I61、変数I62に保存できます。このサンプルでは、I061の変数値は56であると仮定しています。
上記の代入コマンドにより、I064とI065の変数値は56になります。
上記のコードは、I61をI064とI065に解析することを意味します。これにより、56を5と6に解析します。 |
解析されたラベル値に応じた処理ロジックの追加 |
上記のコードは、I064が5の場合は処理ロジックaを実行し、それ以外の場合は処理ロジックbを実行することを意味します。実際の適用シーンに応じて、異なるラベル値に対して異なる処理ロジックを追加することができます。 |