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.

Présentation du programme

Description

Le robot déclenche l’exécution du projet Mech-Vision, puis obtient le résultat de vision pour la prise et la dépose de 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/FANUC/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.

   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Vision ;
   3:  !project and get vision result ;
   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 NO.1 Mech-Vision project ;
  20:  CALL MM_START_VIS(1,0,2,10) ;
  21:  !get vision result from NO.1 ;
  22:  !Mech-Vision project ;
  23:  CALL MM_GET_VIS(1,51,53) ;
  24:  !check whether vision result has ;
  25:  !been got from Mech-Vision ;
  26:  !successfully ;
  27:  IF R[53]<>1100,JMP LBL[99] ;
  28:  !save first vision point data to ;
  29:  !local variables ;
  30:  CALL MM_GET_POS(1,60,70,80) ;
  31:  !move to intermediate waypoint ;
  32:  !of picking ;
  33:J P[3] 50% CNT100    ;
  34:  !move to approach waypoint ;
  35:  !of picking ;
  36:L PR[60] 1000mm/sec FINE Tool_Offset,PR[1]    ;
  37:  !move to picking waypoint ;
  38:L PR[60] 300mm/sec FINE    ;
  39:  !add object grasping logic here, ;
  40:  !such as "DO[1]=ON" ;
  41:  PAUSE ;
  42:  !move to departure waypoint ;
  43:  !of picking ;
  44:L PR[60] 1000mm/sec FINE Tool_Offset,PR[1]    ;
  45:  !move to intermediate waypoint ;
  46:  !of placing ;
  47:J P[4] 50% CNT100    ;
  48:  !move to approach waypoint ;
  49:  !of placing ;
  50:L P[5] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  51:  !move to placing waypoint ;
  52:L P[5] 300mm/sec FINE    ;
  53:  !add object releasing logic here, ;
  54:  !such as "DO[1]=OFF" ;
  55:  PAUSE ;
  56:  !move to departure waypoint ;
  57:  !of placing ;
  58:L P[5] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  59:  !move back to robot home position ;
  60:J P[1] 100% FINE    ;
  61:  END ;
  62:   ;
  63:  LBL[99:vision error] ;
  64:  !add error handling logic here ;
  65:  !according to different ;
  66:  !error codes ;
  67:  !e.g.: status=1003 means no ;
  68:  !point cloud in ROI ;
  69:  !e.g.: status=1002 means no ;
  70:  !vision results ;
  71:  PAUSE ;

Le flux de travail correspondant au code du 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 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éfinir le repère utilisateur sélectionné sur 0. 0 indique le repère monde.

  • UTOOL_NUM=1: Définir 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.

Se déplacer vers la position d’origine

  11:  !move to robot home position ;
  12:J P[1] 100% FINE    ;
  • J: La commande de mouvement en position articulée du robot, indiquant que le robot se déplace le long de l’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 d’origine enseignée. La position d’origine est généralement une position sûre où le robot est éloigné des pièces et des équipements environnants.

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

  • FINE: Le robot marque une courte pause à l’arrivée à une position cible avant de se déplacer vers la suivante.

L’instruction complète indique que le robot se déplace vers la position d’origine enseignée en utilisant un mouvement en position articulée.

Vous devez enseigner la position d’origine (P[1]) à l’avance. Pour des instructions détaillées, référez-vous au manuel officiel 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écifier le délai d’expiration de la communication à 5 minutes.

L’instruction complète 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 selon 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.

Se déplacer vers 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 indique de déplacer le robot le long d’un trajet linéaire vers une position spécifié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 où la caméra sur le robot capture des images. À cette position, le bras du robot ne doit pas obstruer le champ de vision de la caméra.

L’ensemble de la commande indique que le robot se déplace vers la position de capture d’image en mouvement linéaire, à une vitesse de 1000 mm/sec.

Vous devez enseigner la position de capture d’image (P[2]) à l’avance. Pour des instructions détaillées, référez-vous au manuel officiel FANUC.

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

  19:  !trigger NO.1 Mech-Vision project ;
  20:  CALL MM_START_VIS(1,0,2,10) ;
  • 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: Spécifie que la pose de la bride du robot doit être fournie au projet Mech-Vision.

  • 10: Le registre de position PR[10], qui stocke des positions articulaires personnalisées. Dans ce programme d’exemple, les positions articulaires n’ont pas d’utilité pratique, mais l’ID du registre de position doit être spécifié.

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

Obtenir le résultat de vision

  21:  !get vision result from NO.1 ;
  22:  !Mech-Vision project ;
  23:  CALL MM_GET_VIS(1,51,53) ;
  • MM_GET_VIS: La commande pour obtenir le résultat de vision.

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

  • 51: Le registre numérique R[51], qui stocke le nombre de points de vision obtenus.

  • 53: Le registre numérique R[53], qui stocke le code d’état d’exécution de la commande.

L’instruction complète indique que le robot obtient le résultat de vision à partir 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 l’enregistrer à l’étape suivante.
  24:  !check whether vision result has ;
  25:  !been got from Mech-Vision ;
  26:  !successfully ;
  27:  IF R[53]<>1100,JMP LBL[99] ;
  • « IF A,JMP B »: Si la condition A est remplie, le programme sautera au point B et y exécutera les instructions.

  • <>: Non égal.

