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