Programme d’exemple 3 : MM_S3_Vis_Path

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 robot déclenche l’exécution du projet Mech-Vision, puis obtient la trajectoire planifiée pour la prise et la dépose.

Chemin du fichier

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_S3_Vis_Path.

Projet

Projet Mech-Vision

Le projet Mech-Vision doit contenir une étape Planification de trajectoire, et le paramètre Port Type de l’étape Sortie doit être défini sur Prédéfini (trajectoire du robot).

Prérequis

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

Description du programme

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

DEF MM_S3_Vis_Path ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Vision project and get
; planned path
; 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-Vision project
   MM_Start_Vis(1,0,2,init_jps)
   ;get planned path from NO.1 Mech-Vision project; 2nd argument (1) means getting pose in JPs
   MM_Get_Vispath(1,1,pos_num,vis_pos_num,status)
   ;check whether planned path has been got from Mech-Vision successfully
   IF status<> 1103 THEN
      ;add error handling logic here according to different error codes
      ;e.g.: status=1003 means no point cloud in ROI
      ;e.g.: status=1002 means no vision results
      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 % PDAT4 Tool[1] Base[0]
   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT2 Tool[1] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT3 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 CPDAT2 Tool[1] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END

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

sample3

Le tableau ci-dessous explique le programme ci-dessus. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour afficher sa description détaillée.

Fonctionnalité Code et description

Définir le repère

   ;set current tool no. to 1
   BAS(#TOOL,1)
   ;set current base no. to 0
   BAS(#BASE,0)
  • BAS(#TOOL,1) : Définit le repère outil courant sur 1.

  • BAS(#BASE,0) : Définit le repère base courant sur 0.

Les deux instructions ci-dessus définissent les repères outil et base courants.

Aller à la position d’origine

   ;move to robot home position
PTP HOME Vel=100 % DEFAULT
  • PTP : Le mode point à point. Dans ce mode, le robot déplace son TCP le long du chemin le plus rapide vers le point cible.

  • HOME : Le nom du point cible (position d’origine).

    Vous devez enseigner la position d’origine au préalable. Pour des instructions détaillées, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

  • Vel=100 % : La vitesse.

  • DEFAULT : Le nom attribué par le système à un ensemble de données de mouvement.

L’instruction ci-dessus spécifie de déplacer le robot en mode PTP vers la position d’origine enseignée.

Initialiser les paramètres de communication

   ;initialize communication parameters (initialization is required only once)
   MM_Init_Socket("XML_Kuka_MMIND",873,871,60)

La commande MM_Init_Socket établit la communication TCP entre le robot et le système de vision sur la base des configurations du fichier XML_Kuka_MMIND.xml.

Pour plus d’informations sur le fichier XML_Kuka_MMIND, voir MM_Init_Socket.

Se déplacer vers la position de capture d’image

   ;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0] 
  • LIN : Le mode de mouvement linéaire.

  • camera_capture : Le nom du point cible, qui est la position de capture d’image.

    Vous devez enseigner la position de capture d’image au préalable. Pour des instructions détaillées, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.
  • Vel=1 m/s : La vitesse.

  • CPDAT1 : Le nom attribué par le système à un ensemble de données de mouvement.

  • Tool[1] : Le repère outil 1.

  • Base[0] : Le repère base 0.

L’instruction ci-dessus spécifie de déplacer le robot de manière linéaire vers la position de capture d’image enseignée.

Déclencher l’exécution du projet Mech-Vision

   ;trigger Mech-Vision project
   MM_Start_Vis(1,0,2,init_jps)
  • MM_Start_Vis : La commande pour déclencher l’exécution du projet Mech-Vision.

  • 1 : L’ID du projet Mech-Vision.

  • 0 : Le projet Mech-Vision doit renvoyer tous les points de passage.

  • 2 : Spécifie que la pose de la bride du robot doit être fournie au projet Mech-Vision.

  • init_jps : Positions articulaires personnalisées. Les positions articulaires dans ce programme d’exemple n’ont pas d’utilité pratique mais doivent être définies.

L’ensemble de l’instruction indique que le robot déclenche le système de vision pour exécuter le projet Mech-Vision avec un ID de 1 et attend que le projet Mech-Vision renvoie tous les points de passage.

Obtenir la trajectoire planifiée

   ;get planned path from NO.1 Mech-Vision project; 2nd argument (1) means getting pose in JPs
   MM_Get_Vispath(1,1,pos_num,vis_pos_num,status)
  • MM_Get_VisPath : La commande pour obtenir la trajectoire planifiée depuis Mech-Vision.

  • Premier 1 : Spécifie l’ID du projet Mech-Vision.

  • Deuxième 1 : Spécifie le type de pose des points de passage obtenus comme positions articulaires.

  • pos_num : La variable qui stocke le nombre de points de passage renvoyés par le système de vision.

  • vis_pos_num : La variable qui stocke le numéro de séquence du point de passage Vision Move (point de prise) dans la trajectoire.

  • status : La variable qui stocke le code d’état d’exécution de la commande.

L’ensemble de l’instruction indique que le robot obtient la trajectoire planifiée du projet Mech-Vision ayant l’ID 1.

La trajectoire planifiée renvoyée est enregistrée dans la mémoire du robot et ne peut pas être obtenue directement. Pour accéder à la trajectoire planifiée, vous devez la stocker dans une étape ultérieure.
   ;check whether planned path has been got from Mech-Vision successfully
   IF status<> 1103 THEN
      ;add error handling logic here according to different error codes
      ;e.g.: status=1003 means no point cloud in ROI
      ;e.g.: status=1002 means no vision results
      halt
   ENDIF
  • IF A THEN …​ ENDIF : Lorsque la condition A est remplie, le programme exécute le code entre IF et ENDIF.

  • <>: Non égal.

L’instruction ci-dessus indique que lorsque le code d’état est 1103, le robot a obtenu avec succès la trajectoire planifiée ; sinon, une exception s’est produite dans le système de vision et le programme exécute le code entre IF et ENDIF. Vous pouvez effectuer l’opération correspondante en fonction du code d’erreur spécifique. Dans ce programme d’exemple, tous les codes d’erreur sont traités de la même manière, en mettant en pause l’exécution du programme à l’aide de la commande halt.

Stocker la trajectoire planifiée

   ;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])
  • MM_Get_Jps : La commande pour stocker la trajectoire planifiée.

  • 1 : Stocke le premier point de passage.

  • Xpick_point1 : La variable qui stocke les positions articulaires du premier point de passage.

  • label[1] : La variable qui stocke l’étiquette du premier point de passage.

  • toolid[1] : La variable qui stocke l’ID de l’outil correspondant au premier point de passage.

L’instruction entière « MM_Get_Jps(1,Xpick_point1,label[1],toolid[1]) » stocke les positions articulaires, l’étiquette et l’ID de l’outil du premier point de passage dans les variables spécifiées.

Dans ce programme d’exemple, la trajectoire planifiée par Mech-Vision se compose de trois points de passage : le premier point de passage est le point d’approche de la prise (Xpick_point1), le deuxième est le point de prise (Xpick_point2) et le troisième est le point de départ de la prise (Xpick_point3). Veuillez stocker la trajectoire planifiée en fonction du projet Mech-Vision réel.

Se déplacer vers le point d’approche de la prise

   ;move to approach waypoint of picking
PTP pick_point1 Vel=50 % PDAT1 Tool[1] Base[0] 

Le robot se déplace vers le point d’approche de la prise. pick_point1 et Xpick_point1 indiquent la même position.

Se déplacer vers le point de prise

   ;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0] 