L’instruction signifie que lorsque le code d’état dans R[53] 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 sautera à LBL[99] et exécutera les instructions qui s’y trouvent. Voici le code à LBL[99].

  63:  LBL[99:vision error] ;
  64:  !add error handling logic here ;
  65:  !according to different ;
  66:  !error codes ;
  67:  !e.g.: status=1003 means no ;
  68:  !point cloud in ROI ;
  69:  !e.g.: status=1002 means no ;
  70:  !vision results ;
  71:  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.

Enregistrer le résultat de vision

  28:  !save first vision point data to ;
  29:  !local variables ;
  30:  CALL MM_GET_POS(1,60,70,80) ;
  • MM_GET_POS: La commande pour enregistrer le résultat de vision.

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

  • 60: Le registre de position PR[60], qui stocke le TCP du premier point de vision, c’est-à-dire le TCP du point de prise.

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

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

L’instruction complète enregistre le TCP, l’étiquette et l’ID d’outil du premier point de vision dans les registres spécifiés.

Se déplacer vers le point intermédiaire

  31:  !move to intermediate waypoint ;
  32:  !of picking ;
  33: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 la position cible sans s’y arrêter ; 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 complète déplace le robot en mouvement articulé vers un point intermédiaire entre la position de capture d’image et le point d’approche de la prise.

  • L’ajout de points intermédiaires permet d’assurer un mouvement fluide du robot 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 (P[3]) à l’avance. Pour savoir comment enseigner le point, reportez-vous au manuel officiel FANUC.

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

  34:  !move to approach waypoint ;
  35:  !of picking ;
  36:L PR[60] 1000mm/sec FINE Tool_Offset,PR[1]    ;
  • L: Le robot se déplace de manière linéaire.

  • PR[60]: Le TCP du point de prise.

  • « Tool_Offset,PR[1] »: Le robot ajuste sa position par rapport au point de prise (PR[60]) en utilisant le décalage spécifié dans PR[1]. Dans ce cas, vous devez uniquement régler la valeur de l’axe Z de PR[1]. Par exemple, définir l’axe Z à -100 et toutes les autres valeurs à 0 signifie que la position est 100mm en dessous du point de prise le long de l’axe Z (c’est-à-dire que le robot se déplacera 100mm au-dessus du point de prise pour atteindre le point d’approche de la prise).

L’instruction complète ordonne au robot de se déplacer linéairement vers une position située au-dessus du point de prise.

L’ajout de points d’approche pour la prise 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[1] selon la situation réelle pour garantir qu’aucune collision ne se produise pendant l’approche.

Se déplacer vers le point de prise

  37:  !move to picking waypoint ;
  38:L PR[60] 300mm/sec FINE    ;

Le robot se déplace linéairement du point d’approche de la prise vers le point de prise.

Définir des commandes DO pour effectuer la prise

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

Après que le robot s’est déplacé vers le point de prise, vous pouvez définir une commande DO (par exemple « DO[1]=ON ») pour contrôler le robot afin d’utiliser l’outil pour effectuer la prise. Veuillez définir les commandes DO selon la situation réelle.

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

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

  42:  !move to departure waypoint ;
  43:  !of picking ;
  44:L PR[60] 1000mm/sec FINE Tool_Offset,PR[1]    ;

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

L’ajout de points de départ pour la prise 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[1] selon la situation réelle pour garantir qu’aucune collision ne se produise pendant la sortie.

Se déplacer vers le point intermédiaire

  45:  !move to intermediate waypoint ;
  46:  !of placing ;
  47:J P[4] 50% CNT100    ;

Le robot se déplace vers un 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 permet d’assurer un mouvement fluide du robot 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 (P[4]) à l’avance. Pour savoir comment enseigner le point, reportez-vous au manuel officiel FANUC.

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

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

  • « Tool_Offset,PR[2] »: Le robot ajuste sa position par rapport au point de dépose (P[5]) en utilisant le décalage spécifié dans PR[2]. Dans ce cas, vous devez uniquement régler 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 100mm en dessous du point de dépose le long de l’axe Z (c’est-à-dire que le robot se déplacera 100mm au-dessus du point de dépose pour atteindre le point d’approche de la dépose).

L’ajout de points d’approche pour 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] selon la situation réelle pour garantir qu’aucune collision ne se produise pendant l’approche.

Se déplacer vers le point de dépose

  51:  !move to placing waypoint ;
  52:L P[5] 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

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

Après que le robot s’est déplacé vers le point de dépose, vous pouvez définir une commande DO (par exemple « DO[1]=OFF ») pour contrôler le robot afin d’utiliser l’outil pour effectuer la dépose. Veuillez définir les commandes DO selon la situation réelle.

PAUSE indique l’arrêt de 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

  56:  !move to departure waypoint ;
  57:  !of placing ;
  58:L P[5] 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 pour 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] selon la situation réelle pour garantir qu’aucune collision ne se produise pendant la sortie.

Se déplacer vers la position d’origine

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

Le robot se déplace du point de départ de la dépose vers la position d’origine à 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.