Programme d’exemple 16 : MM_S16_Viz_GetDirection

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

Après que le robot a obtenu le trajet planifié et terminé la prise, il adopte différentes stratégies de dépose selon l’orientation du groupe d’objets.

Chemin du fichier

Accédez au répertoire d’installation de Mech-Vision et Mech-Viz et trouvez le fichier en utilisant le chemin Communication Component/Robot_Interface/FANUC/sample/MM_S16_Viz_GetDirection.

Projet

Projet Mech-Vision et projet Mech-Viz (l’outil est une pince à vide de dépalletisation)

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

Comparé au programme d’exemple MM_S15_Viz_GetDoList, ce programme ne contient que la modification suivante (le code de cette modification est en gras). Ainsi, seule la modification est décrite dans la section suivante. Pour les parties de MM_S16_Viz_GetDirection identiques à celles de MM_S15_Viz_GetDoList, consultez Programme d’exemple 15 : MM_S15_Viz_GetDoList.
   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Viz ;
   3:  !project, then get planned path ;
   4:  !and get box direction using ;
   5:  !command 210 ;
   6:  !Mech-Mind, 2023-12-25 ;
   7:  !-------------------------------- ;
   8:   ;
   9:  !set current uframe NO. to 0 ;
  10:  UFRAME_NUM=0 ;
  11:  !set current tool NO. to 1 ;
  12:  UTOOL_NUM=1 ;
  13:  !move to robot home position ;
  14:J P[1] 100% FINE    ;
  15:  !initialize communication ;
  16:  !parameters(initialization is ;
  17:  !required only once) ;
  18:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  19:  !move to image-capturing position ;
  20:L P[2] 1000mm/sec FINE    ;
  21:  !trigger Mech-Viz project ;
  22:  CALL MM_START_VIZ(2,10) ;
  23:  !get planned path ;
  24:  CALL MM_GET_PLNDT(0,3,51,52,53) ;
  25:  !check whether planned path has ;
  26:  !been got from Mech-Viz ;
  27:  !successfully ;
  28:  IF R[53]<>2100,JMP LBL[99] ;
  29:  !get gripper control signal list ;
  30:  CALL MM_GET_DL(0,0) ;
  31:  !save waypoints of the planned ;
  32:  !path to local variables one ;
  33:  !by one ;
  34:  CALL MM_GET_PLJOP(1,3,60,61,62,63,64,70) ;
  35:  CALL MM_GET_PLJOP(2,3,61,91,92,93,94,100) ;
  36:  CALL MM_GET_PLJOP(3,3,62,121,122,123,124,130) ;
  37:  !get box direction status from ;
  38:  !planned results of 2nd point ;
  39:  R[10]=R[116]    ;
  40:  !follow the planned path to pick ;
  41:  !move to approach waypoint ;
  42:  !of picking ;
  43:J PR[60] 50% FINE    ;
  44:  !move to picking waypoint ;
  45:J PR[61] 10% FINE    ;
  46:  !add object grasping logic here ;
  47:  PAUSE ;
  48:  !set gripper control signal ;
  49:  CALL MM_SET_DL(0)    ;
  50:  !move to departure waypoint ;
  51:  !of picking ;
  52:J PR[62] 50% FINE    ;
  53:  !place the box according to its ;
  54:  !direction ;
  55:  IF R[10]=0,JMP LBL[1] ;
  56:  IF R[10]<>0,JMP LBL[2] ;
  57:   ;
  58:  LBL[1:place position 1] ;
  59:  !move to intermediate waypoint ;
  60:  !of placing ;
  61:J P[3] 50% CNT100    ;
  62:  !move to approach waypoint ;
  63:  !of placing ;
  64:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  65:  !move to placing waypoint ;
  66:L P[4] 300mm/sec FINE    ;
  67:  !add object releasing logic here, ;
  68:  !such as "DO[1]=OFF" ;
  69:  PAUSE ;
  70:  !move to departure waypoint ;
  71:  !of placing ;
  72:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  73:  JMP LBL[3] ;
  74:   ;
  75:  LBL[2:place position 2] ;
  76:  !move to intermediate waypoint ;
  77:  !of placing ;
  78:J P[5] 50% CNT100    ;
  79:  !move to approach waypoint ;
  80:  !of placing ;
  81:L P[6] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  82:  !move to placing waypoint ;
  83:L P[6] 300mm/sec FINE    ;
  84:  !add object releasing logic here, ;
  85:  !such as "DO[1]=OFF" ;
  86:  PAUSE ;
  87:  !move to departure waypoint ;
  88:  !of placing ;
  89:L P[6] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  90:  JMP LBL[3] ;
  91:   ;
  92:  LBL[3] ;
  93:  !move back to robot home position ;
  94:J P[1] 100% FINE    ;
  95:  END ;
  96:   ;
  97:  LBL[99:vision error] ;
  98:  !add error handling logic here ;
  99:  !according to different ;
 100:  !error codes ;
 101:  !e.g.: status=2038 means no ;
 102:  !point cloud in ROI ;
 103:  PAUSE ;

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

