Exemple de programme 2 : MM_S2_Viz_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-Viz, 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_S2_Viz_Basic.

Projet

Projets Mech-Vision et Mech-Viz

Prérequis

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

Description du programme

Cette section décrit le programme d’exemple MM_S2_Viz_Basic.

DEF MM_S2_Viz_Basic ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz 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-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
END

Le workflow correspondant au code de l’exemple ci-dessus est illustré dans la figure ci-dessous.

sample2

Le tableau ci-dessous explique le programme ci-dessus. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour en afficher la 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 de l’outil actuel sur 1.

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

Les deux instructions ci-dessus définissent les repères de l’outil et de la base actuels.

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 trajet le plus rapide jusqu’au 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 la calibration dans le document de calibration.

  • Vel=100 % : La vitesse.

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

L’instruction ci-dessus indique 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, c’est-à-dire 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 la calibration dans le document de calibration.
  • 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 de l’outil 1.

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

L’instruction ci-dessus indique de déplacer le robot de façon linéaire vers la position de capture d’image enseignée.

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

   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
  • MM_Start_Viz : La commande permettant de déclencher l’exécution du projet Mech-Viz.

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

  • init_jps : Stocke des positions articulaires personnalisées. Lors de la planification du chemin de prise, le robot simulé dans le projet Mech-Viz se déplacera depuis ces positions articulaires jusqu’au premier waypoint.

L’ensemble de la commande indique que le robot déclenche le système de vision pour exécuter le projet Mech-Viz, puis Mech-Viz planifie le chemin de prise du robot sur la base du résultat de vision fourni par Mech-Vision.

Obtenir la trajectoire planifiée

   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(1,pos_num,vis_pos_num,status)
  • MM_Get_VizData : La commande permettant d’obtenir la trajectoire planifiée par Mech-Viz.

  • 1 : Spécifie que le type de pose des waypoints obtenus est des positions articulaires.

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

  • vis_pos_num : La variable qui stocke le numéro d’ordre du waypoint Vision Move (waypoint de prise) dans la trajectoire.

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

L’instruction entière indique que le robot obtient la trajectoire planifiée depuis le projet Mech-Viz.

La trajectoire planifiée renvoyée est enregistrée dans la mémoire du robot et ne peut pas être obtenue directement. Pour y accéder, vous devez l’enregistrer à une étape ultérieure.
   ;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
  • IF A THEN …​ ENDIF : Lorsque la condition A est satisfaite, le programme exécute le code entre IF et ENDIF.

  • <> : Différent de.

L’instruction ci-dessus indique que lorsque le code d’état est 2100, 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 au moyen de la commande halt.

Enregistrer 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 enregistrer la trajectoire planifiée.

  • 1 : Enregistre le premier waypoint.

  • Xpick_point1 : La variable qui stocke les positions articulaires du premier waypoint.

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

  • toolid[1] : La variable qui stocke l’identifiant d’outil correspondant au premier waypoint.

L’instruction entière « MM_Get_Jps(1,Xpick_point1,label[1],toolid[1]) » enregistre les positions articulaires, l’étiquette et l’identifiant d’outil du premier waypoint dans les variables spécifiées.

Dans ce programme d’exemple, la trajectoire planifiée par Mech-Viz se compose de trois waypoints : le premier est le waypoint d’approche de la prise (Xpick_point1), le second est le waypoint de prise (Xpick_point2), et le troisième est le waypoint de départ de la prise (Xpick_point3). Veuillez enregistrer la trajectoire planifiée en fonction du projet Mech-Viz réel.

Se déplacer vers le waypoint 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 waypoint d’approche de la prise. pick_point1 et Xpick_point1 indiquent la même position.

Se déplacer vers le waypoint de prise

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

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

Configurer des 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 waypoint de prise, vous pouvez définir une DO (par exemple « $OUT[1]=TRUE ») pour contrôler le robot afin d’utiliser l’outil pour effectuer la prise. Veuillez configurer 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 ici l’instruction halt.

Se déplacer vers le waypoint 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 waypoint de départ de la prise. pick_point3 et Xpick_point3 indiquent la même position.

Se déplacer vers le waypoint 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 waypoint intermédiaire (drop_waypoint) entre le waypoint de départ de la prise et le waypoint d’approche de la dépose.

  • L’ajout de waypoints intermédiaires permet d’assurer un mouvement fluide du robot et d’éviter des collisions inutiles. Vous pouvez ajouter plusieurs waypoints intermédiaires en fonction de la situation réelle.

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

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

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

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

  • L’ajout de waypoints 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 de ses mouvements.

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

Se déplacer vers le waypoint de dépose

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

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

  • Le waypoint de dépose doit se situer à une distance de sécurité des autres stations, du personnel et des équipements, et ne doit pas dépasser la portée maximale du robot.

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

Configurer 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 waypoint de dépose, vous pouvez définir une DO (par exemple « $OUT[1]=FALSE ») pour contrôler le robot afin d’utiliser l’outil pour effectuer la dépose. Veuillez configurer 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 ici l’instruction halt.

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

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

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

  • L’ajout de waypoints 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 de ses mouvements.

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

Se déplacer vers la position HOME

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

Le robot se déplace du waypoint de départ de la dépose vers le waypoint 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 la calibration dans le document de calibration.

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.