Caméras multiples

Cette section explique comment améliorer la précision du prélèvement à l’aide de plusieurs caméras.

Exemple de programme 7.1

Type d’exemple :
Utilisation de plusieurs caméras fixes orientées vers le bas pour améliorer la précision de la zone de prélèvement

Configuration

  • Nombre de robots : 1
  • Nombre de distributeurs : 1
  • Nombre de types de pièces sur le distributeur : 1
  • Nombre de positionnements : 1
  • Type de plateforme : plate
  • Zone de prélèvement : région de prélèvement B
  • Orientations des caméras :
    • Caméra n° 1 : fixe orientée vers le bas. Le champ de vision correspond à la taille totale du plateau du distributeur. Utilisé par la séquence Part Blob.
    • Caméra n° 2 : fixe orientée vers le bas. Le champ de vision a la même taille que la zone de prélèvement B (la moitié du plateau du distributeur). Utilisé par la séquence de pièces.

Description
La caméra n° 1 dispose d’un champ de vision qui couvre l’ensemble du plateau du distributeur. La séquence Part Blob utilise la caméra n° 1. La séquence Part Blob détermine la manière dont le distributeur doit vibrer en fonction du nombre de pièces et de leur répartition sur l’ensemble du plateau. Le champ de vision de la caméra n° 2 correspond à la même zone que celle de la région de prélèvement B. Pour occuper le plus possible le champ de vision, la caméra n° 2 doit être pivotée de 90 degrés par rapport à la caméra n° 1 (c’est-à-dire que les caméras doivent être orthogonales les unes par rapport aux autres). La caméra n° 2 est utilisée pour la séquence de pièces.
Les pièces identifiées par la séquence de pièces sont utilisées pour charger la file d’attente d’alimentation en pièces. Le champ de vision étant deux fois plus petit que celui de la caméra n° 1, la résolution en mm/pixel peut être considérablement améliorée.
De plus, comme la caméra n° 1 sert uniquement à déterminer comment faire vibrer le distributeur, elle peut avoir une résolution inférieure à celle de la caméra n° 1. Par exemple, la caméra n° 1 pourrait avoir une résolution de 640 × 480 et la caméra n° 2 une résolution de 5 472 × 3 648.
En réduisant le champ de vision et en augmentant la résolution de la caméra, la précision de prélèvement du robot sera améliorée.

La fonction Flip & Separate Auto Calibration (Étalonnage automatique avec retournement et séparation) utilise la séquence de pièces pour vérifier qu’un nombre acceptable de pièces pouvant être prélevées a été détecté. Si une caméra à champ de vision réduit est utilisée pour la séquence de pièces, la fonction Flip & Separate Auto Calibration (Étalonnage automatique avec retournement et séparation) ne fonctionnera pas correctement sans étapes de configuration supplémentaires.
Vous pouvez choisir l’une des options suivantes.

  1. Ignorez l’étalonnage automatique et réglez manuellement les paramètres d’étalonnage Flip & Separate (Retourner et séparer).

  2. Créez une séquence de pièces utilisant la caméra n° 1 (grand champ de vision) uniquement pour l’étalonnage automatique.
    Dans cet exemple, la séquence de pièces qui utilise la caméra n° 2 (petit champ de vision) s’appelle « PartSeq ». La séquence de pièces temporaire qui utilise la caméra n° 1 (grand champ de vision) s’appelle « PartSeqTemp ». « PartSeqTemp » utilise un objet Geometric pour localiser la pièce.
    « PartSeqTemp » ne sera utilisé que temporairement pour étalonner le distributeur. Sélectionnez « PartSeqTemp » comme séquence de vision de la pièce (voir ci-dessous).

  3. Accédez à la page Part Feeding Calibration (Étalonnage de l’alimentation de pièces) et lancez l’étalonnage automatique pour la séparation.

  4. Une fois tous les étalonnages souhaités effectués, fermez la boîte de dialogue Calibration & Test (Étalonnage et test). Modifiez la séquence de vision de la pièce pour « PartSeq » (qui utilise la caméra n° 2 à petit champ de vision). Au moment de l’exécution, les résultats de vision fournis par « PartSeq » seront utilisés pour charger la file d’attente d’alimentation des pièces.

    Aucun code d’alimentation des pièces spécifique n’est requis.

