Programme d’exemple 1: MM_S1_Vis_Basic

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-Vision, puis obtient le résultat de vision pour saisir et déposer l’objet.

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/YASKAWA/sample/MM_S1_Vis_Basic.

Project

Projet Mech-Vision

Prerequisites

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 section décrit le programme d’exemple MM_S1_Vis_Basic.

NOP
'--------------------------------
'FUNCTION: trigger Mech-Vision
'project and get vision result
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P070 P070
SUB P071 P071
'set 100mm to z of P070
SETE P070 (3) 100000
'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 NO.1 Mech-Vision project
CALL JOB:MM_START_VIS ARGF"1;0;2;30"
'get vision result from NO.1
'Mech-Vision project
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
'check whether vision result has
'been got from Mech-Vision
'successfully
IFTHENEXP I052<>1100
	'add error handling logic here
	'according to different error
	'codes
	'e.g.: I052=1003 means no point
	'cloud in ROI
	'e.g.: I052=1002 means no
	'vision result
	 PAUSE
ENDIF
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
'save first vision point data to
'local variables
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
'move to intermediate waypoint of
'picking
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move to picking waypoint
MOVL P071 V=50.0 PL=0
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'move to departure waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move to intermediate waypoint of
'placing
MOVJ C00003 VJ=50.00
'move to approach waypoint of
'placing
MOVL C00004 V=166.6 PL=0
'move to placing waypoint
MOVL C00005 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE
'move to departure waypoint of
'placing
MOVL C00006 V=166.6 PL=0
'move back to robot home position
MOVJ C00007 VJ=50.00
END

Le flux de travail correspondant au code de programme ci-dessus est présenté dans la figure ci-dessous.

sample1

Le tableau ci-dessous explique le programme ci-dessus. Vous pouvez cliquer sur l’hyperlien du nom de commande pour afficher sa description détaillée.

Feature Code and description

Initialiser les variables

'clear I50 to I69
CLEAR I050 20
  • CLEAR: La commande pour effacer des données.

  • I050: Spécifie d’effacer les données des variables I à partir de la variable I 50.

  • 20: Spécifie d’effacer les données de 20 variables.

L’instruction entière indique d’effacer les données des variables entières I050 à I069 (un total de 20 variables) en les mettant à 0.

'initialize p variables
SUB P070 P070
SUB P071 P071
  • SUB: La commande de soustraction.

  • Premier P070: Indique le diminuende comme la variable de position P070 et enregistre le résultat de l’opération de soustraction dans P070.

  • Second P070: Indique le soustrait comme la variable de position P070.

Les deux instructions ci-dessus indiquent que les variables de position P070 et P071 sont mises à 0.

'set 100mm to z of P070
SETE P070 (3) 100000
  • SETE: La commande pour définir les données d’une variable.

  • P070: Spécifie que la variable dont vous souhaitez définir les données est P070.

  • 3: Indique de définir la donnée du troisième paramètre de la variable de position. Dans ce cas, définir l’axe Z de P070.

  • 100000: La donnée à définir comme valeur de la variable.

L’instruction ci-dessus indique de définir l’axe Z de P070 à 100 000 µm (équivalents à 100 mm).

Aller à la position d’origine

'move to robot home position
MOVJ C00000 VJ=50.00
  • MOVJ: La commande de mouvement basée sur la position des articulations.

  • C00000: L’ID de la position enseignée au robot.

    • Vous devez enseigner la position d’origine (C00000) à l’avance. Pour des instructions détaillées, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

    • Une fois C00000 enseigné, les positions d’enseignement des axes du robot seront écrites sans condition dans C00000. La position ne peut pas être modifiée.

    • C00000 n’apparaîtra pas sur l’interface du pupitre d’enseignement.

  • VJ=50.00: La vitesse articulaire. La vitesse articulaire est exprimée en proportion de la vitesse maximale.

L’instruction entière indique que le robot se déplace vers la position d’origine enseignée en utilisant un mouvement en position articulaire.

Initialiser les paramètres de communication

'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
  • CALL: Appelle une commande ou un programme spécifique.

  • JOB: Spécifie la commande ou le programme à appeler.

  • MM_INIT_SOCKET: La commande pour initialiser la communication.

  • ARGF: Sur l’interface du pupitre d’enseignement, ARGF s’affiche comme une paire de parenthèses.

  • 192.168.170.22: L’adresse IP de l’IPC.

  • 50000: Le numéro de port de l’IPC.

  • 1: Spécifie le délai de communication de 1 minute.

Le robot envoie la commande MM_INIT_SOCKET pour définir l’adresse IP, le numéro de port et le délai du périphérique de communication (l’IPC) à 192.168.170.22, 50000 et 1 minute.

Veuillez modifier l’adresse IP et le numéro de port de l’IPC en fonction de la situation réelle. L’adresse IP et le numéro de port doivent être cohérents avec ceux définis dans le système de vision.

Aller à la position de capture d’image

