Programme d’exemple 17: MM_S17_Vis_ParseLabel

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 pour obtenir le résultat de vision, analyse les étiquettes, puis adopte une méthode de manipulation basée sur l’étiquette pour effectuer la prise et la dépose.

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

Project

projet Mech-Vision (les données doivent exister dans le port labels de l’étape Sortie Étape)

Prerequisites

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

La seule différence entre le programme d’exemple MM_S17_Vis_ParseLabel et le programme d’exemple MM_S1_Vis_Basic est que MM_S17_Vis_ParseLabel peut analyser des étiquettes (le code de cette fonctionnalité est en gras). Par conséquent, seule la fonctionnalité d’analyse des étiquettes est décrite dans la partie suivante. Pour des informations sur les parties de MM_S17_Vis_ParseLabel identiques à celles de MM_S1_Vis_Basic, voir Programme d’exemple 1: MM_S1_Vis_Basic.
   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Vision ;
   3:  !project and get vision result, ;
   4:  !then parse the label info ;
   5:  !Mech-Mind, 2023-12-25 ;
   6:  !-------------------------------- ;
   7:   ;
   8:  !set current uframe NO. to 0 ;
   9:  UFRAME_NUM=0 ;
  10:  !set current tool NO. to 1 ;
  11:  UTOOL_NUM=1 ;
  12:  !move to robot home position ;
  13:J P[1] 100% FINE    ;
  14:  !initialize communication ;
  15:  !parameters(initialization is ;
  16:  !required only once) ;
  17:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  18:  !move to image-capturing position ;
  19:L P[2] 1000mm/sec FINE    ;
  20:  !trigger NO.1 Mech-Vision project ;
  21:  CALL MM_START_VIS(1,0,2,10) ;
  22:  !get vision result from NO.1 ;
  23:  !Mech-Vision project ;
  24:  CALL MM_GET_VIS(1,51,53) ;
  25:  !check whether vision result has ;
  26:  !been got from Mech-Vision ;
  27:  !successfully ;
  28:  IF R[53]<>1100,JMP LBL[99] ;
  29:  !save first vision point data to ;
  30:  !local variables ;
  31:  CALL MM_GET_POS(1,60,70,80) ;
  32:  !parse label info received from ;
  33:  !Mech-Vision, eg. "R[70]=56" ;
  34:  !will decompose into 5 and 6 ;
  35:  R[30]=R[70] DIV 10    ;
  36:  R[31]=R[70] MOD 10    ;
  37:  !add handling logic according to ;
  38:  !decomposed label value ;
  39:  IF (R[30]=5) THEN ;
  40:  !add handling logic a ;
  41:  PAUSE ;
  42:  ELSE ;
  43:  !add handling logic b ;
  44:  PAUSE ;
  45:  ENDIF ;
  46:  !move to intermediate waypoint ;
  47:  !of picking ;
  48:J P[3] 50% CNT100    ;
  49:  !move to approach waypoint ;
  50:  !of picking ;
  51:L PR[60] 1000mm/sec FINE Tool_Offset,PR[1]    ;
  52:  !move to picking waypoint ;
  53:L PR[60] 300mm/sec FINE    ;
  54:  !add object grasping logic here, ;
  55:  !such as "DO[1]=ON" ;
  56:  PAUSE ;
  57:  !move to departure waypoint ;
  58:  !of picking ;
  59:L PR[60] 1000mm/sec FINE Tool_Offset,PR[1]    ;
  60:  !move to intermediate waypoint ;
  61:  !of placing ;
  62:J P[4] 50% CNT100    ;
  63:  !move to approach waypoint ;
  64:  !of placing ;
  65:L P[5] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  66:  !move to placing waypoint ;
  67:L P[5] 300mm/sec FINE    ;
  68:  !add object releasing logic here, ;
  69:  !such as "DO[1]=OFF" ;
  70:  PAUSE ;
  71:  !move to departure waypoint ;
  72:  !of placing ;
  73:L P[5] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  74:  !move back to robot home position ;
  75:J P[1] 100% FINE    ;
  76:  END ;
  77:   ;
  78:  LBL[99:vision error] ;
  79:  !add error handling logic here ;
  80:  !according to different ;
  81:  !error codes ;
  82:  !e.g.: status=1003 means no ;
  83:  !point cloud in ROI ;
  84:  !e.g.: status=1002 means no ;
  85:  !vision results ;
  86:  PAUSE ;

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

sample17

Le tableau ci-dessous décrit la fonctionnalité d’analyse des étiquettes. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour en consulter la description détaillée.

Fonctionnalité Code et description

Analyser l’étiquette en R[30] et R[31]

  32:  !parse label info received from ;
  33:  !Mech-Vision, eg. "R[70]=56" ;
  34:  !will decompose into 5 and 6 ;
  35:  R[30]=R[70] DIV 10    ;
  36:  R[31]=R[70] MOD 10    ;

La commande MM_GET_POS stocke respectivement le TCP, l’étiquette et l’ID d’outil du point de vision dans PR[60], R[70] et R[80]. Dans cet exemple, en supposant que la valeur de R[70] est 56, “R[70] DIV 10” représente le quotient de 56 divisé par 10 (qui est 5), et “R[70] MOD 10” représente le reste de 56 divisé par 10 (qui est 6). De cette manière, 56 est décomposé en 5 et 6.

Adopter une méthode de manipulation en fonction du résultat de l’analyse de l’étiquette

  37:  !add handling logic according to ;
  38:  !decomposed label value ;
  39:  IF (R[30]=5) THEN ;
  40:  !add handling logic a ;
  41:  PAUSE ;
  42:  ELSE ;
  43:  !add handling logic b ;
  44:  PAUSE ;
  45:  ENDIF ;

Le code ci-dessus indique que si R[30] vaut 5, la logique a sera exécutée ; sinon, la logique b sera exécutée. La méthode de manipulation varie en fonction du résultat de l’analyse de l’étiquette. Vous pouvez adopter une méthode de manipulation selon vos exigences métier.

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.