Préhension et dépose

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.

Dans ce tutoriel, vous apprendrez d’abord le processus de prise et dépose de cet exemple, puis comment le configurer.

Tutoriel vidéo: Préhension

Processus de prise et dépose

La logique de prise et dépose dans cet exemple est illustrée dans la figure ci‑dessous.

picking workflow

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 prise et dépose

Pour réaliser le flux logique de prise et dépose, vous devez effectuer les configurations suivantes :

picking workflow config

Configurer le projet Mech-Viz pour la planification de trajectoire et la simulation

Créer un projet dans Mech-Viz pour fournir les fonctions suivantes au robot :

  • Planification de trajectoire : planifie la trajectoire de préhension du robot. Notez que la trajectoire planifiée ne contient pas la trajectoire de dépose. La trajectoire de dépose doit être ajoutée dans le programme du robot.

  • Détection de collision : Mech-Viz effectue la détection de collision pendant la planification pour fournir au robot une trajectoire de préhension sans collision.

  • Exécution en simulation : Mech-Viz peut visualiser le processus de préhension du robot simulé pour la mise au point.

Le processus de configuration d’un projet Mech-Viz est illustré ci‑dessous.

viz project config workflow

Le cas « Loading Randomly Stacked Target Objects » dans la bibliothèque de solutions de Mech-Vision intègre le projet Mech-Viz « Viz_Target_Objects_Picking ». Avant de continuer, veuillez ouvrir le logiciel Mech-Viz, sélectionner File  Ouvrir dans la barre de menus, et choisir le dossier « Viz_Target_Objects_Picking » dans le dossier local de la solution « Loading Randomly Stacked Target Objects ».

open viz project

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 la trajectoire du robot. Pour des instructions détaillées, veuillez consulter Configurer les objets de scène.

Notez que le nom de l’objet de scène ajouté « bin » doit être cohérent avec la valeur du paramètre Chaînes défini dans la Procédure Localisation standard du bac du projet Mech-Vision.

Sur la base de la garantie de la faisabilité de la préhension, une restitution stricte de l’environnement opérationnel réel doit être effectuée. Les objets de scène dans cette solution sont définis comme suit.

config scene objects

Configurer l’outil de bout

L’outil de bout 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 de collision. Pour les opérations spécifiques, veuillez consulter Configurer l’outil de bout.

Lors de la configuration de l’outil, veillez à ce que le TCP soit défini sur le véritable point central de l’outil et que le TCP défini soit cohérent avec le TCP côté robot.

Associer l’objet cible et l’outil et définir la tolérance de préhension

Après avoir configuré l’outil de bout, vous devez associer l’objet cible à l’outil de bout pour la préhension dans l’éditeur d’objet cible, afin que l’outil de bout configuré puisse être utilisé pour la préhension.

Dans cet exemple, l’objet cible est un boulon, et la pince saisira la partie filetée lors de la préhension. Dans les scénarios de préhension réels, la pince est autorisée à se translater le long de l’axe X du point de prise. Par conséquent, vous pouvez configurer la tolérance de préhension dans l’éditeur d’objet cible pour améliorer davantage le taux de réussite de la préhension.

  1. Double-cliquez sur un objet cible existant sous le nœud Objets cibles dans l’arborescence des ressources du projet pour ouvrir l’éditeur d’objet cible.

  2. 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’outil de bout à l’objet cible.

    bind object and tool
  3. Dans la zone de visualisation, vérifiez si la position relative entre l’outil et le point de prise de l’objet cible est correcte. Si la position relative est incorrecte, veuillez ajuster de nouveau le TCP de l’outil défini dans Mech-Viz et celui de l’outil réel du robot jusqu’à ce que la position relative soit correcte.

  4. Dans la zone Paramètres de configuration de l’outil, définissez la tolérance de translation le long de l’axe X.

Simplifier le modèle de collision

Pour gagner du temps lors de la création du modèle de collision de l’outil de bout, il n’est pas toujours nécessaire de reproduire chaque détail du modèle original lors de la création des coques convexes. Vous pouvez omettre certains détails en fonction des exigences spécifiques du modèle.

Directive de simplification : la partie doigt de la pince doit être aussi détaillée que possible afin que sa forme soit hautement reproductible et garantisse la précision de la détection de collision. Pour les structures mécaniques éloignées de la partie doigt, vous pouvez remplacer le design complexe par une boîte englobante cuboïde pour améliorer l’efficacité.

