Example Program 1: MM_S1_Vis_Basic
Program Introduction
Description |
The robot triggers the Mech-Vision project to run, and then obtains the vision result for picking and placing the object. |
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 project |
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_S1_Vis_Basic example program.
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
The workflow corresponding to the above example program code is shown in the figure below.
The table below explains the above program. You can click the hyperlink to the command name to view its detailed description.
Feature | Code and description | ||
---|---|---|---|
Initialize variables |
The entire statement indicates to clear data of integer variables I050 to I069 (a total of 20 variables) by setting them to 0.
The above two statements indicate that the position variables P070 and P071 are set to 0.
The above statement indicates to set the Z axis of P070 to 100,000 µm (equivalent to 100 mm). |
||
Move to the home position |
The entire statement indicates that the robot moves to the taught home position by using joint position movement. |
||
Initialize communication parameters |
The robot sends the MM_INIT_SOCKET command to set the IP address, port number, and timeout period of the communication object (the IPC) to 192.168.170.22, 50000, and 1 minute.
|
||
Move to the image-capturing position |
The entire statement indicates that the robot moves to the taught image-capturing position by using joint position movement. |
||
Establish the communication |
The TCP communication between the robot and the vision system is established by using the MM_OPEN_SOCKET command. |
||
Trigger the Mech-Vision project to run |
The entire statement indicates that the robot triggers the vision system to run the Mech-Vision project with an ID of 1 and expects the Mech-Vision project to return all vision points. |
||
Obtain the vision result |
The entire statement indicates that the robot obtains the vision result from the Mech-Vision project with an ID of 1.
The above statement indicates that when the status code in I052 is 1100, the robot has successfully obtained all vision result; otherwise, an exception has occurred in the vision system and the program executes the code between IFTHENEXP and ENDIF. You can perform the corresponding operation based on the specific error code. In this example program, all error codes are handled in the same way, by pausing the program execution using the PAUSE command. |
||
Close the communication |
The TCP communication between the robot and the vision system is closed by using the MM_CLOSE_SOCKET command. |
||
Store the vision result |
The entire statement stores the TCP, label, and tool ID of the first vision point in the specified variables. |
||
Move to the intermediate waypoint |
The entire statement moves the robot in joint positions to a certain intermediate waypoint between the image-capturing position and the approach waypoint of picking.
|
||
Move to the approach waypoint of picking |
The entire statement indicates that the robot moves linearly to 100 mm above the picking waypoint (P071).
|
||
Move to the picking waypoint |
The robot moves from the approach waypoint of picking to the picking waypoint in linear motion. |
||
Set DO commands to perform picking |
After the robot moves to the picking waypoint, you can set a DO command (such as “DOUT OT#(1) ON”) to control the robot to use the tool to perform picking. Please set DO commands based on the actual situation.
|
||
Move to the departure waypoint of picking |
The robot moves to 100 mm above the picking waypoint and reaches the departure waypoint of picking.
|
||
Move to the intermediate waypoint |
The robot moves to a intermediate waypoint between the departure waypoint of picking and the approach waypoint of placing.
|
||
Move the robot to the approach waypoint of placing |
The robot moves from the intermediate waypoint to the approach waypoint of placing.
|
||
Move to the placing waypoint |
The robot moves from the approach waypoint of placing to the placing waypoint.
|
||
Set DO commands to perform placing |
After the robot moves to the placing waypoint, you can set a DO command (such as “DOUT OT#(1) OFF”) to control the robot to use the tool to perform placing. Please set DO commands based on the actual situation.
|
||
Move the robot to the departure waypoint of placing |
The robot moves from the placing waypoint to the departure waypoint of placing.
|
||
Move to the home position |
The robot moves from the departure waypoint of placing to the home waypoint again.
|