Example Program 15: MM_S15_Viz_GetDoList

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

After obtaining the picking path and DO signals, the robot can perform picking and placing by moving to the picking waypoint and setting the DO signals in a loop. This example program is used in depalletizing scenarios, and the tool used by the robot is a multi-section vacuum gripper.

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/KUKA/sample/MM_S15_Viz_GetDoList path.

Project

Mech-Vision project and Mech-Viz project (the tool is a depalletizing vacuum gripper)

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_S15_Viz_GetDoList example program.

Compared with the MM_S2_Viz_Basic example program, this example program contains only the following modification (the code of this modification is bolded). As such, the features of the MM_S15_Viz_GetDoList 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_S15_Viz_GetDoList ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project, then get
; planned path and gripper control signal using
; command 210
; 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 Mech-Viz project
   MM_Start_Viz(2,init_jps)
   ;get planned path
   MM_Get_PlanData(0,3,pos_num,vis_pos_num,status)
   ;check whether planned path has been got from Mech-Viz successfully
   IF status<> 2100 THEN
      ;add error handling logic here according to different error codes
      ;e.g.: status=2038 means no point cloud in ROI
      halt
   ENDIF
   ;get gripper control signal list
   MM_Get_Dolist(0,0)
   ;save waypoints of the planned path to local variables one by one
   FOR count=1 TO pos_num
     MM_Get_PlanJps(count,3,pick_point[count],move_type[count],tool_num[count],speed[count])
   ENDFOR
   Xpick_point1=pick_point[1]
   Xpick_point2=pick_point[2]
   Xpick_point3=pick_point[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
   halt
   ;set gripper control signal
   MM_Set_Dolist(0)
   ;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

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

sample15

The table below describes the bolded code. You can click the hyperlink to the command name to view its detailed description.

Feature Code and description

Obtain the planned path

;get planned path
MM_Get_PlanData(0,3,pos_num,vis_pos_num,status)
  • MM_Get_PlanData: The command to obtain the planned path. The Vision Move waypoints obtained by this command contain Vision Move data and custom data (if any) in addition to poses, while Vision Move waypoints obtained by the MM_Get_VizData command do not contain Vision Move data or custom data.

  • 0: Obtain the planned path from Mech-Viz.

  • 3: The format of the data that is expected to be returned, which is pose (in joint positions), motion type, tool ID, velocity, Mech-Viz Vision Move data, element 1 in custom output data, ..., element N in custom output data.

  • pose_num: The variable that stores the number of waypoints returned by the vision system.

  • vis_pose_num: The variable that stores the sequence number of the Vision Move waypoint (picking waypoint) in the path.

  • status: The variable that stores the command execution status code.

Obtain the gripper DO list

;get gripper control signal list
MM_Get_Dolist(0,0)
  • MM_Get_Dolist: The command to obtain the gripper DO list.

  • First 0: Specify the source of the DO signals, i.e., obtain the multi-section gripper DO signals from Mech-Viz.

  • Second 0: Obtain all planned gripper DO signals.

Store the planned path

FOR count=1 TO pos_num
MM_Get_PlanJps(count,3,pick_point[count],move_type[count],tool_num[count],speed[count])
ENDFOR
Xpick_point1=pick_point[1]
Xpick_point2=pick_point[2]
Xpick_point3=pick_point[3]
  • Line 1: FOR indicates a for loop. count is used to control the number of iterations in the loop (i.e., count starts from 1 and increments by 1 after each loop iteration until it exceeds the value of pose_num, at which point the loop ends). pose_num is the third parameter of the MM_Get_PlanData command, which represents the number of waypoints returned by the vision system.

  • Line 2: The MM_Get_PlanJps command stores the joint positions, motion type, tool ID, and velocity of a specific waypoint in specific variables. The entire command stores the joint positions, motion type, tool ID, and velocity of the waypoint with an ID of count in the pick_point[count], move_type[count], tool_num[count], and speed[count] variables respectively.

  • Line 3: The for loop ends.

  • Line 4 to 6: Store the planned path (pick_point_b[1], pick_point_b[2], and pick_point_b[3]) in Xpick_point1, Xpick_point2, and Xpick_point3.

Move to the picking waypoint to perform picking

   ;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0]
   ;add object grasping logic here
   halt
   ;set gripper control signal
   MM_Set_Dolist(0)
  • MM_Set_Dolist: The command to set the gripper DO list.

  • 0: Set all planned gripper DO signals.

The above statement indicates that the robot moves to the picking waypoint (pick_point2) and then runs the MM_Set_Dolist command to set gripper DO signals to perform picking.

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.