Un modèle simplifié est présenté ci‑dessous.

simplify tool model

Créer un flux de travail

Le projet Mech-Viz « Viz_Target_Objects_Picking » intégré dans le cas « Loading Randomly Stacked Target Objects » a déjà créé un flux de travail. La description de chaque étape du flux de travail est la suivante.

Étape Description Utilisation
define home

Définir la position de capture d’image. La position de capture d’image désigne la position du robot où la caméra capture les images. À cette position, le bras du robot ne doit pas obstruer le champ de vision (FOV) de la caméra.
Déplacez manuellement le robot vers la position de capture d’image, et enregistrez la pose actuelle du robot dans l’étape.

Ce point est uniquement utilisé pour la simulation et ne sera pas envoyé au robot.

visual recognition

Appelle le résultat de vision depuis Mech-Vision. Veillez à appeler le bon projet Mech-Vision.

/

check vision result

Vérifie s’il existe un résultat de vision.

/

smart path in bin 1

Planifie le point d’entrée dans le bac et le point d’approche pour la préhension.

Deux points sont envoyés au robot comme partie de la trajectoire planifiée.

vision move

Planifie le point de prise.

Le point de prise est envoyé au robot comme partie de la trajectoire planifiée.

smart path in bin 2

Planifie le point de retrait pour la préhension et le point de sortie du bac.

Deux points sont envoyés au robot comme partie de la trajectoire planifiée.

define immediate point

Définit le point intermédiaire. Déplacez manuellement le robot vers le point intermédiaire, et enregistrez la pose actuelle du robot dans l’étape.

Ce point est uniquement utilisé pour la simulation et ne sera pas envoyé au robot.

Lors de la rédaction ultérieure du programme du robot, la pose de capture d’image et la pose du point intermédiaire doivent être identiques à celles utilisées ici pour la simulation.

Configurer les paramètres de détection de collision

Le logiciel Mech-Viz peut utiliser la fonction de détection de collision pour éviter des collisions inutiles lorsque le robot se déplace. Dans cette application, le robot doit prélever des objets cibles empilés aléatoirement. Par conséquent, des collisions entre l’outil de bout et le nuage de points, entre l’outil et d’autres objets cibles dans le bac, et entre l’objet cible tenu et des objets de scène tels que le bac peuvent survenir facilement.

  • Étant donné que le nombre et les positions des objets cibles dans le bac varient, vous devez obtenir le nuage de points de l’objet cible depuis le projet de vision pour la détection de collision. Par conséquent, vous devez activer Détection de collision du nuage de points et sélectionner « Point cloud cube » comme forme de nuage de points pour la détection de collision. De plus, veuillez définir le paramètre Seuil de détection de collision selon la situation réelle.

  • Dans cet exemple, l’étape « Smart Path in Bin » est utilisée. Vous devez activer Détecter les collisions sur les objets cibles pour détecter les collisions entre l’outil et les objets cibles, et entre l’objet cible tenu et les objets de scène.

Pour des instructions détaillées, veuillez consulter Configuration de la détection de collision.

collision detection

Exécuter en simulation

Cliquez sur le bouton Simuler dans la barre d’outils pour exécuter le projet Mech-Viz en simulation.

simulation

Objectifs de simulation et de test

Placez un objet cible aléatoirement dans le bac, puis utilisez le logiciel Mech-Viz pour simuler la préhension. Après chaque préhension réussie, l’objet cible doit être réorganisé, et 10 cycles de préhension sont simulés. Si la préhension simulée peut se dérouler avec succès sur 10 boucles, vous pouvez considérer que le projet de vision a été construit sans exception.

simulation

Configurer les paramètres du robot et écrire le programme du robot

Le programme d’exemple d’Interface Standard de FANUC MM_S2_Viz_Basic peut répondre en grande partie aux exigences de cet exemple. Vous pouvez modifier le programme d’exemple. Pour une explication détaillée du programme MM_S2_Viz_Basic, veuillez consulter Explication de l’exemple de programme.

