Programme d’exemple 12 : MM_S12_Viz_ForLoop

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, obtient la trajectoire planifiée, puis stocke cette trajectoire via une boucle 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_S12_Viz_ForLoop

Projet

Projets Mech-Vision et Mech-Viz

Prérequis

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

Description du programme

Cette partie décrit le programme d’exemple MM_S12_Viz_ForLoop.

Le programme d’exemple MM_S12_Viz_ForLoop est similaire au programme d’exemple MM_S2_Viz_Basic, sauf que MM_S2_Viz_Basic stocke les points de passage un par un tandis que MM_S12_Viz_ForLoop les stocke via une boucle (le code de cette fonctionnalité est en gras). Par conséquent, les fonctionnalités de MM_S12_Viz_ForLoop similaires à celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Viz ;
   3:  !project and get planned path, ;
   4:  !get poses using for-loop ;
   5:  !structure ;
   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, 1st argument ;
  24:  !(1) means getting pose in JPs ;
  25:  CALL MM_GET_VIZ(1,51,52,53) ;
  26:  !check whether planned path has ;
  27:  !been got from Mech-Viz ;
  28:  !successfully ;
  29:  IF R[53]<>2100,JMP LBL[99] ;
  30:  !save waypoints of the planned ;
  31:  !path to local variables using ;
  32:  !for-loop structure ;
  33:  FOR R[100]=1 TO R[51] ;
  34:  R[101]=59+R[100]    ;
  35:  R[102]=69+R[100]    ;
  36:  R[103]=79+R[100]    ;
  37:  CALL MM_GET_JPS(R[100],R[101],R[102],R[103]) ;
  38:  ENDFOR ;
  39:  !follow the planned path to pick, ;
  40:  !in this example waypoint 2 ;
  41:  !(PR[61]) is picking waypoint ;
  42:  !move to approach waypoint ;
  43:  !of picking ;
  44:J PR[60] 50% FINE    ;
  45:  !move to picking waypoint ;
  46:J PR[61] 10% FINE    ;
  47:  !add object grasping logic here, ;
  48:  !such as "DO[1]=ON" ;
  49:  PAUSE ;
  50:  !move to departure waypoint ;
  51:  !of picking ;
  52:J PR[62] 50% FINE    ;
  53:  !move to intermediate waypoint ;
  54:  !of placing ;
  55:J P[3] 50% CNT100    ;
  56:  !move to approach waypoint ;
  57:  !of placing ;
  58:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  59:  !move to placing waypoint ;
  60:L P[4] 300mm/sec FINE    ;
  61:  !add object releasing logic here, ;
  62:  !such as "DO[1]=OFF" ;
  63:  PAUSE ;
  64:  !move to departure waypoint ;
  65:  !of placing ;
  66:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  67:  !move back to robot home position ;
  68:J P[1] 100% FINE    ;
  69:  END ;
  70:   ;
  71:  LBL[99:vision error] ;
  72:  !add error handling logic here ;
  73:  !according to different ;
  74:  !error codes ;
  75:  !e.g.: status=2038 means no ;
  76:  !point cloud in ROI ;
  77:  PAUSE ;

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

sample12

Le tableau ci-dessous décrit la fonctionnalité de stockage de la trajectoire planifiée en points de passage via une boucle. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour consulter sa description détaillée.

Fonctionnalité Code et description

Stocker la trajectoire planifiée via une boucle

  32:  !for-loop structure ;
  33:  FOR R[100]=1 TO R[51] ;
  34:  R[101]=59+R[100]    ;
  35:  R[102]=69+R[100]    ;
  36:  R[103]=79+R[100]    ;
  37:  CALL MM_GET_JPS(R[100],R[101],R[102],R[103]) ;
  38:  ENDFOR ;
  • Ligne 33 : FOR indique le début d’un segment de boucle. R[100] est utilisé pour contrôler le nombre d’itérations (en commençant à 1, R[100] s’incrémente de 1 après chaque itération jusqu’à dépasser la valeur définie dans R[51], moment où la boucle se termine). R[51] est le registre numérique indiqué par le deuxième paramètre de la commande MM_GET_VIZ. Le registre numérique stocke le nombre de points de passage renvoyés par le système de vision. Ainsi, R[100] peut indiquer l’ID de position du point de passage courant dans la trajectoire planifiée.

  • Lignes 34 à 36 : R[101], R[102] et R[103] représentent respectivement les registres utilisés pour les positions articulaires, l’étiquette et l’ID d’outil correspondant au point de passage courant.

  • Ligne 37 : La commande MM_Get_Jps stocke les positions articulaires, l’étiquette et l’ID d’outil d’un point de passage spécifique dans les registres spécifiques. L’ensemble de la commande stocke les positions articulaires, l’étiquette et l’ID d’outil du point de passage dont l’ID est la valeur de R[100] dans les registres R[101], R[102] et R[103], respectivement.

En supposant que la trajectoire planifiée dans ce programme d’exemple contienne trois points de passage, la boucle for ci-dessus équivaut aux trois commandes suivantes dans le programme d’exemple MM_S2_Viz_Basic :

  CALL MM_GET_JPS(1,60,70,80) ;
  CALL MM_GET_JPS(2,61,71,81) ;
  CALL MM_GET_JPS(3,62,72,82) ;

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.