Programme d’exemple 9: MM_S9_Viz_RunInAdvance

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 projet Mech-Viz est déclenché lorsque le robot effectue la préhension. Ensuite, la caméra est démarrée par l’étape Branchement par Msg du projet lorsque le robot effectue la dépose afin de planifier la trajectoire suivante, ce qui raccourcit le temps de cycle.

File path

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

Project

Projets Mech-Vision et Mech-Viz

Le projet Mech-Viz nécessite que l’étape Branchement par Msg soit préalablement configurée.

Prerequisites

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

La seule différence entre le programme d’exemple MM_S9_Viz_RunInAdvance et le programme d’exemple MM_S5_Viz_SetBranch est que MM_S9_Viz_RunInAdvance peut planifier la trajectoire suivante (le code de cette fonctionnalité est en gras). En conséquence, seule la fonctionnalité de planification de la trajectoire suivante est décrite dans la partie suivante. Pour des informations sur les parties de MM_S9_Viz_RunInAdvance qui sont identiques à celles de MM_S5_Viz_SetBranch, voir Programme d’exemple 5: MM_S5_Viz_SetBranch.
   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Viz ;
   3:  !project then set branch and get ;
   4:  !planned path, trigger Mech-Viz ;
   5:  !project and set branch in ;
   6:  !advance during pick&place proces ;
   7:  !process ;
   8:  !Mech-Mind, 2023-12-25 ;
   9:  !-------------------------------- ;
  10:   ;
  11:  !set current uframe NO. to 0 ;
  12:  UFRAME_NUM=0 ;
  13:  !set current tool NO. to 1 ;
  14:  UTOOL_NUM=1 ;
  15:  !move to robot home position ;
  16:J P[1] 100% FINE    ;
  17:  !initialize communication ;
  18:  !parameters(initialization is ;
  19:  !required only once) ;
  20:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  21:  !move to image-capturing position ;
  22:L P[2] 1000mm/sec FINE    ;
  23:  !trigger Mech-Viz project ;
  24:  CALL MM_START_VIZ(2,10) ;
  25:  !set branch, "MM_SET_BCH ;
  26:  !(Branch_Num,Exit_Num)" ;
  27:  CALL MM_SET_BCH(1,1) ;
  28:  LBL[1:LOOP] ;
  29:  !get planned path, 1st argument ;
  30:  !(1) means getting pose in JPs ;
  31:  CALL MM_GET_VIZ(1,51,52,53) ;
  32:  !check whether planned path has ;
  33:  !been got from Mech-Viz ;
  34:  !successfully ;
  35:  IF R[53]<>2100,JMP LBL[99] ;
  36:  !save waypoints of the planned ;
  37:  !path to local variables one ;
  38:  !by one ;
  39:  CALL MM_GET_JPS(1,60,70,80) ;
  40:  CALL MM_GET_JPS(2,61,71,81) ;
  41:  CALL MM_GET_JPS(3,62,72,82) ;
  42:  !follow the planned path to pick ;
  43:  !move to approach waypoint ;
  44:  !of picking ;
  45:J PR[60] 50% FINE    ;
  46:  !move to picking waypoint ;
  47:J PR[61] 10% FINE    ;
  48:  !add object grasping logic here, ;
  49:  !such as "DO[1]=ON" ;
  50:  PAUSE ;
  51:  !trigger Mech-Viz project but not ;
  52:  !to trigger camera capturing ;
  53:  CALL MM_START_VIZ(2,10) ;
  54:  !move to departure waypoint ;
  55:  !of picking ;
  56:J PR[62] 50% FINE    ;
  57:  !move to intermediate waypoint ;
  58:  !of placing ;
  59:J P[3] 50% CNT100    ;
  60:  !move to approach waypoint ;
  61:  !of placing ;
  62:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  63:  !set branch exit port and trigger ;
  64:  !camera capturing when robot ;
  65:  !moves out of camera’s field of ;
  66:  !view ;
  67:  CALL MM_SET_BCH(1,1) ;
  68:  !move to placing waypoint ;
  69:L P[4] 300mm/sec FINE    ;
  70:  !add object releasing logic here, ;
  71:  !such as "DO[1]=OFF" ;
  72:  PAUSE ;
  73:  !move to departure waypoint ;
  74:  !of placing ;
  75:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  76:  !move back to robot home position ;
  77:J P[1] 100% FINE    ;
  78:  JMP LBL[1] ;
  79:  END ;
  80:   ;
  81:  LBL[99:vision error] ;
  82:  !add error handling logic here ;
  83:  !according to different ;
  84:  !error codes ;
  85:  !e.g.: status=2038 means no ;
  86:  !point cloud in ROI ;
  87:  PAUSE ;

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

sample9

La partie suivante décrit la fonctionnalité de planification de la trajectoire suivante.

Fonctionnalité Code et description