sample16

Le tableau ci-dessous décrit le code en gras. Vous pouvez cliquer sur le lien hypertexte du nom de la commande pour en afficher la description détaillée.

Fonctionnalité Code et description

Obtenir l’orientation du groupe d’objets

  37:  !get box direction status from ;
  38:  !planned results of 2nd point ;
  39:  R[10]=R[116]    ;
Dans le projet Mech-Viz, les données Vision Move désignent les données de l’étape Vision Move, y compris les étiquettes des objets saisis, le nombre d’objets saisis, le nombre d’objets à saisir cette fois, l’ID de l’arête ou du coin de la pince à vide, le décalage TCP, l’orientation du groupe d’objets, l’orientation de l’objet, et les dimensions du groupe d’objets.

Le robot obtient les données Vision Move des points de passage en exécutant la commande MM_GET_PLNDT, puis enregistre les données Vision Move des points de passage stockées dans la mémoire du robot dans des registres spécifiés en exécutant la commande MM_GET_PLJOP. Dans l’exemple, les données Vision Move pour le point de prélèvement (PR[61]) sont stockées dans des registres à partir de R[100]. R[116] indique la position relative entre le groupe d’objets et la longueur de la pince à vide. La valeur est 0 ou 1, où 0 signifie parallèle et 1 verticale.

Le code ci-dessus affecte la valeur de R[116] à R[10]. Dans ce cas, R[10] indiquera l’orientation du groupe d’objets.

Adopter une stratégie de dépose basée sur l’orientation du groupe d’objets

  55:  IF R[10]=0,JMP LBL[1] ;
  56:  IF R[10]<>0,JMP LBL[2] ;
  57:   ;
  58:  LBL[1:place position 1] ;
  59:  !move to intermediate waypoint ;
  60:  !of placing ;
  61:J P[3] 50% CNT100    ;
  62:  !move to approach waypoint ;
  63:  !of placing ;
  64:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  65:  !move to placing waypoint ;
  66:L P[4] 300mm/sec FINE    ;
  67:  !add object releasing logic here, ;
  68:  !such as "DO[1]=OFF" ;
  69:  PAUSE ;
  70:  !move to departure waypoint ;
  71:  !of placing ;
  72:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  73:  JMP LBL[3] ;
  74:   ;
  75:  LBL[2:place position 2] ;
  76:  !move to intermediate waypoint ;
  77:  !of placing ;
  78:J P[5] 50% CNT100    ;
  79:  !move to approach waypoint ;
  80:  !of placing ;
  81:L P[6] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  82:  !move to placing waypoint ;
  83:L P[6] 300mm/sec FINE    ;
  84:  !add object releasing logic here, ;
  85:  !such as "DO[1]=OFF" ;
  86:  PAUSE ;
  87:  !move to departure waypoint ;
  88:  !of placing ;
  89:L P[6] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  90:  JMP LBL[3] ;
  91:   ;
  92:  LBL[3] ;
  93:  !move back to robot home position ;
  94:J P[1] 100% FINE    ;

Le code ci-dessus indique que si le groupe d’objets est parallèle au grand côté de la pince à vide (c.-à-d. R[10] vaut 0), le groupe d’objets sera déposé à P[4] ; sinon, le groupe d’objets sera déposé à P[6].

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.