サンプルプログラム1:MM_S1_Vis_Basic
プログラム概要
機能 |
ロボットがMech-Visionプロジェクトをトリガーして実行し、その後ビジョン結果を取得して、把持および配置を実行します。 |
ファイル場所 |
Mech-VisionとMech-Vizソフトウェアのインストールディレクトリにある |
必要なプロジェクト |
Mech-Visionプロジェクト |
使用前提 |
|
このサンプルプログラムは参考用です。ユーザーは実際の状況に応じて、このプログラムを基に変更を加える必要があります。このプログラムをそのまま使用しないでください。 |
プログラム説明
以下はMM_S1_Vis_Basicサンプルプログラムのコードと関連する説明です。
NOP
'--------------------------------
'FUNCTION: trigger Mech-Vision
'project and get vision result
'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"
'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
上記のサンプルプログラムの処理流れは、下図の通りです。
下表は上記のプログラムのコードとその説明です。コマンド名のリンクをクリックすることで、その詳細な説明を確認できます。
処理流れ | コートと説明 | ||
---|---|---|---|
変数初期化 |
このコマンドは、整数型変数I050からI069(合計20個)の値をすべて0にクリアすることを意味します。
上記の2つのコマンドは、位置型変数P070とP071をそれぞれ0に設定することを意味します。
上記のコマンドは、位置型変数P070のZ軸データを100000μm(100mm)に設定することを意味します。 |
||
Home位置に移動 |
このコマンドは、ロボットが関節移動の方式で設定されたHome位置に移動することを意味します。 |
||
通信初期化 |
このコマンドは、ロボットが MM_INIT_SOCKET コマンドを使用して、通信対象(IPC)のIPアドレス(192.168.170.22)、ポート番号(50000)、およびタイムアウト待機時間(1分間)を指定することを意味します。
|
||
撮影位置に移動 |
このコマンドは、ロボットが関節移動の方式で設定された撮影位置に移動することを意味します。 |
||
通信確立 |
ロボットは MM_OPEN_SOCKET コマンドを使用して、ビジョンシステムとの間のTCPプロトコル通信接続を確立します。 |
||
Mech-Visionプロジェクトをトリガー |
このコマンドは、ロボットがビジョンシステムをトリガーして番号1のMech-Visionプロジェクトを実行し、Mech-Visionプロジェクトがすべてのビジョンポイントを返すことを期待することを意味します。 |
||
ビジョン結果を取得 |
このコマンドは、ロボットがMech-Visionプロジェクト1から返されたビジョン結果を取得することを意味します。
上記のコードは、ステータスコードI052が1100の場合、ロボットがすべてのビジョン結果を正常に取得することを意味し、それ以外の場合はビジョンシステムに異常が発生し、プログラムはIFTHENEXPとENDIFの間のコードを実行することを意味します。ユーザーは、特定のエラーコードに応じて適切な処理を行うことが可能です。本サンプルでは、すべてのエラーコードに対して同一の処理を行い、PAUSEコマンドを使用してプログラムの実行を一時停止しています。 |
||
通信接続を切断 |
ロボットは MM_CLOSE_SOCKET コマンドを使用して、ビジョンシステムとの間のTCPプロトコル通信接続を切断します。 |
||
ビジョン結果を保存 |
このコマンドは、最初のビジョンポイントのツール位置姿勢、ラベル、およびロボットハンド番号をそれぞれ指定された変数に保存することを意味します。 |
||
中間点に移動 |
このコマンドは、ロボットが関節移動の方式で撮影位置と把持のアプローチ点の間の中間点に移動することを意味します。
|
||
把持のアプローチ点に移動 |
このコマンドはロボットが把持点(P071)の上方100mmの位置に直線的に移動することを意味します。
|
||
把持点に移動 |
ロボットは直線移動の方式で、把持のアプローチ点から把持点に移動します。 |
||
DO設定による把持 |
ロボットが把持点に到達した後、DOコマンド(例えば「DOUT OT#(1) ON」)を設定して、ロボットハンドを制御し、ワークを把持します。実際の状況に応じてDO設定を調整する必要があります。
|
||
把持の離れる点に移動 |
ロボットは把持点の上方100mmの位置に移動し、これを把持の離れる点と呼びます。
|
||
中間点に移動 |
ロボットは把持の離れる点と配置のアプローチ点の間の中間点に移動します。
|
||
配置のアプローチ点に移動 |
ロボットが中間点から配置のアプローチ点に移動します。
|
||
配置点に移動 |
ロボットが配置のアプローチ点から配置点に移動します。
|
||
DO設定による配置 |
ロボットが配置点に到達した後、DOコマンド(例えば「DOUT OT#(1) OFF」)を設定して、ロボットハンドを制御し、ワークを配置します。実際の状況に応じてDO設定を調整する必要があります。
|
||
配置の離れる点に移動 |
ロボットが配置点から配置の離れる点に移動します。
|
||
Home位置に移動 |
ロボットが配置の離れる点からHome位置に戻ります。
|