'move to image-capturing position
MOVJ C00001 VJ=50.00 PL=0
  • C00001: L’ID de la position enseignée au robot. Vous devez enseigner à l’avance la position de capture d’image (C00001). Pour des instructions détaillées, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

  • PL=0: Définit le niveau de position à 0. Le niveau de position indique la proximité du robot par rapport à la position enseignée, avec une plage de 0 à 8. Une valeur plus petite indique que le robot est plus proche de la position.

L’instruction entière indique que le robot se déplace vers la position de capture d’image enseignée en utilisant un mouvement en position articulaire.

Établir la communication

'open socket connection
CALL JOB:MM_OPEN_SOCKET

La communication TCP entre le robot et le système de vision est établie au moyen de la commande MM_OPEN_SOCKET.

Déclencher l’exécution du projet Mech-Vision

'trigger NO.1 Mech-Vision project
CALL JOB:MM_START_VIS ARGF"1;0;2;30"
  • MM_START_VIS: La commande pour déclencher l’exécution du projet Mech-Vision.

  • 1: L’ID du projet Mech-Vision.

  • 0: Le projet Mech-Vision doit retourner tous les points de vision.

  • 2: Indique que la pose de la bride du robot doit être transmise au projet Mech-Vision.

  • 30: La variable P dont l’ID est 30. La variable stocke des données personnalisées de position articulaire. Dans ce programme d’exemple, ces données de position articulaire n’ont pas d’utilité pratique.

L’instruction entière indique que le robot déclenche le système de vision pour exécuter le projet Mech-Vision avec l’ID 1 et attend que le projet Mech-Vision retourne tous les points de vision.

Obtenir le résultat de vision

'get vision result from NO.1
'Mech-Vision project
CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
  • MM_GET_VISDATA: La commande pour obtenir le résultat de vision.

  • 1: L’ID du projet Mech-Vision.

  • 51: La variable I dont l’ID est 51. La variable stocke le nombre de points de vision obtenus.

  • 52: La variable I dont l’ID est 52. La variable stocke le code d’état d’exécution de la commande.

L’instruction entière indique que le robot obtient le résultat de vision du projet Mech-Vision avec l’ID 1.

Le résultat de vision renvoyé est enregistré dans la mémoire du robot et ne peut pas être récupéré directement. Pour y accéder, vous devez stocker le résultat de vision à une étape ultérieure.
'check whether vision result has
'been got from Mech-Vision
'successfully
IFTHENEXP I052<>1100
	'add error handling logic here
	'according to different error
	'codes
	'e.g.: I052=1003 means no point
	'cloud in ROI
	'e.g.: I052=1002 means no
	'vision result
	 PAUSE
ENDIF
  • IFTHENEXP A …​ ENDIF: Lorsque la condition A est satisfaite, le programme exécute le code entre IFTHENEXP et ENDIF.

  • <>: Différent de.

L’instruction ci-dessus indique que lorsque le code d’état dans I052 est 1100, le robot a obtenu avec succès tous les résultats de vision ; sinon, une exception s’est produite dans le système de vision et le programme exécute le code entre IFTHENEXP et ENDIF. Vous pouvez effectuer l’opération correspondante en fonction du code d’erreur spécifique. Dans ce programme d’exemple, tous les codes d’erreur sont traités de la même manière, en mettant en pause l’exécution du programme via la commande PAUSE.

Fermer la communication

'close socket connection
CALL JOB:MM_CLOSE_SOCKET

La communication TCP entre le robot et le système de vision est fermée au moyen de la commande MM_CLOSE_SOCKET.

Stocker le résultat de vision

'save first vision point data to
'local variables
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
  • MM_GET_POSE: La commande pour stocker le résultat de vision.

  • 1: Le premier point de vision est stocké.

  • 71: La variable P dont l’ID est 71. La variable stocke le TCP du premier point de vision, c’est-à-dire le TCP du point de passage de prise.

  • 61: La variable P dont l’ID est 61. La variable qui stocke l’étiquette correspondante au premier point de vision.

  • 62: La variable I dont l’ID est 62. La variable qui stocke l’ID d’outil correspondant au premier point de vision.

L’instruction entière stocke le TCP, l’étiquette et l’ID d’outil du premier point de vision dans les variables spécifiées.

Aller au point de passage intermédiaire

'move to intermediate waypoint of
'picking
MOVJ C00002 VJ=50.00

L’instruction entière déplace le robot en positions articulaires vers un certain point de passage intermédiaire entre la position de capture d’image et le point de passage d’approche de prise.

  • L’ajout de points de passage intermédiaires peut garantir un mouvement fluide du robot et éviter des collisions inutiles. Vous pouvez ajouter plusieurs points de passage intermédiaires en fonction de la situation réelle.

  • Vous devez enseigner le point de passage intermédiaire (C00002) à l’avance. Pour savoir comment enseigner le point de passage, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Aller au point de passage d’approche de prise

