KUKA Standard Interface Commands¶
The KUKA Standard Interface provides the following subprograms:
When writing your own program, pay attention to the following:
Multiple parameters should be separated by commas.
All parameters should be defined as runtime variables in the program file.
Parameters can be defined as IN or OUT parameters.
This Standard Interface is over the TCP/IP protocol.
Initialize Communication¶
MM_Init_Socket(XML_Name[]:IN,Alive_Flag:IN,Recv_Flag:IN,Time_Out:IN)
This subprogram sets the name of the XML file used for setting up the TCP/IP communication, flag for successful communication, flag for successful data reception, and wait time before the program stops trying to establish the communication.
Parameters¶
IN parameters
Name
Description
XML_Name[]
Name of the XML file, case-sensitive
Alive_Flag
ALIVE flag number in the XML file
When the flag is set to ON, the communication is successfully established
Recv_Flag
RECEIVE flag number in the XML file
When the flag is set to ON, the robot has successfully received data
Time_Out
Wait time in seconds before stopping connection attempt
Example¶
MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
This example sets the XML file for setting up communication as XML_Kuka_MMMIND, the flag for successful communication as 873, the flag for successful data reception as 871, and wait time as 60 seconds.
Start Mech-Vision Project¶
MM_Start_Vis(Job:IN,Pos_Num_Need:IN,SendPos_Type:IN)
This subprogram is for applications that use Mech-Vision but not Mech-Viz. It runs the corresponding Mech-Vision project to acquire and process data.
Parameters¶
IN parameters
Name
Description
Job
Mech-Vision Project ID, from 1 to 99
Can check and adjust in
Pos_Num_Need
Number of poses for Mech-Vision to send, from 0 to 20, where 0 means “obtain all”.
SendPos_Type
Set the image capturing pose for the robot to send, from 0 to 2
0: Do not send image capturing pose (for Eye To Hand) 1: Send image capturing pose as joint positions 2: Send image capturing pose as robot flange pose
Example¶
MM_Start_Vis(1,1,1)
This example runs Mech-Vision project No. 1, and asks the project to send over 1 pose, and the robot sends its joint positions when this subprogram is called as the image capturing pose to Mech-Center.
Get Vision Result¶
MM_Get_VisData(Job:IN,Last_Data:OUT,Pos_Num:OUT,MM_Status:OUT)
This subprogram is for applications that use Mech-Vision but not Mech-Viz. It obtains the vision result from the corresponding Mech-Vision project.
Parameters¶
IN parameter
Name
Description
Job
Mech-Vision Project ID, from 1 to 99
Can check and adjust in
OUT parameters
Name
Description
Last_Data
Variable, indicating whether all vision result has been sent, 0 or 1
0: NOT all vision result has been sent (more on the way) 1: All vision result has been sent
Pos_Num
Variable for storing the number of received poses
MM_Status
Variable for storing status code, refer to the Status Codes
Example¶
MM_Get_VisData(1,Last,Pose_Num,Status)
This example obtains the vision result from Mech-Vision project No. 1. Whether all vision result has been sent is stored in Last, the number of poses received is stored in Pose_Num, and the status code is stored in Status.
Start Mech-Viz Project¶
MM_Start_Viz(SendPos_Type:IN)
This subprogram is for applications that use both Mech-Vision and Mech-Viz. It runs the corresponding Mech-Viz project (which triggers the corresponding Mech-Vision project to run), and sets the initial joint positions of the simulated robot in Mech-Viz.
Parameter¶
IN parameter
Name
Description
SendPos_Type
The initial joint positions for the simulated robot in Mech-Viz, 0 or 1
0: Set the initial joint positions of the simulated robot to [0,0,0,0,0,0] 1: Set the initial joint positions of the simulated robot to the current joint positions of the real robot
Note
When the scene contains object models that obstruct the robot to move from [0,0,0,0,0,0] to the first target point, this parameter must be set to 1.
Example¶
MM_Start_Viz(1)
This example runs the corresponding Mech-Viz project, and sets the initial joint positions of the simulated robot to the current joint positions of the real robot.
Get Planned Path¶
MM_Get_VizData(Jps_Pos:IN,Last_Data:OUT,Pos_Num:OUT,VisPos_Num:OUT,MM_Status:OUT)
This subprogram obtains the planned path from Mech-Viz.
Parameters¶
IN parameter
Name
Description
Jps_Pos
Whether Mech-Viz should send target points as joint positions or TCPs, 1 or 2
1: Mech-Viz sends joint positions 2: Mech-Viz sends TCPs
OUT parameters
Name
Description
Last_Data
Variable, indicating whether all target points have been sent, 0 or 1
0: NOT all target points have been sent (more on the way) 1: All target points have been sent
Pos_Num
Variable for storing the number of received target points
VisPos_Num
Variable for storing the position of the first visual_move target point in the path
Example path: move-1, move-2, visual_move-3, move-3, visual_move-2 In this path, the position of the first visual_move target point is 3. If the path does not contain visual_move target point, the return value is 0.
MM_Status
Variable for storing status code, refer to the Status Codes
Example¶
MM_Get_VizData(2,Last,Pose_Num,VisPose_Num,Status)
This example obtains the planned path from Mech-Viz in the form of TCPs. Whether all target points have been sent is stored in Last, the number of target points received is stored in Pose_Num, the position of the visual_move target point is stored in VisPose_Num, and the status code is stored in Status.
Obtain Pose¶
MM_Get_Pose(Serial:IN,MM_P:OUT,MM_Label:OUT,MM_Speed:OUT)
This subprogram stores a pose returned by Mech-Vision or a target point (as TCP) returned by Mech-Viz in the specified variable.
Parameters¶
IN parameter
Name
Description
Serial
Specify the index of the pose to be stored
OUT parameters
Name
Description
MM_P
Variable for storing the specified pose
MM_Label
Variable for storing the label corresponding to the specified pose
MM_Speed
Variable for storing the speed corresponding to the specified pose
Example¶
MM_Get_Pose(1,XP1,Label,Pose_Speed)
This example stores the first received pose to XP1, the corresponding label to Label, and the corresponding speed to Pose_Speed.
Obtain Joint Positions¶
MM_Get_Jps(Serial:IN,MM_J:OUT,MM_Label:OUT,MM_Speed:OUT)
This subprogram stores a set of joint positions returned by Mech-Viz in the specified variable.
Note
As Mech-Vision does not output joint position data, this subprogram can only be used with Mech-Viz.
Parameters¶
IN parameter
Name
Description
Serial
Specify the index of the set of joint positions to be stored
OUT parameters
Name
Description
MM_J
Variable for storing the specified set of joint positions
MM_Label
Variable for storing the label corresponding to the specified set of joint positions
MM_Speed
Variable for storing the speed corresponding to the specified set of joint positions
Example¶
MM_Get_Jps(1,JP1,Label,Pose_Speed)
This example stores the first set of received joint positions to JP1, the corresponding label to Label, and the corresponding speed to Pose_Speed.
Switch Mech-Vision Recipe¶
MM_Switch_Model(Job:IN,Model_Number:IN)
This subprogram specifies which parameter recipe of the Mech-Vision project to use. For more information on parameter recipe, please see Parameter Recipe Configuration.
Note
This subprogram must be called BEFORE MM_Start_Vis.
The corresponding Mech-Vision project must have parameter recipes already configured and saved.
Parameters¶
IN parameters
Name
Description
Job
Mech-Vision Project ID, from 1 to 99
Can check and adjust in
Model_Number
The number of a parameter recipe in the Mech-Vision project, from 1 to 99
Example¶
MM_Switch_Model(2,2)
This example switches the parameter recipe used to No. 2 in Mech-Vision project No. 2.
Select Mech-Viz Branch¶
MM_Set_Branch(Branch_Num:IN,Export_Num:IN)
This subprogram is used to select along which branch the Mech-Viz project should proceed. Such branching is achieved by adding branch_by_service_message Task(s) to the project. This subprogram specifies which out port such Task(s) should take.
Note
MM_Start_Viz must be called BEFORE this subprogram.
When the next Task to be executed in Mech-Viz is a branch_by_service_message Task, Mech-Viz will wait for this subprogram to send the out port number it should take.
The name of all branch_by_service_message Tasks in the Mech-Viz project must be changed to numbers between 1 and 99, and the names should be unique among all tasks in the project.
Parameters¶
IN parameters
Name
Description
Branch_Num
Name of the branch_by_service_message Task, from 1 to 99
Export_Num
The number of the out port to take, from 1 to 99
Example¶
MM_Set_Branch(1,3)
This example tells Mech-Viz to take out port 3 for the branch_by_service_message Task named 1.
Set Move Index¶
MM_Set_Index(Skill_Num:IN,Index_Num:IN)
This subprogram sets the value for the Current Index parameter of Mech-Viz Tasks. Tasks that have this parameter include move_list, move_grid, custom_pallet_pattern, and smart_pallet_pattern.
Note
MM_Start_Viz must be called BEFORE this subprogram.
The name of all Tasks with index parameters in the Mech-Viz project must be changed to numbers between 1 and 99, and the names should be unique among all tasks in the project.
Parameters¶
IN parameters
Name
Description
Skill_Num
Name of the Task, from 1 to 99
Index_Num
Value for the Current Index parameter when the Task is executed
Example¶
MM_Set_Index(2,10)
This example sets the Current Index value to 9 for the Task named 2. When the Task is executed, the Current Index value will be added 1 and become 10.
Get Software Status¶
MM_Get_Status(MM_Status:OUT)
This subprogram is currently capable of checking whether Mech-Vision is ready to run projects. In the future, this subprogram can be used for obtaining the execution status of Mech-Vision, Mech-Viz and Mech-Center.
Parameter¶
OUT parameter
Name
Description
MM_Status
Variable for storing the status code, refer to the Status Codes
Input Object Dimensions to Mech-Vision¶
MM_Set_BoxSize(Job:IN,Lenght:IN,Width:IN,Height:IN)
This subprogram inputs object dimensions to the Mech-Vision project.
Note
This subprogram must be called BEFORE MM_Start_Vis.
Parameters¶
IN parameters
Name
Description
Job
Mech-Vision Project ID, from 1 to 99
Can check and adjust in
Lenght
Length of object in mm
Width
Width of object in mm
Height
Height of object in mm
Example¶
MM_Set_BoxSize(1,500,300,200)
This example sets the object dimensions in the Read Object Dimensions Step in the Mech-Vision project No. 1 to 500*300*200 mm.
Get DO Signal List¶
MM_Get_DoList()
MM_Set_DoList()
These two subprograms obtain the planned DO Signal list for controlling multiple sections of a sectioned vacuum gripper and set the DOs accordingly.
Note
MM_Get_VizData must be called BEFORE this subprogram.
Please deploy the Mech-Viz project based on the template project in Mech-Center/tool/viz_project/suction_zone, and set the suction cup configuration file in the Mech-Viz project.
Parameters¶
No parameters.
Example¶
MM_Get_DoList()
MM_Set_DoList()
These two examples obtain the DO signal list planned by Mech-Viz, store it in Do_Port[i], and input the values to the corresponding digital outputs.
Input TCP to Mech-Viz¶
MM_Set_Pos(Out_Pos:IN)
This subprogram inputs TCP data to the outer_move Task.
Note
This subprogram must be called BEFORE MM_Start_Viz.
Please deploy the Mech-Viz project based on the template project in Mech-Centertoolviz_projectouter_move, and put the outer_move Task at a proper position in the workflow.
Parameter¶
IN parameter
Name
Description
Out_Pos
Variable for storing the TCP data to be sent to Mech-Viz
Example¶
MM_Set_Pos(XP50)
This example sends the TCP data stored in XP50 to the outer_move task in the Mech-Viz project.
Calibration¶
MM_CALIB(Move_Type:IN,PosJps:IN,WaitTime:IN,E1:IN)
This subprogram is used for hand-eye calibration (camera extrinsic parameter calibration). It automates the calibration process in conjunction with the Camera Calibration function in Mech-Vision. For detailed instructions, see KUKA Calibration Program.
Parameters¶
IN parameters
Name
Description
Move_Type
Motion type, 1 or 2
1: LIN 2: PTP
PosJps
Pose as flange pose or joint positions, 1 or 2
1: flange pose 2: Joint positions
WaitTime
Wait time between poses in seconds
E1
Data of the external 7th axis in mm
Example¶
MM_CALIB(2,1,300,0)
This example moves the robot in PTP type, receives pose data in the form of flange pose, and sets the wait time between two poses to 300 seconds. This robot does not have an external axis installed.