Example Program 11: MM_S11_Viz_Timer

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 uses a timer to calculate the time taken from establishing the communication to completing picking and placing each time.

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

The only difference between the MM_S11_Viz_Timer example program and the MM_S2_Viz_Basic example program is that MM_S11_Viz_Timer can use a timer to calculate the required time (this code of this feature is bolded). As such, the features of the MM_S11_Viz_Timer 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_S11_Viz_Timer ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path, add a timer to record cycle time
; 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)
LOOP
   ;reset timer to 0
   $TIMER[1] = 0
   ;start timer
   $TIMER_STOP[1] = FALSE
   ;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, 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
      ;add error handling logic here according to different error codes
      ;e.g.: status=2038 means no point cloud in ROI
      halt
   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
   $TIMER_STOP[1] = TRUE
   offset = 0
   SWRITE(str_tmp[], state, offset,"time: %d ms", $TIMER[1])
   MM_LOG(str_tmp[])
ENDLOOP
END

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

sample11

The table below describes the feature of using a timer to calculate the required time.

Feature Code and description

Calculate the time taken from establishing the communication to completing picking and placing each time by looping

LOOP
    ...
ENDLOOP

The above code indicates that the program loops through the code between LOOP and ENDLOOP.

;reset timer to 0
$TIMER[1] = 0

The above code sets $TIMER[1] to 0 ms.

;start timer
$TIMER_STOP[1] = FALSE

The above code starts running $TIMER[1].

$TIMER_STOP[1] = TRUE

The above code stops $TIMER[1].

offset = 0
SWRITE(str_tmp[], state, offset,"time: %d ms", $TIMER[1])
  • SWRITE: Write the $TIMER[1] variable into the str_tmp[] array in the format "time: %d ms".

  • str_tmp[]: A CHAR array that is used to store the formatted content of the $TIMER[1] variable.

  • state: Automatically returns to the write state.

  • offset: Specify the starting position for SWRITE to write the string. If writing from the beginning, offset must be set to 0.

  • "time: %d ms": Specify the format, which means that $TIMER[1] will be written to str_tmp[] in the time: %d ms format. For example, if $TIMER[1] is 10, the formatted content would be "time: 10 ms".

The above code indicates that the SWRITE command writes the time calculated by the timer $TIMER[1] into the str_tmp[] array in the format "time: %d ms".

MM_LOG(str_tmp[])

The above code displays the calculated time on the teach pendant screen.

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.