'move to approach waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
  • SFTON P070: Démarre un mouvement de translation basé sur l’offset spécifié (P070, avec une donnée d’axe Z de 100 mm).

  • MOVL P071 V=166.6 PL=0: Spécifie un mouvement de translation où le robot se déplace vers une position offset à partir de P071 de P070, avec une vitesse TCP de 166,6 mm/s et un niveau de position de 0.

  • SFTOF: Termine le mouvement de translation.

L’instruction entière indique que le robot se déplace linéairement à 100 mm au-dessus du point de passage de prise (P071).

L’ajout de points de passage d’approche de prise peut empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène pendant le mouvement. Vous pouvez ajuster l’offset de l’axe Z (par exemple "SETE P070 (3) 100000") en fonction de la scène réelle pour garantir que le processus d’approche est exempt de collisions.

Aller au point de passage de prise

'move to picking waypoint
MOVL P071 V=50.0 PL=0

Le robot se déplace du point de passage d’approche de prise au point de passage de prise en mouvement linéaire.

Définir des commandes DO pour effectuer la prise

'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE

Après que le robot s’est déplacé vers le point de passage de prise, vous pouvez définir une commande DO (telle que "DOUT OT#(1) ON") pour contrôler l’utilisation de l’outil par le robot afin d’effectuer la prise. Veuillez définir les commandes DO en fonction de la situation réelle.

PAUSE indique de mettre en pause l’exécution du programme. Si vous avez ajouté une instruction pour définir une commande DO, vous pouvez supprimer l’instruction PAUSE ici.

Aller au point de passage de départ de prise

'move to departure waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF

Le robot se déplace à 100 mm au-dessus du point de passage de prise et atteint le point de passage de départ de prise.

L’ajout de points de passage de départ de prise peut empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène pendant le mouvement. Vous pouvez ajuster l’offset de l’axe Z (par exemple "SETE P070 (3) 100000") en fonction de la scène réelle pour garantir que le processus de départ est exempt de collisions.

Aller au point de passage intermédiaire

'move to intermediate waypoint of
'placing
MOVJ C00003 VJ=50.00

Le robot se déplace vers un point de passage intermédiaire entre le point de passage de départ de prise et le point de passage d’approche de dépose.

  • L’ajout de points de passage intermédiaires peut garantir un mouvement fluide du robot et éviter des collisions inutiles. Vous pouvez ajouter plusieurs points de passage intermédiaires en fonction de la situation réelle.

  • Vous devez enseigner le point de passage intermédiaire (C00003) à l’avance. Pour savoir comment enseigner le point de passage, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Amener le robot au point de passage d’approche de dépose

'move to approach waypoint of
'placing
MOVL C00004 V=166.6 PL=0

Le robot se déplace du point de passage intermédiaire au point de passage d’approche de dépose.

  • L’ajout de points de passage d’approche de dépose peut empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène pendant le mouvement.

  • Vous devez enseigner le point de passage d’approche de dépose (C00004) à l’avance. Pour savoir comment enseigner le point de passage, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Aller au point de passage de dépose

'move to placing waypoint
MOVL C00005 V=50.0 PL=0

Le robot se déplace du point de passage d’approche de dépose au point de passage de dépose.

  • Le point de passage de dépose doit être situé à une distance de sécurité des autres postes, du personnel et des équipements, et ne doit pas dépasser la portée maximale du robot.

  • Vous devez enseigner le point de passage de dépose (C00005) à l’avance. Pour savoir comment enseigner le point de passage, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Définir des commandes DO pour effectuer la dépose

'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE

Après que le robot s’est déplacé vers le point de passage de dépose, vous pouvez définir une commande DO (telle que "DOUT OT#(1) OFF") pour contrôler l’utilisation de l’outil par le robot afin d’effectuer la dépose. Veuillez définir les commandes DO en fonction de la situation réelle.

PAUSE indique de mettre en pause l’exécution du programme. Si vous avez ajouté une instruction pour définir une commande DO, vous pouvez supprimer l’instruction PAUSE ici.

Amener le robot au point de passage de départ de dépose

'move to departure waypoint of
'placing
MOVL C00006 V=166.6 PL=0

Le robot se déplace du point de passage de dépose vers le point de passage de départ de dépose.

  • L’ajout de points de passage de départ de dépose peut empêcher le robot d’entrer en collision avec des objets (tels que des bacs) dans la scène pendant le mouvement.

  • Vous devez enseigner le point de passage de départ de dépose (C00006) à l’avance. Pour savoir comment enseigner le point de passage, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

Aller à la position d’origine

'move back to robot home position
MOVJ C00007 VJ=50.00

Le robot se déplace du point de passage de départ de dépose vers la position d’origine à nouveau.

Vous devez enseigner la position d’origine (C00007) à l’avance. Pour des instructions détaillées, voir Enseigner le point de départ de l’étalonnage dans le document d’étalonnage.

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.