Programme d’exemple 9 : MM_S9_Viz_RunInAdvance

Vous consultez actuellement la documentation pour la dernière version (2.1.2). Pour accéder à une autre version, cliquez sur le bouton "Changer de version" situé dans le coin supérieur droit de la page.

■ Si vous n’êtes pas sûr de la version du produit que vous utilisez, veuillez contacter le support technique Mech-Mind pour obtenir de l’aide.

Présentation du programme

Description

Le projet Mech-Viz est déclenché lorsque le robot effectue la préhension. Ensuite, la caméra est lancée par l’étape Branch by Msg du projet lorsque le robot effectue la dépose afin de planifier la trajectoire suivante, ce qui réduit le temps de cycle.

File path

Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier en utilisant le chemin Communication Component/Robot_Interface/KUKA/sample/MM_S9_Viz_RunInAdvance.

Project

Projets Mech-Vision et Mech-Viz

Le projet Mech-Viz nécessite que l’étape Branch by Msg soit configurée au préalable.

Prerequisites

Ce programme d’exemple est fourni à titre de référence uniquement. Avant d’utiliser le programme, veuillez modifier le programme en fonction du scénario réel.

Description du programme

Cette partie décrit le programme d’exemple MM_S9_Viz_RunInAdvance.

La seule différence entre le programme d’exemple MM_S9_Viz_RunInAdvance et le programme d’exemple MM_S5_Viz_SetBranch est que MM_S9_Viz_RunInAdvance peut planifier la trajectoire suivante (le code de cette fonctionnalité est en gras). Par conséquent, seule la fonctionnalité de planification de la trajectoire suivante est décrite dans la partie suivante. Pour les éléments de MM_S9_Viz_RunInAdvance identiques à ceux de MM_S5_Viz_SetBranch, voir Programme d’exemple 5 : MM_S5_Viz_SetBranch.
DEF  MM_S9_Viz_RunInAdvance ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project then set
; branch and get planned path, trigger Mech-Viz
; project and set branch in advance during
; pick&place process
; 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)
   ;set branch exit port
   MM_Set_Branch(1,1)
LOOP
   ;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
   ;trigger Mech-Viz project but not to trigger camera capturing
   MM_Start_Viz(2,init_jps)
   ;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]
   ;set branch exit port and trigger camera capturing when robot moves out of camera’s field of view
   MM_Set_Branch(1,1)
   ;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
ENDLOOP
END

Le flux de travail correspondant au code du programme d’exemple ci-dessus est illustré dans la figure ci-dessous.

sample9

La partie suivante décrit la fonctionnalité de planification de la trajectoire suivante.

Feature Code and description

Planifier à l’avance la trajectoire suivante par bouclage (préhension→déclenchement de la prochaine planification de trajectoire→dépose)

LOOP
    ...
ENDLOOP

Le code ci-dessus indique que le programme exécute en boucle le code compris entre LOOP et ENDLOOP.

;get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData(1,pos_num,vis_pos_num,status)

Le code ci-dessus indique que le robot obtient la trajectoire planifiée à partir de Mech-Viz en exécutant la commande MM_Get_VizData.

;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])

Le code ci-dessus indique que le robot enregistre la trajectoire planifiée dans la variable spécifiée en exécutant la commande MM_Get_Jps. Ce programme d’exemple suppose que Xpick_point1, Xpick_point2 et Xpick_point3 sont respectivement le point d’approche de la préhension, le point de préhension et le point de départ de la préhension.

   ;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

Le code ci-dessus indique que le robot se déplace vers le point d’approche de la préhension puis vers le point de préhension, et que la commande DO (par exemple « $OUT[1]=TRUE ») est exécutée pour contrôler l’outil afin d’effectuer la préhension.

;trigger Mech-Viz project but not to trigger camera capturing
MM_Start_Viz(2,init_jps)
  • MM_Start_Viz: La commande qui déclenche l’exécution du projet Mech-Viz.

  • 2: Envoie les positions articulaires représentées par la variable snap_jps au projet Mech-Viz.

  • init_jps: Positions articulaires personnalisées qui doivent être enseignées au préalable. Les positions articulaires seront envoyées au projet Mech-Viz comme point de départ pour la prochaine planification. Ainsi, si le robot se trouve en dehors de la zone d’acquisition d’image, le projet Mech-Viz peut être déclenché à l’avance pour planifier la trajectoire du prochain cycle.

Le code ci-dessus indique que le robot exécute la commande MM_Start_Viz pour démarrer à nouveau le projet Mech-Viz. Maintenant que le robot a obtenu la trajectoire de préhension planifiée de ce cycle et s’est déplacé vers le point de préhension, vous pouvez démarrer le projet Mech-Viz à l’avance pour planifier la trajectoire du cycle suivant au lieu d’attendre la fin de la dépose pour ensuite démarrer le projet Mech-Viz.

Une fois le projet Mech-Viz exécuté, le projet attendra la commande MM_Set_Branch pour définir le port de sortie de l’étape Branch by Msg. De plus, l’étape de reconnaissance visuelle (qui effectue l’acquisition d’image) a été placée sur une branche de l’étape Branch by Msg ; la caméra n’effectue donc pas d’acquisition d’image à ce moment-là.
   ;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]

Le code ci-dessus indique que le robot se déplace vers le point de départ de la préhension (pick_point3), le point intermédiaire (drop_waypoint), puis le point d’approche de la dépose (drop_app).

;set branch exit port and trigger camera capturing when robot moves out of camera's field of view
MM_Set_Branch(1,1)

Dans l’exemple ci-dessus, le robot définit le port de sortie de l’étape Branch by Msg avec la commande MM_Set_Branch. Sur ce port de sortie, l’étape de reconnaissance visuelle sera exécutée. Ensuite, Mech-Viz planifiera à l’avance la prochaine trajectoire de préhension en fonction du résultat de la vision.

   ;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

Dans l’exemple ci-dessus, le robot se déplace vers le point de dépose (drop), effectue la dépose (par exemple, $OUT[1]=FALSE), puis se déplace vers le point de départ de la dépose (drop_app) et enfin vers la position home.

Cette page est-elle utile ?

Veuillez nous indiquer comment améliorer :

Nous accordons de l’importance à votre vie privée

Nous utilisons des cookies pour vous offrir la meilleure expérience possible sur notre site web. En continuant à utiliser le site, vous reconnaissez accepter l’utilisation des cookies. Si vous refusez, un cookie unique sera utilisé pour garantir que vous ne soyez pas suivi ou reconnu lors de votre visite sur ce site.