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 prise. Ensuite, la caméra est démarrée par l’Étape Bifurcation par message du projet lorsque le robot effectue la dépose, afin de planifier la prochaine trajectoire et ainsi réduire le temps de cycle.

Chemin du fichier

Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier via le chemin Communication Component/Robot_Interface/YASKAWA/sample/MM_S9_Viz_RunInAdvance.

Projet

Projets Mech-Vision et Mech-Viz

Le projet Mech-Viz nécessite que l’Étape Bifurcation par message soit configurée au préalable.

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_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). Par conséquent, 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.
NOP
'--------------------------------
'FUNCTION: trigger Mech-Viz
'project then set branch and get
'planned path, trigger Mech-Viz
'project and set branch in
'advance during pick&place
'process
'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"
'set branch exit port
CALL JOB:MM_SET_BRANCH ARGF"1;1"
*LOOP
'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
'save waypoints of the planned
'path to local variables one
'by one
CALL JOB:MM_GET_JPS ARGF"1;71;61;62"
CALL JOB:MM_GET_JPS ARGF"2;72;63;64"
CALL JOB:MM_GET_JPS ARGF"3;73;65;66"
'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
'trigger Mech-Viz project but not
'to trigger camera capturing
CALL JOB:MM_START_VIZ ARGF"2;30"
'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
'set branch exit port and trigger
'camera capturing when robot
'moves out of camera’s field
'of view
CALL JOB:MM_SET_BRANCH ARGF"1;1"
'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
JUMP *LOOP
*ENDLOOP
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
END

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 (prise→déclenchement du prochain cycle de planification de trajectoire→dépose)

*LOOP
...
JUMP *LOOP

Le code ci-dessus indique que le programme boucle sur le code entre « *LOOP » et « JUMP *LOOP ».

'get planned path, 1st argument
'(1) means getting pose in JPs
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"

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

'save waypoints of the planned
'path to local variables one
'by one
CALL JOB:MM_GET_JPS ARGF"1;71;61;62"
CALL JOB:MM_GET_JPS ARGF"2;72;63;64"
CALL JOB:MM_GET_JPS ARGF"3;73;65;66"

Le code ci-dessus indique que le robot enregistre la trajectoire planifiée dans la variable spécifiée en exécutant la commande MM_GET_JPS. Cet exemple suppose que P071, P072 et P073 sont respectivement le point d’approche de la prise, le point de prise et le point de départ de la prise.

'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

Le code ci-dessus indique que le robot se déplace vers le point d’approche de la prise puis vers le point de prise, puis la commande DO (par exemple « DOUT OT#(1) ON ») est exécutée pour contrôler l’outil et effectuer la prise.

'trigger Mech-Viz project but not
'to trigger camera capturing
CALL JOB:MM_START_VIZ ARGF"2;30"
  • MM_START_VIZ: La commande qui déclenche l’exécution du projet Mech-Viz.

  • 2: Envoyer les positions articulaires représentées par la variable P030 au projet Mech-Viz.

  • 30: La variable P dont l’ID est 30. Cette variable stocke des positions articulaires personnalisées qui doivent être enseignées au préalable. Les positions articulaires seront envoyées au projet Mech-Viz comme point de départ pour le prochain cycle 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 prochain cycle.

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

Une fois le projet Mech-Viz exécuté, celui-ci attendra la commande MM_SET_BRANCH pour définir le port de sortie de l’Étape Bifurcation par message. De plus, l’Étape de Reconnaissance Visuelle (qui effectue la capture d’image) est placée sur une branche de l’Étape Bifurcation par message, de sorte que la caméra ne réalise pas de capture d’image à ce moment.
'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

Le code ci-dessus indique que le robot se déplace vers le point de départ de la prise (P073), le point intermédiaire (C00002), puis le point d’approche de la dépose (C00003).

Vous devez enseigner C00002 et C00003 à l’avance. Pour savoir comment enseigner le point, consultez Enseigner le point de départ de la calibration dans le document de calibration.

'set branch exit port and trigger
'camera capturing when robot
'moves out of camera's field
'of view
CALL JOB:MM_SET_BRANCH ARGF"1;1"

Dans l’exemple ci-dessus, le robot définit le port de sortie de l’Étape Bifurcation par message avec la commande MM_SET_BRANCH. Sur ce port de sortie, l’Étape de Reconnaissance Visuelle sera exécutée. Ensuite, Mech-Viz planifiera à l’avance la prochaine trajectoire de prise en fonction du résultat de vision.

'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

Dans l’exemple ci-dessus, le robot se déplace vers le point de dépose (C00004), effectue la dépose (par exemple « DOUT OT#(1) OFF »), puis se déplace vers le point de départ de la dépose (C00005) et enfin vers la position d’origine (C00006).

Vous devez enseigner C00004, C00005 et C00006 à l’avance. Pour savoir comment enseigner le point, consultez Enseigner le point de départ de la calibration dans le document de calibration.

*ENDLOOP
'close socket connection
CALL JOB:MM_CLOSE_SOCKET

Lors de l’écriture de la logique de gestion des erreurs dans du code en boucle, vous pouvez utiliser l’instruction « JUMP *ENDLOOP » pour sauter à la section du code où la communication est fermée.

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.