Préhension et dépose
Dans ce tutoriel, vous allez d’abord découvrir le processus de préhension et de dépose dans cet exemple, puis apprendre à le configurer.
Processus de préhension et de dépose
La logique de préhension et de dépose de cet exemple est illustrée dans la figure ci-dessous.
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 la trajectoire planifiée » nécessite que le robot utilise l’Interface Standard pour communiquer avec le système de vision, et l’Interface Standard « utilise Mech-Viz pour obtenir la trajectoire planifiée » du système de vision.
Lorsque vous utilisez ce mode de coopération, vous devez configurer le projet Mech-Vision (déjà configuré dans la section « Configuration du projet de vision ») et le projet Mech-Viz, et écrire le programme du robot. Veuillez vous référer à Configurer le processus de prise et dépose pour configurer le projet Mech-Viz et écrire le programme du robot.
Configurer le processus de préhension et de dépose
Pour réaliser le flux logique de préhension et de dépose, vous devez effectuer les configurations suivantes :
Configurer le projet Mech-Viz pour la planification de trajectoire et la simulation
Créer un projet dans Mech-Viz pour fournir au robot les fonctions suivantes :
-
Planification de trajectoire : planifie la trajectoire de préhension du robot. Notez que la trajectoire planifiée ne comprend pas la trajectoire de dépose. La trajectoire de dépose doit être ajoutée dans le programme du robot.
-
Détection des collisions : Mech-Viz effectue une détection des collisions lors de la planification de trajectoire afin de fournir au robot une trajectoire de préhension sans collision.
-
Exécuter en simulation : Mech-Viz peut visualiser le processus de préhension du robot simulé pour la mise en service.
Le processus de configuration d’un projet Mech-Viz est illustré dans la figure ci-dessous.
Le cas « Single-Case Depalletizing » dans la Bibliothèque de solutions Mech-Vision comporte un projet Mech-Viz intégré « Viz-Single-Case Depalletizing ». Avant de continuer, veuillez ouvrir le logiciel Mech-Viz, sélectionner dans la barre de menu, et choisir le dossier « Viz-Single-Case Depalletizing » dans le dossier local de la solution « Single-Case Depalletizing ».
Configurer les objets de scène
Les objets de scène sont introduits pour rapprocher la scène dans le logiciel du scénario réel, ce qui facilite la planification de trajectoire du robot. Pour des instructions détaillées, veuillez consulter Configurer les objets de scène.
En se fondant sur la garantie de la faisabilité de la préhension, il convient de restituer strictement l’environnement opérationnel réel. Les objets de scène dans cette solution sont configurés comme suit.
Configurer l’effecteur terminal
L’effecteur terminal doit être importé et configuré afin que son modèle puisse être affiché dans la zone de simulation 3D et utilisé pour la détection des collisions. Pour les opérations spécifiques, veuillez consulter Configurer l’effecteur terminal.
Associer l’objet cible et l’outil
Après avoir configuré l’effecteur terminal, vous devez associer l’objet cible à l’effecteur terminal pour la préhension dans l’éditeur d’objet cible, afin que l’effecteur terminal configuré puisse être utilisé pour la préhension. Dans cet exemple, l’objet cible à saisir est un carton, et vous n’avez pas besoin du modèle d’objet cible pour l’appariement. Par conséquent, vous devez simplement créer un objet cible sans modèle de nuage de points (objet cible par défaut) dans l’éditeur d’objet cible.
-
Cliquez sur le bouton de paramètres sous le nœud Objets cibles dans l’arborescence des ressources du projet pour ouvrir l’éditeur d’objet cible.
-
Dans la fenêtre Sélectionner le workflow de configuration, cliquez sur la carte Reconnaître sans appariement. Cette opération crée automatiquement un objet cible par défaut et ajoute un point de prise par défaut.
-
Dans la zone Configuration de la préhension de l’onglet Définir le point de prise, sélectionnez Utiliser tous les outils dans Mech-Viz pour associer l’effecteur terminal à l’objet cible.
Simplifier le modèle de collision
Pour gagner du temps lors de la création d’un modèle de collision pour l’effecteur terminal, vous ne reproduisez pas toujours chaque détail du modèle original lors de la création de coques convexes. Vous pouvez omettre certains détails en fonction des exigences spécifiques du modèle.
Directives de simplification du modèle : les trous de vis et autres caractéristiques détaillées dans la section de connexion entre l’outil de préhension et le robot peuvent être supprimés. Étant donné que le modèle de ventouse original était un parallélépipède rectangle, il n’est pas nécessaire de le simplifier ici.
Un modèle simplifié est présenté ci-dessous.
Créer un workflow
Le projet Mech-Viz intégré « Viz-Single-Case Depalletizing » du cas « Single-Case Depalletizing » a déjà créé un workflow. La description de chaque étape du workflow est la suivante.
| Étape | Description | Utilisation |
|---|---|---|
|
Définit la position de capture d’image. La position de capture d’image correspond à la position du robot 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.
|
Uniquement utilisé pour la simulation, non envoyé au robot |
|
Choisit une branche en fonction du message reçu |
En attente que le programme du robot envoie la commande pour démarrer la capture d’images |
|
Appelle le résultat de vision depuis Mech-Vision |
/ |
|
Vérifie s’il existe un résultat de vision |
/ |
|
Planifie le point d’approche pour la préhension |
Envoyé au robot |
|
Planifie le point de prise |
Envoyé au robot |
|
Planifie le point de retrait pour la préhension |
Envoyé au robot |
|
Définit le point intermédiaire |
Uniquement utilisé pour la simulation, non envoyé au robot |
Configurer la stratégie de décalage de la ventouse
Dans l’étape « Vision Move », vous pouvez configurer la stratégie de décalage de la ventouse selon les exigences de préhension sur site.
Configurer les paramètres de détection des collisions
Le logiciel Mech-Viz peut utiliser la fonction de détection des collisions pour éviter des collisions inutiles lorsque le robot se déplace. Détection de collision sur nuage de points doit être activée pour cette application. Pour des instructions détaillées, veuillez consulter Configuration de la détection de collisions.
-
Dans cette application, activez Détection de collision sur nuage de points et définissez la forme du nuage de points pour la détection des collisions sur « Cube de nuage de points ». La fonction Détection de collision sur nuage de points est principalement utilisée pour détecter la collision entre l’outil de préhension et le nuage de points. Vous pouvez activer la détection des collisions entre les parties du robot et le nuage de points selon les besoins réels afin de réduire le temps de planification.
-
Détecter les collisions sur les objets cibles est principalement utilisée pour détecter la collision entre l’objet cible saisi et l’objet de scène. Pour des scénarios avec des cartons, il n’est pas nécessaire de l’activer.
-
Solutions aux problèmes courants : veuillez activer Problème 1 et définir Extension de la plage de suppression du nuage de points en direction Z et Extension de la plage de suppression du nuage de points en directions X/Y en fonction de la situation sur site. Notez que l’extension de la plage de suppression du nuage de points en directions X/Y ne doit pas être réglée trop grande. Un réglage trop grand peut amener la ventouse à appuyer sur le carton adjacent pendant la préhension.
Exécuter en simulation
Cliquez sur le bouton Simuler dans la barre d’outils pour exécuter le projet Mech-Viz en simulation.
Objectifs de simulation et de test
Placez le carton sur la palette et utilisez le logiciel Mech-Viz pour simuler la préhension. Après chaque préhension réussie, retirez manuellement le carton qui a été saisi avec succès pendant la simulation, et faites tourner la simulation pour tester une couche de cartons. Si tous les cartons peuvent être prélevés avec succès, vous pouvez déterminer que le projet de vision a été construit sans anomalie.
Configurer les paramètres du robot et écrire le programme du robot
Le programme d’exemple d’interface standard d’ABB MM_S9_Viz_RunInAdvance peut en grande partie satisfaire les exigences de cet exemple. Vous pouvez modifier le programme d’exemple. Pour une explication détaillée du programme MM_S9_Viz_RunInAdvance, veuillez consulter Explication de l’exemple de programme.
Sur la base du programme d’exemple, veuillez effectuer les étapes suivantes côté robot :
-
Enseignez 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 à saisir et des dispositifs environnants, et ne doit pas obstruer le champ de vision de la caméra. Enregistrez la pose actuelle du robot dans la variable home.
-
Spécifiez l’adresse IP et le numéro de port de l’IPC. Changez l’adresse IP et le port de la commande MM_Init_Socket pour ceux de l’IPC.
Avant modification Après modification (exemple) MM_Init_Socket "127.0.0.1",50000,300;
MM_Init_Socket "192.168.10.111",50000,300;
-
Enseignez au robot la position de capture d’image.
Déplacez le robot vers la position de capture d’image en mode TEACH. La position de capture d’image correspond à la position du robot où la caméra capture des images. À cette position, le bras du robot ne doit pas obstruer le FOV de la caméra. Enregistrez la pose actuelle du robot dans la variable camera_capture.
-
Définissez le signal du port DO pour ouvrir la ventouse afin de saisir le carton. Notez que la commande DO doit être définie selon le numéro de port DO effectivement utilisé sur site.
Avant modification Après modification (exemple) !add object grasping logic here, such as "setdo DO_1, 1;" Stop;!add object grasping logic here, such as "setdo DO_1, 1;" setDo do0, 1; !Stop; -
Enseignez le point intermédiaire et le point de dépose.
Déplacez le robot vers le point intermédiaire et le point de dépose en mode TEACH, et enregistrez la pose du robot dans les variables drop_waypoint et drop respectivement.
-
Définissez le signal du port DO pour désactiver la ventouse pour la dépose des cartons. Notez que la commande DO doit être définie selon le numéro de port DO effectivement utilisé sur site.
Avant modification Après modification (exemple) !add object releasing logic here, such as "setdo DO_1, 0;" Stop;!add object releasing logic here, such as "setdo DO_1, 0;" setDo do0, 0; setDo do4, 1; Stop;
Tester l’effet de préhension-dépose du robot
Suivez ces étapes pour tester l’effet de préhension-dépose du robot :
-
Sur le boîtier d’enseignement, touchez .
-
Confirmez que MM_S9_Viz_RunInAdvance est sélectionné, puis cliquez sur OK.
-
Appuyez et maintenez le bouton suivant pour mettre le moteur sous tension. Dans ce cas, l’icône d’état sur le boîtier d’enseignement indique que le moteur est sous tension.
-
Cliquez sur le bouton Exécuter sur le boîtier d’enseignement.
Si le robot peut saisir et déposer des cartons avec succès, le programme du robot répond à vos exigences.
Référence : Programme d’exemple modifié
Le programme d’exemple final est le suivant :
PROC Sample_9()
!set the acceleration parameters
AccSet 50, 50;
!set the velocity parameters
VelSet 50, 1000;
!move to robot home position
MoveAbsJ home\NoEOffs,v500,fine,gripper1;
!initialize communication parameters (initialization is required only once)
MM_Init_Socket "192.168.10.111",50000,300;
!move to image-capturing position
MoveL camera_capture,v1000,fine,gripper1;
!open socket connection
MM_Open_Socket;
!trigger Mech-Viz project
MM_Start_Viz 2,snap_jps;
!set branch exit port
MM_Set_Branch 1,1;
LOOP:
!get planned path, 1st argument (1) means getting pose in JPs
MM_Get_VizData 1, pose_num, vis_pose_num, status;
!check whether planned path has been got from Mech-Viz successfully
IF status <> 2100 THEN
!add error handling logic here according to different error codes
!e.g.: status=2038 means no point cloud in ROI
Stop;
ENDIF
!save waypoints of the planned path to local variables one by one
MM_Get_JPS 1,jps{1},label{1},speed{1};
MM_Get_JPS 2,jps{2},label{2},speed{2};
MM_Get_JPS 3,jps{3},label{3},speed{3};
!follow the planned path to pick
!move to approach waypoint of picking
MoveAbsJ jps{1},v500,fine,gripper1;
!move to picking waypoint
MoveAbsJ jps{2},v300,fine,gripper1;
!add object grasping logic here, such as "setdo DO_1, 1;"
setDo do0, 1;
!Stop;
!trigger Mech-Viz project but not to trigger camera capturing
MM_Start_Viz 2,snap_jps;
!move to departure waypoint of picking
MoveAbsJ jps{3},v500,fine,gripper1;
!move to intermediate waypoint of placing
MoveJ drop_waypoint,v500,z50,gripper1;
!move to approach waypoint of placing
MoveL RelTool(drop,0,0,-100),v500,fine,gripper1;
!set branch exit port and trigger camera capturing when robot moves out of camera’s field of view
MM_Set_Branch 1,1;
!move to placing waypoint
MoveL drop,v300,fine,gripper1;
!add object releasing logic here, such as "setdo DO_1, 0;"
!Stop;
setDo do0, 0;
setDo do4, 1;
!move to departure waypoint of placing
MoveL RelTool(drop,0,0,-100),v500,fine,gripper1;
setDo do4, 0;
!move back to robot home position
MoveAbsJ home\NoEOffs,v500,fine,gripper1;
GOTO LOOP;
END_LOOP:
!close socket connection
MM_Close_Socket;
ENDPROC
ENDMODULE
Vous avez maintenant déployé une application de dépalettisation de cartons à l’unité guidée par vision 3D.