Example Program 6: MM_S6_Viz_ErrorHandle

You are currently viewing the documentation for the latest version (2.1.0). To access a different version, click the "Switch version" button located in the upper-right corner of the page.

■ If you are not sure which version of the product you are currently using, please feel free to contact Mech-Mind Technical Support.

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 pause.

File path

You can navigate to the installation directory of Mech-Vision and Mech-Viz and find the file by using the Communication Component/Robot_Interface/YASKAWA/sample/MM_S6_Viz_ErrorHandle path.

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, only the feature of handling errors based on the specific error codes is described in the following section. For information about the parts of MM_S6_Viz_ErrorHandle that are consistent with those of MM_S2_Viz_Basic, see Example Program 2: MM_S2_Viz_Basic.
NOP
'--------------------------------
'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
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P071 P071
SUB P072 P072
SUB P073 P073
'initialize i variables
SET I005 0
'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
*RECAP
'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
	 IFTHENEXP I053=2038
		'no point cloud in ROI, add
		'error handling logic here
		'self-adding then check retry
		'counter
		 INC I005
		 IFTHENEXP I005<3
			'jump back to vision retry label
			'if the number of retry times is
			'less than 3
			 JUMP *RECAP
		 ELSE
			'reset counter and exit loop if
			'the number of retry times has
			'reached 3
			 SET I005 0
			 JUMP *ENDLOOP
		 ENDIF
	 ELSE
		'add other error handling logic
		'here
		 PAUSE
		 JUMP *ENDLOOP
	 ENDIF
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
*ENDLOOP
PAUSE
END

The workflow corresponding to the above example program code is shown in the figure below.

sample6

The table below describes the feature to process different status codes.

Feature Code and description

Process different status codes

...
SET I005 0
...
*RECAP
'trigger Mech-Viz project
CALL JOB:MM_START_VIZ ARGF"2;30"
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"
IFTHENEXP I053<>2100
	 IFTHENEXP I053=2038
		'no point cloud in ROI, add
		'error handling logic here
		'self-adding then check retry
		'counter
		 INC I005
		 IFTHENEXP I005<3
			'jump back to vision retry label
			'if the number of retry times is
			'less than 3
			 JUMP *RECAP
		 ELSE
			'reset counter and exit loop if
			'the number of retry times has
			'reached 3
			 SET I005 0
			 JUMP *ENDLOOP
		 ENDIF
	 ELSE
		'add other error handling logic
		'here
		 PAUSE
		 JUMP *ENDLOOP
	 ENDIF
ENDIF
...
*ENDLOOP
PAUSE
END
  • INC: Increment the value of the specified variable by 1.

  • JUMP: Jump to the specified position ID or program.

After MM_GET_VIZDATA is executed, the robot stores the received status code in the I053 variable. You can perform the corresponding operation based on the specific received error code.

  • When the I053 variable is set to 2100, the robot has successfully obtained the planned path. Then, the robot will perform picking by taking the planned path.

  • When the I053 variable is not set to 2100, an exception has occurred in the vision system. You need to perform the corresponding operation based on the specific error code.

    • When the I053 variable is set to 2038, no point cloud exists in the ROI, i.e., the robot cannot obtain the planned path. In this case, the robot can try to trigger the Mech-Viz project to run again to obtain the planned path. The number of times to re-obtain the planned path is controlled by the I005 variable in the example program. If no point cloud exists after two retry attempts (i.e., I005 is greater than 2), the program pauses.

    • When the I053 variable is set to another error code, the program pauses.

You can write the error handling code by referring to the Status Codes and Troubleshooting manual.

We Value Your Privacy

We use cookies to provide you with the best possible experience on our website. By continuing to use the site, you acknowledge that you agree to the use of cookies. If you decline, a single cookie will be used to ensure you're not tracked or remembered when you visit this website.