Sur la base de l’exemple de programme, veuillez effectuer les étapes suivantes côté robot :

  1. Définissez le repère de l’outil. Vérifiez que le TCP sur la manette d’apprentissage du robot correspond au TCP dans Mech-Viz. Définissez le numéro du repère d’outil actuellement sélectionné sur celui correspondant au repère de l’outil réel utilisé.

    Avant modification Après modification
      10:  UTOOL_NUM=1 ;
      10:  UTOOL_NUM=#;
    Veuillez remplacer « # » par l’ID réel de l’outil.
  2. Apprendre la position de départ (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 de la caméra. Enregistrez la pose actuelle du robot dans la variable P[1].

  3. Spécifiez l’adresse IP de l’IPC. Modifiez l’adresse IP dans la commande CALL MM_INIT_SKT pour qu’elle corresponde à l’adresse IP réelle de l’IPC.

    Avant modification Après modification (exemple)
      CALL MM_INIT_SKT('8','192.168.1.20',50000,1) ;
      16:  CALL MM_INIT_SKT('8','192.168.110.207',50000,5) ;
  4. Apprendre la position de capture d’image.

    Déplacez le robot vers la position de capture d’image en mode TEACH. Enregistrez la pose actuelle du robot dans la variable P[2].

  5. Ajoutez les commandes utilisées pour stocker tous les points de passage retournés dans des variables locales.

    La trajectoire planifiée renvoyée par Mech-Viz contient cinq points de passage : point d’entrée dans le bac, point d’approche, point de prise, point de retrait et point de sortie du bac. Le programme d’exemple ne stocke que trois points de passage ; vous devez donc ajouter les commandes pour stocker la trajectoire planifiée complète.
    Avant modification Après modification
      31:  CALL MM_GET_JPS(1,60,70,80) ;
      32:  CALL MM_GET_JPS(2,61,71,81) ;
      33:  CALL MM_GET_JPS(3,62,72,82) ;
      32:  CALL MM_GET_JPS(1,60,70,80) ;
      33:  CALL MM_GET_JPS(2,61,71,81) ;
      34:  CALL MM_GET_JPS(3,62,72,82) ;
      35:  CALL MM_GET_JPS(4,63,73,83) ;
      36:  CALL MM_GET_JPS(5,64,74,84) ;
  6. Ajustez les ID des registres de position du point d’entrée dans le bac et du point d’approche pour la préhension, ainsi que du point de prise.

    PR[60] et PR[61] stockent respectivement le point d’entrée dans le bac et le point d’approche pour la préhension, tandis que PR[62] stocke le point de prise.
    Avant modification Après modification
      35:  !move to approach waypoint ;
      36:  !of picking ;
      37:J PR[60] 50% FINE    ;
      38:  !move to picking waypoint ;
      39:J PR[61] 10% FINE    ;
      38:  !move to approach waypoint ;
      39:  !of picking ;
      40:J PR[60] 50% FINE    ;
      41:J PR[61] 50% FINE    ;
      42:  !move to picking waypoint ;
      43:J PR[62] 10% FINE    ;
  7. Définissez le signal pour le port DO afin de fermer la pince et saisir l’objet cible. Notez que la commande DO doit être définie en fonction du numéro de port DO réellement utilisé sur site.

    Avant modification Après modification (exemple)
      40:  !add object grasping logic here, ;
      41:  !such as "DO[1]=ON" ;
      42:  PAUSE ;
      44:  !add object grasping logic here, ;
      45:  !such as "DO[1]=ON" ;
      46:  PAUSE ;
      47:  DO[1:OFF]=ON ;
  8. Ajustez les ID des registres de position du point de retrait pour la préhension et du point de sortie du bac.

    PR[63] et PR[64] sont le point de retrait pour la préhension et le point de sortie du bac.
    Avant modification Après modification
      43:  !move to departure waypoint ;
      44:  !of picking ;
      45:J PR[62] 50% FINE
      48:  !move to departure waypoint ;
      49:  !of picking ;
      50:J PR[63] 50% FINE    ;
      51:J PR[64] 50% FINE    ;
  9. Apprendre 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 les poses du robot dans P[3] et P[4] respectivement.

  10. Définissez le signal du port DO pour ouvrir la pince et déposer l’objet cible. Notez que la commande DO doit être définie en fonction du numéro de port DO réellement utilisé sur site.

    Avant modification Après modification
      54:  !add object releasing logic here, ;
      55:  !such as "DO[1]=OFF" ;
      56:  PAUSE ;
      60:  !add object releasing logic here, ;
      61:  !such as "DO[1]=OFF" ;
      62:  PAUSE ;
      63:  DO[1:OFF]=OFF ;

Tester l’effet de prise et dépose du robot avec une exécution pas à pas

Suivez ces étapes pour tester l’effet de prise et dépose du robot :

  1. Mettez l’interrupteur sur la manette d’apprentissage sur ON et l’interrupteur sur le contrôleur sur T1.

  2. Maintenez enfoncé l’un des commutateurs d’autorisation au dos de la manette d’apprentissage.

    enable robot
  3. Maintenez la touche SHIFT enfoncée tout en appuyant sur la touche FWD sur la manette d’apprentissage pour exécuter manuellement le programme d’exemple modifié.

  4. Le robot exécutera automatiquement le programme de prise et dépose pour saisir et déposer un objet cible.

Si le robot peut saisir et déposer des objets cibles avec succès, le programme du robot répond aux exigences.

Insérer l’instruction de boucle pour un cycle de prise et dépose

Après avoir vérifié que le robot peut saisir et déposer avec succès une fois, vous pouvez insérer une instruction de boucle dans le programme pour répéter le processus de prise et dépose.

Ajoutez l’instruction de boucle suivante :

17:  LBL[1] ;
...
69:  JMP LBL[1] ;

Référence : exemple de programme modifié

L’exemple de programme final est le suivant :

   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Viz ;
   3:  !project and get planned path ;
   4:  !Mech-Mind, 2023-12-25 ;
   5:  !-------------------------------- ;
   6:   ;
   7:  !set current uframe NO. to 0 ;
   8:  UFRAME_NUM=0 ;
   9:  !set current tool NO. to 1 ;
  10:  UTOOL_NUM=1 ;
  11:  !move to robot home position ;
  12:J P[1] 100% FINE    ;
  13:  !initialize communication ;
  14:  !parameters(initialization is ;
  15:  !required only once) ;
  16:  CALL MM_INIT_SKT('8','192.168.110.207',50000,5) ;
  17:  LBL[1] ;
  18:  !move to image-capturing position ;
  19:L P[2] 1000mm/sec FINE    ;
  20:  !trigger Mech-Viz project ;
  21:  CALL MM_START_VIZ(2,10) ;
  22:  !get planned path, 1st argument ;
  23:  !(1) means getting pose in JPs ;
  24:  CALL MM_GET_VIZ(1,51,52,53) ;
  25:  !check whether planned path has ;
  26:  !been got from Mech-viz ;
  27:  !successfully ;
  28:  IF R[53]<>2100,JMP LBL[99] ;
  29:  !save waypoints of the planned ;
  30:  !path to local variables one ;
  31:  !by one ;
  32:  CALL MM_GET_JPS(1,60,70,80) ;
  33:  CALL MM_GET_JPS(2,61,71,81) ;
  34:  CALL MM_GET_JPS(3,62,72,82) ;
  35:  CALL MM_GET_JPS(4,63,73,83) ;
  36:  CALL MM_GET_JPS(5,64,74,84) ;
  37:  !follow the planned path to pick ;
  38:  !move to approach waypoint ;
  39:  !of picking ;
  40:J PR[60] 50% FINE    ;
  41:J PR[61] 50% FINE    ;
  42:  !move to picking waypoint ;
  43:J PR[62] 10% FINE    ;
  44:  !add object grasping logic here, ;
  45:  !such as "DO[1]=ON" ;
  46:  PAUSE ;
  47:  DO[1:OFF]=ON ;
  48:  !move to departure waypoint ;
  49:  !of picking ;
  50:J PR[63] 50% FINE    ;
  51:J PR[64] 50% FINE    ;
  52:  !move to intermediate waypoint ;
  53:  !of placing ;
  54:J P[3] 50% CNT100    ;
  55:  !move to approach waypoint ;
  56:  !of placing ;
  57:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  58:  !move to placing waypoint ;
  59:L P[4] 300mm/sec FINE    ;
  60:  !add object releasing logic here, ;
  61:  !such as "DO[1]=OFF" ;
  62:  PAUSE ;
  63:  DO[1:OFF]=OFF ;
  64:  !move to departure waypoint ;
  65:  !of placing ;
  66:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  67:  !move back to robot home position ;
  68:J P[1] 100% FINE    ;
  69:  JMP LBL[1] ;
  70:  END ;
  71:   ;
  72:  LBL[99:vision error] ;
  73:  !add error handling logic here ;
  74:  !according to different ;
  75:  !error codes ;
  76:  !e.g.: status=2038 means no ;
  77:  !point cloud in ROI ;
  78:  PAUSE ;

Vous avez maintenant déployé une application de préhension aléatoire en bac guidée par vision 3D.

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.