Le robot se déplace vers le point de prise. pick_point2 et Xpick_point2 indiquent la même position.

Définir un DO pour effectuer la prise

   ;add object grasping logic here, such as "$OUT[1]=TRUE]"
   halt

Après que le robot s’est déplacé vers le point de prise, vous pouvez définir un DO (tel que « $OUT[1]=TRUE ») pour contrôler le robot afin d’utiliser l’outil pour effectuer la prise. Veuillez définir les DO en fonction de la situation réelle.

halt indique la mise en pause de l’exécution du programme. Si vous avez ajouté une instruction pour définir un DO, vous pouvez supprimer l’instruction halt ici.

Se déplacer vers le point de départ de la prise

   ;move to departure waypoint of picking
PTP pick_point3 Vel=50 % PDAT3 Tool[1] Base[0]

Le robot se déplace vers le point de départ de la prise (pick_point3). pick_point3 et Xpick_point3 indiquent la même position.

Se déplacer vers le point intermédiaire

   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT4 Tool[1] Base[0]

Le robot se déplace vers un point intermédiaire (drop_waypoint) entre le point de départ de la prise et le point d’approche de la dépose.

  • L’ajout de points de passage intermédiaires peut garantir un mouvement fluide du robot et éviter des collisions inutiles. Vous pouvez ajouter plusieurs points intermédiaires en fonction de la situation réelle.

  • Vous devez enseigner le point intermédiaire au préalable. Pour savoir comment enseigner le point, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Déplacer le robot vers le point d’approche de la dépose

   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT2 Tool[1] Base[0] 

Le robot se déplace du point intermédiaire vers le point d’approche de la dépose (drop_app).

  • L’ajout de points d’approche de la dépose peut prévenir les collisions du robot avec des objets (tels que des bacs) dans la scène lors du déplacement.

  • Vous devez enseigner le point d’approche de la dépose au préalable. Pour savoir comment enseigner le point, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Se déplacer vers le point de dépose

   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT3 Tool[1] Base[0] 

Le robot se déplace du point d’approche de la dépose vers le point de dépose (drop).

  • Le point de dépose doit être situé à une distance de sécurité des autres postes, du personnel et des équipements, et ne doit pas dépasser la portée maximale du robot.

  • Vous devez enseigner le point de dépose au préalable. Pour savoir comment enseigner le point, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Définir des DO pour effectuer la dépose

   ;add object releasing logic here, such as "$OUT[1]=FALSE]"
   halt

Après que le robot s’est déplacé vers le point de dépose, vous pouvez définir un DO (tel que « $OUT[1]=FALSE ») pour contrôler le robot afin d’utiliser l’outil pour effectuer la dépose. Veuillez définir les DO en fonction de la situation réelle.

halt indique la mise en pause de l’exécution du programme. Si vous avez ajouté une instruction pour définir un DO, vous pouvez supprimer l’instruction halt ici.

Déplacer le robot vers le point de départ de la dépose

   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT2 Tool[1] Base[0] 

Le robot se déplace du point de dépose vers le point de départ de la dépose (drop_app).

  • L’ajout de points de départ de la dépose peut prévenir les collisions du robot avec des objets (tels que des bacs) dans la scène lors du déplacement.

  • Vous devez enseigner le point de départ de la dépose au préalable. Pour savoir comment enseigner le point, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Aller à la position d’origine

   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT

Le robot se déplace à nouveau du point de départ de la dépose vers le point home.

Vous devez enseigner la position d’origine au préalable. Pour des instructions détaillées, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

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.