Programme d’exemple 1 : MM_S1_Vis_Basic

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.

Introduction du programme

Description

Le robot déclenche l’exécution du projet Mech-Vision, puis obtient le résultat de vision pour saisir et déposer l’objet.

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

Projet

Projet Mech-Vision

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

DEF MM_S1_Vis_Basic ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Vision project and get
; vision result
; 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 NO.1 Mech-Vision project
   MM_Start_Vis(1,0,2,init_jps)
   ;get vision result from NO.1 Mech-Vision project
   MM_Get_VisData(1,pos_num,status)
   ;check whether vision result has been got from Mech-Vision successfully
   IF status<> 1100 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 result
      halt
   ENDIF
   ;save first vision point data to local variables
   MM_Get_Pose(1,Xpick_point,label,toolid)
   ;calculate pick approach point based on pick point
   tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0}
   Xpick_app=Xpick_point:tool_offset
   ;move to intermediate waypoint of picking
PTP pick_waypoint CONT Vel=50 % PDAT1 Tool[1] Base[0]
   ;move to approach waypoint of picking
LIN pick_app Vel=1 m/s CPDAT2 Tool[1] Base[0]
   ;move to picking waypoint
LIN pick_point Vel=0.3 m/s CPDAT3 Tool[1] Base[0]
   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   halt
   ;move to departure waypoint of picking
LIN pick_app Vel=1 m/s CPDAT2 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 CPDAT4 Tool[1] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT5 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 CPDAT4 Tool[1] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END

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

sample1

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

Fonctionnalité Code et description

Définir le repère de référence

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

Se déplacer vers la position Home

   ;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 Home).

    Vous devez enseigner la position Home 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 Home 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 linéairement vers la position de capture d’image enseignée.

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

   ;trigger NO.1 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 est censé renvoyer tous les points de vision.

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

  • init_jps : Positions articulaires personnalisées. Les positions articulaires de 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 vision.

Obtenir le résultat de vision

   ;get vision result from NO.1 Mech-Vision project
   MM_Get_VisData(1,pos_num,status)
  • MM_Get_VisData : La commande pour obtenir le résultat de vision.

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

  • pos_num : La variable qui stocke le nombre de points de vision reçus.

  • 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 le résultat de vision du projet Mech-Vision avec un ID de 1.

Le résultat de vision renvoyé est enregistré dans la mémoire du robot et ne peut pas être obtenu directement. Pour accéder au résultat de vision, vous devez le stocker à l’étape suivante.
   ;check whether vision result has been got from Mech-Vision successfully
   IF status<> 1100 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 result
      halt
   ENDIF
  • IF A THEN …​ ENDIF : Lorsque la condition A est satisfaite, le programme exécute le code entre IF et ENDIF.

  • <>: N’est pas égal.

L’instruction ci-dessus indique que lorsque le code d’état est 1100, le robot a obtenu avec succès tous les résultats de vision ; 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 le programme en pause à l’aide de la commande halt.

Stocker le résultat de vision

   ;save first vision point data to local variables
   MM_Get_Pose(1,Xpick_point,label,toolid)
  • MM_Get_Pose : La commande pour stocker le résultat de vision.

  • 1 : Le premier point de vision est stocké.

  • Xpick_point : La variable qui stocke le TCP du premier point de vision, qui est le TCP du point de prise.

  • label : La variable qui stocke l’étiquette correspondant au premier point de vision.

  • toolid : La variable qui stocke l’ID d’outil correspondant au premier point de vision.

L’ensemble de l’instruction stocke le TCP, l’étiquette et l’ID d’outil du premier point de vision dans les variables spécifiées.

   ;calculate pick approach point based on pick point
   tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0}
   Xpick_app=Xpick_point:tool_offset
  • tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0} : 100 mm dans la direction négative de l’axe Z du repère outil.

  • Xpick_app=Xpick_point:tool_offset : 100 mm dans la direction négative de l’axe Z par rapport à Xpick_point (c.-à-d. 100 mm au-dessus du point de prise). Xpick_app indique le point d’approche de la prise.

Les deux instructions ci-dessus calculent la position du point d’approche de la prise. Dans les étapes suivantes, le robot atteindra cette position.

Se déplacer vers le point intermédiaire

   ;move to intermediate waypoint of picking
PTP pick_waypoint CONT Vel=50 % PDAT1 Tool[1] Base[0]

Le robot se déplace en mode PTP vers un point intermédiaire (pick_waypoint) entre le point de capture d’image et le point d’approche de la prise.

  • L’ajout de points intermédiaires permet d’assurer un mouvement du robot fluide et d’éviter des collisions inutiles. Vous pouvez ajouter plusieurs points intermédiaires selon 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.

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

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

Le robot se déplace linéairement vers un point situé 100 mm au-dessus du point de prise (c.-à-d. le point d’approche de la prise). pick_app et Xpick_app indiquent la même position.

L’ajout de points d’approche de la prise peut empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène lors des déplacements. Vous pouvez ajuster le décalage sur l’axe Z (par exemple “tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0}”) en fonction de la scène réelle afin de garantir que le processus d’approche est exempt de collisions.

Se déplacer vers le point de prise

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

Le robot se déplace linéairement du point d’approche de la prise vers le point de prise. pick_point et Xpick_point indiquent la même position.

Définir des sorties numériques (DO) pour effectuer la prise

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

Après que le robot se soit déplacé vers le point de prise, vous pouvez définir une sortie numérique (par exemple “$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 de mettre en pause l’exécution du programme. Si vous avez ajouté une instruction pour définir une 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
LIN pick_app Vel=1 m/s CPDAT2 Tool[1] Base[0]

Le robot se déplace jusqu’à 100 mm au-dessus du point de prise et atteint le point de départ de la prise. pick_app et Xpick_app indiquent la même position.

L’ajout de points de départ de la prise peut empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène lors des déplacements. Vous pouvez ajuster le décalage sur l’axe Z (par exemple “tool_offset={X 0,Y 0,Z -100,A 0,B 0,C 0}”) en fonction de la scène réelle afin de garantir que le processus de départ est exempt de collisions.

Se déplacer vers le point intermédiaire

   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 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 intermédiaires permet d’assurer un mouvement du robot fluide et d’éviter des collisions inutiles. Vous pouvez ajouter plusieurs points intermédiaires selon 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 CPDAT4 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 empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène lors des déplacements.

  • 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 CPDAT5 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 sûre 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 sorties numériques (DO) pour effectuer la dépose

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

Après que le robot se soit déplacé vers le point de dépose, vous pouvez définir une sortie numérique (par exemple “$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 de mettre en pause l’exécution du programme. Si vous avez ajouté une instruction pour définir une 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 CPDAT4 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 empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène lors des déplacements.

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

Se déplacer vers la position Home

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

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

Vous devez enseigner la position Home 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.