Exemple de code
Main.prg

Function main
    If Motor = Off Then
        Motor On
    EndIf
    Power Low
    Jump Park
    PF_Start 1
Fend

PartFeeding.prg

Function PF_Robot(PartID As Integer) As Integer
    Do While PF_QueLen(PartID) > 0
        P0 = PF_QueGet(PartID)
        Jump P0
        On Gripper; Wait 0.2
        Jump Place
        Off Gripper; Wait 0.2
        PF_QueRemove PartID
        If PF_IsStopRequested(PartID) = True Then
            Exit Do
        EndIf
    Loop
    PF_Robot = PF_CALLBACK_SUCCESS

Fend

Exemple de programme 7.2

Type d’exemple :
Utilisation d’une caméra fixe orientée vers le bas et d’une caméra montée sur un support mobile pour améliorer la précision de prélèvement

Configuration

  • Nombre de robots : 1
  • Nombre de distributeurs : 1
  • Nombre de types de pièces sur le distributeur : 1
  • Nombre de positionnements : 1
  • Type de plateforme : plate
  • Zone de prélèvement : n’importe où
  • Orientations des caméras :
    • Caméra n° 1 : fixe orientée vers le bas. Le champ de vision correspond à la taille totale du plateau du distributeur. La caméra n° 1 est utilisée par la séquence Part Blob et la séquence de pièces.
    • Caméra n° 2 : montée sur un support mobile sur l’articulation 2. Le champ de vision est légèrement plus large que la pièce elle-même. La caméra n° 2 capture une image secondaire de la pièce avant son prélèvement.

Description
Un « bras » sera défini pour la caméra à articulation mobile n° 2 (robot SCARA uniquement). Si vous utilisez un robot à six axes, vous pouvez définir un outil (plutôt qu’un bras) pour une caméra à articulation mobile n° 6.
Au lieu de commander au préhenseur de se rendre directement à l’emplacement de la file d’attente des pièces, la caméra n° 2 sera déplacée au-dessus de la pièce. Une séquence de vision supplémentaire sera effectuée afin de déterminer une position de prélèvement plus précise pour la pièce.
La caméra mobile dispose d’un champ de vision nettement plus restreint que celui de la caméra fixe orientée vers le bas, ce qui permettra d’améliorer la précision de prélèvement. En raison du mouvement supplémentaire nécessaire pour positionner la caméra au-dessus de la pièce et de l’acquisition de vision supplémentaire, la durée totale du cycle sera plus longue.
Pour configurer automatiquement le bras, accédez à Epson RC+ - Tools (Outils) - Robot Manager (Gestionnaire de robots). Sélectionnez l’onglet [Arm] (Bras) dans Robot Manager (Gestionnaire de robots). Dans cet exemple, sélectionnez Arm 1 (Bras 1), puis cliquez sur le bouton Arm Wizard (Assistant de bras). Suivez chacune des étapes de l’assistant de bras.
Pour plus d’informations sur l’assistant, consultez le manuel suivant.
Logiciel Vision Guide 8.0 - « Réglage du bras pour la position d’installation de la caméra »


Calibrez la caméra montée sur un support mobile et créez une séquence de vision permettant de localiser une pièce unique sur le distributeur. Cette séquence sera exécutée via VRun depuis la fonction de rappel PF_Robot. Dans cet exemple, la séquence s’appelle « MobileCam ». Cette séquence « MobileCam » ne sera pas sélectionnée dans la boîte de dialogue Part Feeding. Les séquences Part Blob et la séquence de pièces utilisent la caméra n° 1 et sont sélectionnées comme d’habitude dans la boîte de dialogue Part Feeding.

Exemple de code
Main.prg

Function main
    If Motor = Off Then
        Motor On
    EndIf
    Power Low
    Jump Park
    PF_Start 1
Fend

PartFeeding.prg

Function PF_Robot(PartID As Integer) As Integer

    Boolean found
    Real x, y, u

    Do While PF_QueLen(PartID) > 0
        P0 = PF_QueGet(PartID)
        Arm 1 ’Select the Arm that is defined for the Mobile Camera
        Jump P0 :Z(0) ’Position the Mobile camera over the part
        VRun MobileCam
        VGet MobileCam.Geom01.RobotXYU, found, x, y, u
        Arm 0 ’Select default robot arm
        If found Then
            Jump XY(x, y, PICKZ, u) /R
            On Gripper; Wait 0.2
            Jump Place
            Off Gripper; Wait 0.2
        EndIf
        PF_QueRemove PartID
        If PF_IsStopRequested(PartID) = True Then
            Exit Do
        EndIf
    Loop
    PF_Robot = PF_CALLBACK_SUCCESS

