Caméra / Reconnaissance de couleur en Snap!

Pour l’élaboration d’un projet de tri de balles par couleur (présenté à la conf Scratch en juillet par mes élèves d’ICN), nous avions demandé à @Theo la création d’un bloc Snap! spécifique.
Ce bloc sert à déterminer la couleur dominante au sein de l’image fournie par la caméra de la Raspberry de l’ErgoJr.

Installation des blocs

Pour faire en sorte que votre Ergo puisse bénéficier de cette nouvelle fonctionnalité, trois fichiers sont à uploader directement sur la carte de l’Ergo.

  1. Connectez-vous à votre Ergo et démarrez Jupyter :

  2. Naviguez à l’intérieur de l’arborescence jusqu’au dossier poppy_src/poppy_ergo_jr/primitives/

  3. Téléchargez ce fichier python : color_detection.py (2.2 KB)

  4. À l’aide du bouton Upload de Jupyter, téléversez ce fichier color_detection.py dans le dossier poppy_src/poppy_ergo_jr/primitives/

  5. Téléchargez ce fichier python : poppy_ergo_jr.py (2.0 KB)

  6. Remontez dans l’arborescence jusqu’au dossier poppy_src/poppy_ergo_jr/ . Téléversez le fichier poppy_ergo_jr.py (il écrasera le fichier existant).

  7. Dernière étape, faire apparaître le bloc dans Snap! :
    Téléchargez le fichier pypot-snap-blocks.xml (76.5 KB)

  8. Placez-vous dans l’arborescence dans le dossier poppy_src/pypot/server/snap_projects/ et écrasez le fichier pypot-snap-blocks.xml existant avec celui téléchargé à l’étape précédente.

Utilisation des blocs

  1. Vérifiez que votre caméra est bien activée (dans Configure the Robot)
  2. Démarrez Snap! et ouvrez le fichier pypot-snap-blocks.xml présent dans Examples.
  3. Vérifiez que le bloc Get All Behaviours donne bien la primitive color_detection parmi les primitives disponibles :
  4. Démarrez la détection avec le bloc
  5. Utilisez le bloc Get Color

    Les deux premiers éléments de la liste sont l’abscisse et l’ordonnée du centre de la patatoïde détectée comme ayant la couleur principale.
    Le 3ème élément est la couleur de cette patatoïde.
    Le 4ème est un score de pertinence de la détection.

Je ne me suis jamais servi que du troisième élément.

Remarques

Le fichier color_detection.py, consultable et éditable depuis Jupyter, commence comme ceci :

rgb_ranges = {
    'green': ((0, 125, 0), (255, 255, 155)),
   'red': ((0, 0, 120), (80, 150, 255)),
}

Seules les couleurs green et red sont donc recherchées.
Pour rajouter des couleurs, il “suffit” de rajouter des lignes dans cette variable rgb_ranges.

Sauf qu’il est assez délicat de déterminer les plages RGB correspondant à la couleur cherchée.

Pour cela on pourra utiliser ce fichier Setup the filtering ranges for color detection.ipynb (4.7 KB)

Un très grand merci à Théo !

3 Likes

Merci pour le partage, et la notice,
Olivier.

1 Like