Programme d’exemple 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.

Présentation 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/FANUC/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 partie décrit le programme d’exemple MM_S2_Viz_Basic.

   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Viz ;
   3:  !project and get planned path ;
   4:  !Mech-Mind, 2023-12-25 ;
   5:  !-------------------------------- ;
   6:   ;
   7:  !set current uframe NO. to 0 ;
   8:  UFRAME_NUM=0 ;
   9:  !set current tool NO. to 1 ;
  10:  UTOOL_NUM=1 ;
  11:  !move to robot home position ;
  12:J P[1] 100% FINE    ;
  13:  !initialize communication ;
  14:  !parameters(initialization is ;
  15:  !required only once) ;
  16:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  17:  !move to image-capturing position ;
  18:L P[2] 1000mm/sec FINE    ;
  19:  !trigger Mech-Viz project ;
  20:  CALL MM_START_VIZ(2,10) ;
  21:  !get planned path, 1st argument ;
  22:  !(1) means getting pose in JPs ;
  23:  CALL MM_GET_VIZ(1,51,52,53) ;
  24:  !check whether planned path has ;
  25:  !been got from Mech-Viz ;
  26:  !successfully ;
  27:  IF R[53]<>2100,JMP LBL[99] ;
  28:  !save waypoints of the planned ;
  29:  !path to local variables one ;
  30:  !by one ;
  31:  CALL MM_GET_JPS(1,60,70,80) ;
  32:  CALL MM_GET_JPS(2,61,71,81) ;
  33:  CALL MM_GET_JPS(3,62,72,82) ;
  34:  !follow the planned path to pick ;
  35:  !move to approach waypoint ;
  36:  !of picking ;
  37:J PR[60] 50% FINE    ;
  38:  !move to picking waypoint ;
  39:J PR[61] 10% FINE    ;
  40:  !add object grasping logic here, ;
  41:  !such as "DO[1]=ON" ;
  42:  PAUSE ;
  43:  !move to departure waypoint ;
  44:  !of picking ;
  45:J PR[62] 50% FINE    ;
  46:  !move to intermediate waypoint ;
  47:  !of placing ;
  48:J P[3] 50% CNT100    ;
  49:  !move to approach waypoint ;
  50:  !of placing ;
  51:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  52:  !move to placing waypoint ;
  53:L P[4] 300mm/sec FINE    ;
  54:  !add object releasing logic here, ;
  55:  !such as "DO[1]=OFF" ;
  56:  PAUSE ;
  57:  !move to departure waypoint ;
  58:  !of placing ;
  59:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  60:  !move back to robot home position ;
  61:J P[1] 100% FINE    ;
  62:  END ;
  63:   ;
  64:  LBL[99:vision error] ;
  65:  !add error handling logic here ;
  66:  !according to different ;
  67:  !error codes ;
  68:  !e.g.: status=2038 means no ;
  69:  !point cloud in ROI ;
  70:  PAUSE ;

Le flux de travail correspondant au code du programme d’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 commande pour en afficher la description détaillée.

Fonctionnalité Code et description

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

   7:  !set current uframe NO. to 0 ;
   8:  UFRAME_NUM=0 ;
   9:  !set current tool NO. to 1 ;
  10:  UTOOL_NUM=1 ;
  • UFRAME_NUM=0: Définit le repère utilisateur sélectionné sur 0. 0 indique le repère monde.

  • UTOOL_NUM=1: Définit le repère outil sélectionné sur 1. Vous devez spécifier le repère outil représenté par 1.

Les deux instructions ci-dessus définissent les repères utilisateur et outil sélectionnés.

Aller à la position Home

  11:  !move to robot home position ;
  12:J P[1] 100% FINE    ;
  • J: La commande de mouvement en mode articulé du robot, indiquant que le robot se déplace le long d’un arc vers une position spécifiée.

  • P[1]: Spécifie la position cible vers laquelle le robot se déplace, c’est-à-dire la position Home enseignée. La position Home est généralement une position sûre où le robot est éloigné des objets et de l’équipement environnant.

  • 100%: Le pourcentage de la vitesse maximale relative de déplacement.

  • FINE: Le robot marque une brève pause lorsqu’il atteint une position cible avant de se déplacer vers la suivante.

L’instruction entière indique que le robot se déplace vers la position Home enseignée en utilisant un mouvement articulé (Joint).

Vous devez enseigner la position Home (P[1]) à l’avance. Pour des instructions détaillées, consultez le manuel officiel de FANUC.

Initialiser les paramètres de communication

  13:  !initialize communication ;
  14:  !parameters(initialization is ;
  15:  !required only once) ;
  16:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  • MM_INIT_SKT: La commande pour initialiser la communication.

  • '8': Le numéro de port du robot.

  • '127.0.0.1': L’adresse IP de l’IPC.

  • 50000: Le numéro de port de l’IPC.

  • 5: Spécifie le délai d’expiration de la communication à 5 minutes.