Planifier à l’avance la trajectoire suivante par bouclage (préhension→déclenchement du cycle suivant de planification de trajectoire→dépose)

  28:  LBL[1:LOOP] ;
  ...
  78:  JMP LBL[1] ;

Le code ci-dessus indique que le programme exécute de façon répétée le code à LBL[1].

  29:  !get planned path, 1st argument ;
  30:  !(1) means getting pose in JPs ;
  31:  CALL MM_GET_VIZ(1,51,52,53) ;
  32:  !check whether planned path has ;
  33:  !been got from Mech-Viz ;
  34:  !successfully ;
  35:  IF R[53]<>2100,JMP LBL[99] ;

Le code ci-dessus indique que le robot obtient la trajectoire planifiée depuis Mech-Viz en exécutant la commande MM_GET_VIZ.

  36:  !save waypoints of the planned ;
  37:  !path to local variables one ;
  38:  !by one ;
  39:  CALL MM_GET_JPS(1,60,70,80) ;
  40:  CALL MM_GET_JPS(2,61,71,81) ;
  41:  CALL MM_GET_JPS(3,62,72,82) ;

Le code ci-dessus indique que le robot stocke la trajectoire planifiée dans le registre spécifié en exécutant la commande MM_GET_JPS. Cet exemple suppose que PR[60], PR[61] et PR[62] correspondent respectivement au point d’approche de la préhension, au point de préhension et au point de départ de la préhension.

  42:  !follow the planned path to pick ;
  43:  !move to approach waypoint ;
  44:  !of picking ;
  45:J PR[60] 50% FINE    ;
  46:  !move to picking waypoint ;
  47:J PR[61] 10% FINE    ;
  48:  !add object grasping logic here, ;
  49:  !such as "DO[1]=ON" ;
  50:  PAUSE ;

Le code ci-dessus indique que le robot se déplace vers le point d’approche de la préhension puis vers le point de préhension, puis la commande DO (par exemple DO[1]=ON) est exécutée pour contrôler l’outil afin d’effectuer la préhension.

  51:  !trigger Mech-Viz project but not ;
  52:  !to trigger camera capturing ;
  53:  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. Les positions articulaires seront envoyées au projet Mech-Viz comme point de départ du cycle suivant de planification. Ainsi, si le robot se trouve en dehors de la zone de capture d’image, le projet Mech-Viz peut être déclenché à l’avance pour planifier la trajectoire du cycle suivant.

Le code ci-dessus indique que le robot exécute la commande MM_START_VIZ pour démarrer à nouveau le projet Mech-Viz. Maintenant que le robot a obtenu la trajectoire de préhension planifiée pour ce cycle et s’est déplacé jusqu’au point de préhension, vous pouvez démarrer le projet Mech-Viz à l’avance pour planifier la trajectoire du cycle suivant au lieu d’attendre la fin de la dépose puis de démarrer le projet Mech-Viz.

Une fois le projet Mech-Viz exécuté, le projet attendra la commande MM_SET_BCH pour définir le port de sortie de l’étape Branchement par Msg. De plus, l’étape de reconnaissance visuelle (qui effectue la capture d’images) a été placée sur une branche de l’étape Branchement par Msg, de sorte que la caméra ne réalise pas de capture d’images à ce moment-là.
  54:  !move to departure waypoint ;
  55:  !of picking ;
  56:J PR[62] 50% FINE    ;
  57:  !move to intermediate waypoint ;
  58:  !of placing ;
  59:J P[3] 50% CNT100    ;
  60:  !move to approach waypoint ;
  61:  !of placing ;
  62:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;

Le code ci-dessus indique que le robot se déplace vers le point de départ de la préhension (PR[62]), le point intermédiaire (P[3]), puis le point d’approche de la dépose (Tool_Offset,PR[2]).

  63:  !set branch exit port and trigger ;
  64:  !camera capturing when robot ;
  65:  !moves out of camera's field of ;
  66:  !view ;
  67:  CALL MM_SET_BCH(1,1) ;

Dans le code ci-dessus, le robot définit le port de sortie de l’étape Branchement par Msg avec la commande MM_SET_BCH. Sur ce port de sortie, l’étape de reconnaissance visuelle sera exécutée. Ensuite, Mech-Viz planifiera à l’avance la prochaine trajectoire de préhension en se basant sur le résultat de vision.

  68:  !move to placing waypoint ;
  69:L P[4] 300mm/sec FINE    ;
  70:  !add object releasing logic here, ;
  71:  !such as "DO[1]=OFF" ;
  72:  PAUSE ;
  73:  !move to departure waypoint ;
  74:  !of placing ;
  75:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  76:  !move back to robot home position ;
  77:J P[1] 100% FINE    ;

Dans l’exemple ci-dessus, le robot se déplace vers le point de dépose (P[4]), effectue la dépose (par exemple, DO[1]=OFF), puis se déplace vers le point de départ de la dépose (Tool_Offset,PR[2]) et enfin vers la position de référence.

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.