Exemple de programme 8.3

Type d’exemple :
Utiliser des pixels « à ignorer » pour la fenêtre de recherche de Blob de pièces

Configuration

  • Nombre de robots : 1
  • Nombre de distributeurs : 1
  • Nombre de types de pièces sur le distributeur : 1
  • Nombre de positionnements : 1
  • Orientation de la caméra : caméra fixe et orientée vers le bas au-dessus du distributeur n° 1

Description
Même lorsque le rétroéclairage est activé, des ombres peuvent apparaître dans les coins du plateau. Si la fenêtre de recherche du Blob de la pièce inclut les coins et si les seuils du Blob ne sont pas correctement réglés, les ombres peuvent alors être faussement identifiées comme des pièces. La séquence Part Blob sert à détecter des pièces individuelles ou un groupe de pièces. Si le Blob de la pièce détecte les ombres comme des pièces, le système prendra alors une mauvaise décision quant à la manière de vibrer.

Voici un exemple illustrant comment les ombres dans les coins peuvent être confondues avec des pièces de la structure.

La fenêtre de recherche de Blob peut être masquée en peignant des « pixels à ignorer » dans les zones où vous ne souhaitez pas effectuer de recherche (par exemple, les coins du plateau).
Cliquez avec le bouton droit sur le Blob et sélectionnez « Edit Window » (Modifier la fenêtre) dans le menu contextuel, ou sélectionnez la propriété « EditWindow » de SearchWin pour le Blob.

Utilisez le pinceau pour supprimer le plateau de la fenêtre de recherche.

Désormais, lorsque vous exécutez le Blob, le plateau n’apparaîtra plus dans la fenêtre de recherche (comme illustré ci-dessous).

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