L’instruction entière indique que le robot établit la connexion avec le système de vision en spécifiant l’adresse IP, le numéro de port et le délai d’expiration de la cible de communication (l’IPC) via la commande MM_INIT_SKT.

Veuillez modifier l’adresse IP et le numéro de port de l’IPC en fonction de la situation réelle. L’adresse IP et le numéro de port doivent être cohérents avec ceux définis dans le système de vision.

Aller à la position de capture d’image

  17:  !move to image-capturing position ;
  18:L P[2] 1000mm/sec FINE    ;
  • L: La commande de mouvement linéaire du robot. Cette commande spécifie de déplacer le robot le long d’une trajectoire linéaire vers une position donnée.

  • P[2]: Spécifie la position cible vers laquelle le robot se déplace, c’est-à-dire la position de capture d’image enseignée. La position de capture d’image correspond à la position du robot à partir de laquelle la caméra montée sur le robot capture des images. À cette position, le bras du robot ne doit pas obstruer le champ de vision (FOV) de la caméra.

La commande entière indique que le robot se déplace vers la position de capture d’image en mouvement linéaire, avec une vitesse de 1000 mm/s.

Vous devez enseigner à l’avance la position de capture d’image (P[2]). Pour des instructions détaillées, consultez le manuel officiel de FANUC.

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

  19:  !trigger Mech-Viz project ;
  20:  CALL MM_START_VIZ(2,10) ;
  • MM_START_VIZ: La commande pour déclencher l’exécution du projet Mech-Viz.

  • 2: Envoie les positions articulaires représentées par le registre de position PR[10] au projet Mech-Viz.

  • 10: Le registre de position PR[10], utilisé pour stocker des positions articulaires personnalisées. Vous devez enseigner à l’avance la position représentée par ces positions articulaires personnalisées. Lorsque la trajectoire de prise est planifiée, le robot simulé dans le projet Mech-Viz se déplacera depuis ces positions articulaires vers le premier point de passage.

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

Obtenir la trajectoire planifiée

  21:  !get planned path, 1st argument ;
  22:  !(1) means getting pose in JPs ;
  23:  CALL MM_GET_VIZ(1,51,52,53) ;
  • MM_GET_VIZ: La commande pour obtenir la trajectoire planifiée par Mech-Viz.

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

  • 51: Le registre numérique R[51], qui stocke le nombre de points de passage renvoyés par le système de vision.

  • 52: Le registre numérique R[52], qui stocke le numéro de séquence du point de passage Vision Move (point de prise) dans la trajectoire.

  • 53: Le registre numérique R[53], 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 à partir du 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 la stocker dans une étape ultérieure.
  24:  !check whether planned path has ;
  25:  !been got from Mech-Viz ;
  26:  !successfully ;
  27:  IF R[53]<>2100,JMP LBL[99] ;
  • “IF A,JMP B”: Si la condition A est remplie, le programme sautera au point B et exécutera les instructions qui s’y trouvent.

  • <>: Différent de (non égal).

L’instruction signifie que lorsque le code d’état dans R[53] est 2100, le robot a obtenu avec succès la trajectoire planifiée ; sinon, une exception est survenue dans le système de vision et le programme sautera à LBL[99] pour exécuter les instructions qui s’y trouvent. Le code suivant correspond à LBL[99].

  64:  LBL[99:vision error] ;
  65:  !add error handling logic here ;
  66:  !according to different ;
  67:  !error codes ;
  68:  !e.g.: status=2038 means no ;
  69:  !point cloud in ROI ;
  70:  PAUSE ;

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 arrêtant l’exécution du programme à l’aide de la commande PAUSE.

Stocker la trajectoire planifiée

  28:  !save waypoints of the planned ;
  29:  !path to local variables one ;
  30:  !by one ;
  31:  CALL MM_GET_JPS(1,60,70,80) ;
  32:  CALL MM_GET_JPS(2,61,71,81) ;
  33:  CALL MM_GET_JPS(3,62,72,82) ;
  • MM_GET_JPS: La commande pour stocker la trajectoire planifiée.

  • 1: Stocke le premier point de passage.

  • 60: Le registre de position PR[60], qui stocke les positions articulaires du premier point de passage.

  • 70: Le registre numérique R[70], qui stocke l’étiquette du premier point de passage.

  • 80: Le registre numérique R[80], qui stocke l’ID d’outil du premier point de passage.

L’instruction entière “CALL MM_GET_JPS(1,60,70,80)” stocke les positions articulaires, l’étiquette et l’ID d’outil du premier point de passage dans les registres spécifiés.

