サンプルプログラム14:MM_S14_Vis_GetUserData
プログラム概要
機能 |
ロボットはビジョン結果と共に、Mech-Visionプロジェクトから出力されたカスタムデータを取得します。 |
ファイル場所 |
Mech-VisionとMech-Vizソフトウェアのインストールディレクトリにある |
必要なプロジェクト |
Mech-Visionプロジェクト(出力 ステップに カスタムポート を追加する必要があります) |
使用前提 |
|
このサンプルプログラムは参考用です。ユーザーは実際の状況に応じて、このプログラムを基に変更を加える必要があります。このプログラムをそのまま使用しないでください。 |
プログラム説明
以下はMM_S14_Vis_GetUserDataサンプルプログラムのコードと関連する説明です。
このサンプルは、MM_S1_Vis_Basicサンプルと比べて、太字部分のコードのみが追加されています。そのため、MM_S1_Vis_Basicサンプルと同じ部分のコードについては、以下で再度説明することはありません(詳細は MM_S1_Vis_Basicサンプルの説明 をご参照ください)。 |
DEF MM_S14_Vis_GetUserData ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Vision project and get
; vision result and custom data using command 110
; Mech-Mind, 2023-12-25
;---------------------------------------------------
;set current tool no. to 1
BAS(#TOOL,1)
;set current base no. to 0
BAS(#BASE,0)
;move to robot home position
PTP HOME Vel=100 % DEFAULT
;initialize communication parameters (initialization is required only once)
MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0]
;trigger NO.1 Mech-Vision project
MM_Start_Vis(1,0,2,init_jps)
;get vision result from NO.1 Mech-Vision project
MM_Get_Dy_Data(1,pos_num,status)
;check whether vision result has been got from Mech-Vision successfully
IF status<> 1100 THEN
;add error handling logic here according to different error codes
;e.g.: status=1003 means no point cloud in ROI
;e.g.: status=1002 means no vision result
halt
ENDIF
;save first vision point data to local variables
MM_Get_DyPose(1,Xpick_point,label)
;save received custom data
offset_x=MM_UserData[1]
offset_y=MM_UserData[2]
offset_z=MM_UserData[3]
;calculate pick approach point based on pick point
tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0}
Xpick_app=Xpick_point:tool_offset
;move to intermediate waypoint of picking
PTP pick_waypoint CONT Vel=50 % PDAT1 Tool[1] Base[0]
;move to approach waypoint of picking
LIN pick_app Vel=1 m/s CPDAT2 Tool[1] Base[0]
;move to picking waypoint
LIN pick_point Vel=0.3 m/s CPDAT3 Tool[1] Base[0]
;add object grasping logic here, such as "$OUT[1]=TRUE"
halt
;move to departure waypoint of picking
LIN pick_app Vel=1 m/s CPDAT2 Tool[1] Base[0]
;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[1] Base[0]
;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT4 Tool[1] Base[0]
;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT5 Tool[1] Base[0]
;add object releasing logic here, such as "$OUT[1]=FALSE"
halt
;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT4 Tool[1] Base[0]
;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END
上記のサンプルプログラムの処理流れは、下図の通りです。

下表は太字部分のコードとその説明です。コマンド名のリンクをクリックすることで、その詳細を確認できます。
処理流れ | コートと説明 | ||||
---|---|---|---|---|---|
ビジョン結果(カスタムデータを含む)を取得 |
このコマンドは、ロボットがMech-Visionプロジェクト1から返されたビジョン結果(カスタムデータを含む)を取得することを意味します。
|
||||
ビジョン結果(カスタムデータを含む)を保存 |
このコマンドは、最初のビジョンポイントのツール位置姿勢、ラベル、およびカスタムデータをそれぞれ指定された変数に保存することを意味します。
上記のコードは、ビジョンポイント(把持点)の3つのカスタムデータ、つまりMM_UserData[1]、MM_UserData[2]、MM_UserData[3]をそれぞれoffset_x、offset_y、offset_zに代入することを意味します。
|