Fend

Exemple de programme 7.3

Type d’exemple :
Utilisation de plusieurs caméras fixes pour améliorer la précision de prélèvement

Configuration

  • Nombre de robots : 1
  • Nombre de distributeurs : 1
  • Nombre de types de pièces sur le distributeur : 1
  • Nombre de positionnements : 1
  • Type de plateforme : plate
  • Zone de prélèvement : n’importe où
  • Orientations des caméras :
    • Caméra n° 1 : fixe orientée vers le bas. Le champ de vision correspond à la taille totale du plateau du distributeur. Utilisée par la séquence Part Blob et la séquence de pièces.
    • Caméra n° 2 : fixe orientée vers le haut. Le champ de vision est légèrement plus large que la pièce. Cette caméra sert à calculer le décalage de l’outil par rapport à la pièce maintenue dans le préhenseur du robot.

Description
La caméra n° 1 est fixe et orientée vers le bas, au-dessus du plateau du distributeur. La caméra n° 2 est fixe et orientée vers le haut. La caméra n° 1 dispose d’un champ de vision qui couvre l’ensemble du plateau du distributeur. La séquence Part Blob et la séquence de pièces utilisent la caméra n° 1.
Le champ de vision de la caméra n° 2 doit être légèrement plus large que la pièce elle-même. Une fois que le robot aura prélevé la pièce dans le distributeur, il la maintiendra au-dessus de la caméra n° 2. La caméra n° 2 permet de créer de manière dynamique un outil pour la pièce maintenue par le préhenseur. Le robot positionnera ensuite la pièce dans l’outil nouvellement défini. Les décalages d’outil permettent de compenser les imprécisions lors du prélèvement par le distributeur.
La caméra n° 2 n’est utilisée que dans le code de la fonction de rappel PF_Robot. Ne configurez pas la séquence de vision pour la caméra n° 2 dans le menu Epson RC+ 8.0 - [Tools] (Outils) - [Part Feeding] - [Vision]. Le code d’exemple utilise la valeur RobotToolXYU fournie par la caméra n° 2 pour déterminer les décalages de l’outil.
La fonction PF_Robot exécute d’abord une séquence permettant de positionner la pièce dans le préhenseur. Les décalages de l’outil sont ensuite récupérés à l’aide de la fonction VGet RobotToolXYU, puis l’outil est défini à l’aide de la fonction TLSet. Le robot positionne ensuite la pièce à l’aide du nouvel outil.

Cet exemple nécessite que la caméra fixe et orientée vers le haut soit étalonnée. Pour plus d’informations sur la procédure d’étalonnage d’une caméra fixe et orientée vers le haut, veuillez vous reporter au manuel suivant.
Logiciel Vision Guide 8.0 « Calibration Procedure: Fixed Upward Camera »

Exemple de code
Main.prg

Function main
    If Motor = Off Then
        Motor On
    EndIf
    Power Low
    Jump Park
    PF_Start 1
Fend

PartFeeding.prg

Function PF_Robot(PartID As Integer) As Integer
   Boolean found
   Real xTool, yTool, uTool

   Do While PF_QueLen(PartID) > 0
       P0 = PF_QueGet(PartID)
       Tool 0 ’ Select the correct Tool number for the Gripper
       Jump P0
       On Gripper; Wait 0.2
       Jump upCam
       VRun findPartInGripper
       VGet findPartInGripper.Geom01.RobotToolXYU, found, xTool, yTool, uTool
       If found Then
           TLSet 1, XY(xTool, yTool, 0, 0)
           Tool 1
           Jump Place
       Else
            Jump reject ’ Part not found in gripper - reject part
       EndIf
       Off Gripper; Wait 0.2
       PF_QueRemove PartID
       If PF_IsStopRequested(PartID) = True Then
           Exit Do
       EndIf
   Loop
   PF_Robot = PF_CALLBACK_SUCCESS
Fend