Example Program 6: MM_S6_Viz_ErrorHandle
Program Introduction
Description |
The robot starts the Mech-Viz project, obtains the planned path, and then determines whether the planned path is obtained successfully according to the status code. If the planned path is obtained successfully, the robot will perform picking and placing; otherwise, the robot will stop. |
File path |
You can navigate to the installation directory of Mech-Vision and Mech-Viz and find the file by using the |
Project |
Mech-Vision and Mech-Viz projects |
Prerequisites |
|
This example program is provided for reference only. Before using the program, please modify the program according to the actual scenario. |
Program Description
This part describes the MM_S6_Viz_ErrorHandle example program.
The only difference between the MM_S6_Viz_ErrorHandle example program and the MM_S2_Viz_Basic example program is that MM_S6_Viz_ErrorHandle can handle errors based on the different error codes (this code of this feature is bolded). As such, the features of the main program that are similar to those of MM_S2_Viz_Basic are not described in this part. For more information about these features, see Example Program 2: MM_S2_Viz_Basic. |
DEF MM_S6_Viz_ErrorHandle ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path, handle errors according to status
; codes (if no point cloud in ROI, retry several
; times before exit loop)
; Mech-Mind, 2023-12-25
;---------------------------------------------------
;set current tool no. to 1
BAS(#TOOL,1)
;set current base no. to 0
BAS(#BASE,0)
;initialize variables
retry_cnt=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]
RECAP:
;trigger Mech-Viz project
MM_Start_Viz(2,init_jps)
;get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData(1,pos_num,vis_pos_num,status)
;check whether planned path has been got from Mech-Viz successfully
IF status<> 2100 THEN
IF status == 2038 THEN
;no point cloud in ROI, add handling logic here
;self-adding then check retry counter
retry_cnt=retry_cnt+1
IF retry_cnt<3 THEN
;jump back to vision retry label if the number of retry times is less than 3
GOTO RECAP
ELSE
;reset counter and exit loop if the number of retry times has reached 3
retry_cnt=0
GOTO END_LOOP
ENDIF
ELSE
;add other error handling logic here
halt
GOTO END_LOOP
ENDIF
ENDIF
;save waypoints of the planned path to local variables one by one
MM_Get_Jps(1,Xpick_point1,label[1],toolid[1])
MM_Get_Jps(2,Xpick_point2,label[2],toolid[2])
MM_Get_Jps(3,Xpick_point3,label[3],toolid[3])
;follow the planned path to pick
;move to approach waypoint of picking
PTP pick_point1 Vel=50 % PDAT1 Tool[1] Base[0]
;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0]
;add object grasping logic here, such as "$OUT[1]=TRUE"
halt
;move to departure waypoint of picking
PTP pick_point3 Vel=50 % PDAT3 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 CPDAT3 Tool[1] Base[0]
;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 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 CPDAT3 Tool[1] Base[0]
;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END_LOOP:
halt
END
The workflow corresponding to the above example program code is shown in the figure below.

The table below describes the feature to process different status codes.
Feature | Code and description | ||
---|---|---|---|
Process different status codes |
After MM_Get_VizData is executed, the robot stores the received status code in the status variable. You can perform the corresponding operation based on the specific received error code.
|