Dans cet exemple, la trajectoire planifiée par Mech-Viz comprend trois points de passage : le premier est le point d’approche de la prise (PR[60]), le second est le point de prise (PR[61]) et le troisième est le point de départ de la prise (PR[62]). Veuillez stocker la trajectoire planifiée en fonction du projet Mech-Viz réel.

Aller au point d’approche de la prise

  34:  !follow the planned path to pick ;
  35:  !move to approach waypoint ;
  36:  !of picking ;
  37:J PR[60] 50% FINE    ;

Le robot se déplace vers le point d’approche de la prise (la position représentée par PR[60]).

Aller au point de prise

  38:  !move to picking waypoint ;
  39:J PR[61] 10% FINE    ;

Le robot se déplace vers le point de prise (la position représentée par PR[61]).

Définir un DO pour effectuer la prise

  40:  !add object grasping logic here, ;
  41:  !such as "DO[1]=ON" ;
  42:  PAUSE ;

Après que le robot se soit déplacé vers le point de prise, vous pouvez définir une commande DO (telle que “DO[1]=ON”) pour contrôler le robot afin d’utiliser l’outil pour effectuer la prise. Veuillez définir les commandes DO en fonction de la situation réelle.

PAUSE indique d’arrêter l’exécution du programme. Si vous avez ajouté une instruction pour définir une commande DO, vous pouvez supprimer l’instruction PAUSE ici.

Aller au point de départ de la prise

  43:  !move to departure waypoint ;
  44:  !of picking ;
  45:J PR[62] 50% FINE    ;

Le robot se déplace vers le point de départ de la prise (la position représentée par PR[62]).

Aller au point intermédiaire

  46:  !move to intermediate waypoint ;
  47:  !of placing ;
  48:J P[3] 50% CNT100    ;
  • P[3]: Spécifie la position cible vers laquelle le robot se déplace, à savoir le point intermédiaire.

  • CNT: Le robot approche de la position cible mais ne s’y arrête pas ; il continue à se déplacer vers la position suivante. Le nombre qui suit indique le degré d’approche de la position cible ; une valeur plus grande signifie qu’il est plus éloigné de la position cible.

L’instruction entière déplace le robot en mode articulé vers un certain point intermédiaire entre le point de départ de la prise et le point d’approche de la dépose.

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

  • Vous devez enseigner le point intermédiaire (P[3]) à l’avance. Pour savoir comment enseigner le point, consultez le manuel officiel de FANUC.

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

  49:  !move to approach waypoint ;
  50:  !of placing ;
  51:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  • P[4]: Le point de dépose. Vous devez enseigner le point de dépose (P[4]) à l’avance. Pour savoir comment enseigner le point, consultez le manuel officiel de FANUC.

  • “Tool_Offset,PR[2]”: Le robot ajuste sa position par rapport au point de dépose (P[4]) en utilisant le décalage spécifié dans PR[2]. Dans ce cas, vous n’avez besoin de définir que la valeur de l’axe Z de PR[2]. Par exemple, définir l’axe Z à -100 et toutes les autres valeurs à 0 signifie que la position est 100 mm en dessous du point de dépose le long de l’axe Z (c’est-à-dire que le robot se déplacera de 100 mm au-dessus du point de dépose pour atteindre le point d’approche de la dépose).

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 du déplacement. Vous pouvez modifier la valeur de PR[2] en fonction du scénario réel afin de garantir qu’aucune collision ne se produise pendant l’approche.

Aller au point de dépose

  52:  !move to placing waypoint ;
  53:L P[4] 300mm/sec FINE    ;

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

Définir des commandes DO pour effectuer la dépose

  54:  !add object releasing logic here, ;
  55:  !such as "DO[1]=OFF" ;
  56:  PAUSE ;

Après que le robot se soit déplacé vers le point de dépose, vous pouvez définir une commande DO (telle que “DO[1]=OFF”) pour contrôler le robot afin d’utiliser l’outil pour effectuer la dépose. Veuillez définir les commandes DO en fonction de la situation réelle.

PAUSE indique d’arrêter l’exécution du programme. Si vous avez ajouté une instruction pour définir une commande DO, vous pouvez supprimer l’instruction PAUSE ici.

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

  57:  !move to departure waypoint ;
  58:  !of placing ;
  59:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;

Le robot se déplace vers une position au-dessus du point de dépose et atteint le point de départ de la dépose.

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 du déplacement. Vous pouvez modifier la valeur de PR[2] en fonction du scénario réel afin de garantir qu’aucune collision ne se produise pendant le départ.

Revenir à la position Home

  60:  !move back to robot home position ;
  61:J P[1] 100% FINE    ;

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

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.