Prélèvement et dépose
Dans ce tutoriel, vous apprendrez d’abord le processus de prélèvement et de dépose dans cet exemple, puis comment le configurer.
Processus de prélèvement et de dépose
La logique de prélèvement et de dépose dans cet exemple est illustrée dans la figure ci-dessous.
| Dans cet exemple, le robot prélève les boulons depuis une position fixe, telle qu’une plateforme de positionnement, puis utilise les points de prise fournis par Mech-Vision comme cibles pour l’assemblage. |
Description de la solution de communication
Dans le processus ci-dessus, l’étape « le robot déclenche la caméra pour capturer des images et obtenir le point de prise » nécessite que le robot utilise l’Interface Standard pour communiquer avec le système de vision, ainsi que l’Interface Standard « utilise Mech-Vision pour obtenir le résultat de vision » du système de vision.
Lorsque vous utilisez cette méthode, vous devez écrire le programme du robot. Veuillez vous référer à Configuration du processus de prélèvement et de dépose pour écrire le programme du robot.
Configurer le processus de prélèvement et de dépose
Pour réaliser le flux logique de prélèvement et de dépose, vous devez effectuer les configurations suivantes:
Configurer les paramètres du robot et écrire le programme du robot
Le programme d’exemple de l’Interface Standard de YASKAWA, MM_S1_Vis_Basic, peut essentiellement répondre aux exigences de cet exemple. Vous pouvez modifier le programme d’exemple. Pour une explication détaillée du programme MM_S1_Vis_Basic, veuillez consulter Explication de l’exemple de programme.
Sur la base du programme d’exemple, veuillez effectuer les étapes suivantes côté robot:
-
Enseigner la position d’origine (position initiale).
Déplacez le robot vers la position initiale en mode TEACH. La position initiale doit être éloignée des objets à prélever et des dispositifs environnants, et ne doit pas obstruer le champ de vision (FOV) de la caméra. Enregistrez la pose actuelle du robot dans la variable C00000.
-
Spécifiez l’adresse IP de l’IPC. Mettez à jour l’adresse IP et le port de la commande MM_Init_Socket avec ceux de l’IPC.
Avant modification Après modification (exemple) 'initialize communication 'parameters (initialization is 'required only once) CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
'initialize communication 'parameters (initialization is 'required only once) CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
-
Définissez le signal du port DO pour ouvrir le préhenseur. Notez que la commande DO doit être définie selon le numéro de port DO réellement utilisé sur site.
'open gripper DOUT OT#(14) ON DOUT OT#(15) OFF
-
Enseigner le point de prélèvement fixe.
Déplacez le robot vers le point de prélèvement en mode TEACH. Cette position est aussi celle où la caméra capture des images. À cette position, le bras du robot ne doit pas obstruer le champ de vision (FOV) de la caméra. Enregistrez la pose actuelle du robot dans la variable C00001.
Avant modification Après modification (exemple) 'move to image-capturing position MOVJ C00001 VJ=50.00 PL=0
'move to fixed position of picking MOVJ C00001 VJ=20.00 PL=0
-
Définissez le signal du port DO pour fermer le préhenseur afin de prélever le boulon à la position fixe. Notez que la commande DO doit être définie selon le numéro de port DO réellement utilisé sur site.
'close gripper DOUT OT#(14) OFF DOUT OT#(15) ON
-
Enseigner le point intermédiaire du processus d’assemblage.
Avant modification Après modification (exemple) 'move to intermediate waypoint of 'picking MOVJ C00002 VJ=50.00
'move to intermediate waypoint of 'assembly MOVJ C00002 VJ=50.00
-
Modifier les commentaires des commandes liées à l’assemblage.
Avant modification Après modification (exemple) '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 ... 'move to departure waypoint of 'picking SFTON P070 MOVL P071 V=166.6 PL=0 SFTOF
'move to approach waypoint of 'assembly SFTON P070 MOVL P071 V=166.6 PL=0 SFTOF 'move to assembly waypoint MOVL P071 V=50.0 PL=0 ... 'move to departure waypoint of 'assembly SFTON P070 MOVL P071 V=166.6 PL=0 SFTOF
-
Définissez le signal du port DO pour ouvrir le préhenseur afin de placer le boulon dans le trou de goupille. Notez que la commande DO doit être définie selon le numéro de port DO réellement utilisé sur site.
Avant modification Après modification (exemple) 'add object grasping logic here, 'such as DOUT OT#(1) ON PAUSE
'add object releasing logic here, 'such as DOUT OT#(1) ON DOUT OT#(15) OFF DOUT OT#(14) ON PAUSE
-
Supprimez le code lié à la dépose dans le programme d’exemple.
'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
-
Enseigner la position d’origine.
Déplacez le robot vers la position d’origine en mode TEACH et enregistrez la pose du robot dans la variable C00003.
Tester l’effet d’assemblage du robot avec une exécution pas à pas
Suivez ces étapes pour tester l’effet d’assemblage du robot:
-
Tournez la clé de mode sur le boîtier d’apprentissage sur PLAY pour entrer en mode REPEAT.
-
Appuyez sur la touche SERVO ON READY sur le boîtier d’apprentissage, puis appuyez sur le bouton bleu Exécuter.
-
Le robot exécutera automatiquement le programme pour prélever et déposer un objet cible.
Veuillez prêter une attention particulière à la trajectoire de mouvement du robot. En cas d’urgence, appuyez sur la touche d’arrêt d’urgence.
Si le robot peut prélever et déposer des objets cibles avec succès, le programme du robot répond aux exigences.
Insérer l’instruction de boucle pour le cycle d’assemblage
Après avoir vérifié que le robot peut assembler avec succès une fois, vous pouvez insérer une instruction de boucle dans le programme pour répéter l’assemblage du robot.
Ajoutez l’instruction de boucle suivante:
LOOP 'move to fixed position of picking MOVJ C00001 VJ=20.00 PL=0 ... MOVJ C00003 VJ=50.00 END LOOP
Référence : programme d’exemple modifié
Le programme d’exemple final est le suivant:
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.10.40;50000;1"
'open gripper
DOUT OT#(14) ON
DOUT OT#(15) OFF
LOOP
'move to fixed position of picking
MOVJ C00001 VJ=20.00 PL=0
'close gripper
DOUT OT#(14) OFF
DOUT OT#(15) ON
'open socket connection
CALL JOB:MM_OPEN_SOCKET
MOVL P110 V=25.0
'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
'assembly
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'assembly
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move to assembly waypoint
MOVL P071 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) ON
DOUT OT#(15) OFF
DOUT OT#(14) ON
PAUSE
'move to departure waypoint of
'assembly
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move back to robot home position
MOVJ C00003 VJ=50.00’move to fixed position of picking
MOVJ C00001 VJ=20.00 PL=0
'close gripper
DOUT OT#(14) OFF
DOUT OT#(15) ON
'open socket connection
CALL JOB:MM_OPEN_SOCKET
MOVL P110 V=25.0
'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
'assembly
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'assembly
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move to assembly waypoint
MOVL P071 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) ON
DOUT OT#(15) OFF
DOUT OT#(14) ON
PAUSE
'move to departure waypoint of
'assembly
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'move back to robot home position
MOVJ C00003 VJ=50.00
END LOOP
END
Vous avez maintenant déployé une application de positionnement et d’assemblage guidée par vision 3D.