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 le projet Mech-Viz pour s’exécuter, obtient le chemin planifié, puis stocke le chemin planifié par bouclage pour la prise et la dépose.

Chemin de 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/YASKAWA/sample/MM_S12_Viz_ForLoop.

Projet

Projets Mech-Vision et Mech-Viz

Prérequis

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 section 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 enregistre les points de passage un par un et MM_S12_Viz_ForLoop les enregistre par bouclage (le code de cette fonctionnalité est en gras). Par conséquent, seule la fonctionnalité d’enregistrer les points de passage par bouclage est décrite dans la section suivante. Pour les parties de MM_S12_Viz_ForLoop identiques à celles de MM_S2_Viz_Basic, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
NOP
'--------------------------------
'FUNCTION: trigger Mech-Viz
'project and get planned path,get
'poses using for-loop structure
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
'move to image-capturing position
MOVJ C00001 VJ=50.00 PL=0
'open socket connection
CALL JOB:MM_OPEN_SOCKET
'trigger Mech-Viz project
CALL JOB:MM_START_VIZ ARGF"2;30"
'get planned path, 1st argument
'(1) means getting pose in JPs
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"
'check whether planned path has
'been got from Mech-Viz
'successfully
IFTHENEXP I053<>2100
	'add error handling logic here
	'according to different error
	'codes
	'e.g.: I053=2038 means no
	'point cloud in ROI
	 PAUSE
ENDIF
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
'save waypoints of planned path
'to local variables using
'for-loop structure
SET I001 1
SET I002 71
SET I003 61
SET I004 81
*CYCLE
VAL2STR S001 I001
VAL2STR S002 I002
VAL2STR S003 I003
VAL2STR S004 I004
CHR$ S005 59
CAT$ S000 S001 S005
CAT$ S000 S000 S002
CAT$ S000 S000 S005
CAT$ S000 S000 S003
CAT$ S000 S000 S005
CAT$ S000 S000 S004
CALL JOB:MM_GET_JPS ARGFS000
INC I001
INC I002
INC I003
INC I004
IFTHENEXP I001⇐I051
	 JUMP *CYCLE
ENDIF
'follow the planned path to pick
'move to approach waypoint of
'picking
MOVJ P071 VJ=50.00 PL=0
'move to picking waypoint
MOVJ P072 VJ=10.00 PL=0
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'move to departure waypoint of
'picking
MOVJ P073 VJ=50.00 PL=0
'move to intermediate waypoint of
'placing
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'placing
MOVL C00003 V=166.6 PL=0
'move to placing waypoint
MOVL C00004 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE
'move to departure waypoint of
'placing
MOVL C00005 V=166.6 PL=0
'move back to robot home position
MOVJ C00006 VJ=50.00
END

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

sample12

Le tableau ci-dessous décrit la fonctionnalité consistant à stocker le chemin planifié en points de passage par bouclage. Vous pouvez cliquer sur l’hyperlien du nom de la commande pour en afficher la description détaillée.

Fonctionnalité Code et description

Stocker le chemin planifié par bouclage

SET I001 1
SET I002 71
SET I003 61
SET I004 81

La commande SET est similaire à une instruction d’affectation dans d’autres langages de programmation. Le code ci-dessus indique que les variables I001, I002, I003 et I004 reçoivent respectivement les valeurs 1, 71, 61 et 81.

*CYCLE
...
    JUMP *CYCLE

Le code ci-dessus indique que le programme itère sur le code entre « *CYCLE » et « JUMP *CYCLE ».

VAL2STR S001 I001
VAL2STR S002 I002
VAL2STR S003 I003
VAL2STR S004 I004

La commande VAL2STR convertit des variables d’autres types de données en variables de chaîne. Par exemple, si la variable I001 a la valeur entière 1, alors « VAL2STR S001 I001 » convertit l’entier 1 en la chaîne « 1 », ce qui fait que la valeur de S001 est « 1 ». Si les variables entières I001, I002, I003 et I004 sont définies sur 1, 71, 61 et 81 respectivement, après l’exécution des commandes ci-dessus, les valeurs de S001, S002, S003 et S004 seront « 1 », « 71 », « 61 » et « 81 », respectivement.

CHR$ S005 59

L’énoncé ci-dessus indique que le caractère dont le code est 59, c’est-à-dire le point-virgule « ; », est stocké dans S005.

CAT$ S000 S001 S005
CAT$ S000 S000 S002
CAT$ S000 S000 S005
CAT$ S000 S000 S003
CAT$ S000 S000 S005
CAT$ S000 S000 S004

L’instruction CAT$ est similaire à une instruction de concaténation de chaînes dans d’autres langages de programmation. Par exemple, si S001 est la chaîne « 1 » et S005 est la chaîne « ; », alors « CAT$ S000 S001 S005 » concatène « 1 » et « ; » pour former « 1; » et l’affecte à S000, ce qui fait que la valeur de S000 est « 1; ». Après l’exécution des commandes ci-dessus, la valeur de S000 sera « 1;71;61;81 ».

CALL JOB:MM_GET_JPS ARGFS000

Si S000 est défini sur « 1;71;61;81 », l’énoncé ci-dessus équivaut à « CALL JOB:MM_GET_JPS ARGF\"1;71;61;81\" ».

INC I001
INC I002
INC I003
INC I004

La commande INC augmente de 1 la valeur d’une variable spécifiée. L’énoncé ci-dessus signifie que les valeurs des variables I001, I002, I003 et I004 sont chacune incrémentées de 1.

IFTHENEXP I001<=I051
	 JUMP *CYCLE
ENDIF

I001 représente le nombre d’itérations. I051 est la variable correspondant au deuxième paramètre de la commande MM_GET_VIZDATA. Cette variable représente le nombre de points de passage renvoyés par le système de vision.

Supposons que le chemin planifié dans cet exemple comporte 3 points de passage (point d’approche pour la prise, point de prise et point de départ après la prise). Dans ce cas, I051 est fixé à 3 et la boucle ci-dessus équivaut aux deux commandes suivantes.

CALL JOB:MM_GET_JPS ARGF"2;72;62;82"
CALL JOB:MM_GET_JPS ARGF"3;73;63;83"

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.