Site icon AranaCorp

Vision par ordinateur avec Arduino et la caméra Pixy2

La caméra Pixy2 est un système de reconnaissance visuelle assistée par ordinateur. Elle permet à votre microcontrôleur de détecter des couleurs ou des lignes pour créer un robot suiveur de ligne par exemple ou pour attraper des objets de couleurs.

Matériel

Principe de fonctionnement

L a caméra Pixy2 est un système de vision complet muni d’un capteur d’image et un microprocesseur. Elle embarque des algorithmes d’apprentissage et de détection de couleur, de ligne, d’intersection et de petit code barre. Elle embarque toute la technologie nécessaire à la reconnaissance visuelle.

Spécifications techniques

Schéma

La caméra Pixy2 peut facilement communiquer avec un microcontrôleur à l’aide de ses interfaces de communication (UART, SPI, I2C, USB). Elle se connecte au port ICSP de la carte Arduino.

Configuration de la caméra Pixy2

Téléchargez le logiciel pixymon

Ouvrez le logiciel PixyMon v2

Apprentissage de la reconnaissance

Avant de pourvoir utiliser la Pixy2, il va falloir lui apprendre à reconnaitre les objets qui nous intéresse et leur affecter une signature (identifiant). Il est possible d’enregistrer jusqu’à 7 signatures.

Une fois l’apprentissage effectué, on peut voir que l’objet est entouré d’un rectangle avec la signature écrit en son centre.

Si vous avez des soucis pour reconnaitre l’objet appris il est possible de configurer la sensibilité de la reconnaissance dans les paramètres
allez dans file -> configure sous l’onglet tuning et jouer avec les paramètres pour obtenir le résultat voulu.

Certains objets ne sont pas reconnaissables facilement. Essayez de trouver des objets avec des formes particulière et des couleurs vives et distinctes.

Code

Installez la librairie Arduino Pixy2. La fonction la plus importante est getBlocks() qui retourne le nombre de blocs détectés et des informations comme leurs signatures (identifiant après apprentissage) et dimensions.

//Libraries
#include <Pixy2.h>//https://github.com/charmedlabs/pixy2/raw/master/releases/arduino/arduino_pixy2-1.0.3.zip

//Variables
Pixy2 pixy;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init Pixy2
  pixy.init();
}

void loop() {
  testPixy();
}

void testPixy() { /* function testPixy */
  //// Get blocks from Pixy2
  // grab blocks!
  pixy.ccc.getBlocks();

  // If there are detect blocks, print them!
  if (pixy.ccc.numBlocks) {
    Serial.print("Detected ");
    Serial.println(pixy.ccc.numBlocks);
    for (int i = 0; i < pixy.ccc.numBlocks; i++) {
      Serial.print("  block ");
      Serial.print(i);
      Serial.print(": ");
      pixy.ccc.blocks[i].print();
    }
  }
}

Si vous rencontrez des problèmes de compilation, vous pouvez supprimer les fichiers zumobuzzzer et zumomotor (.h et .cpp) dans le dossier de la librairie Documents\Arduino\libraries\Pixy2

Résultat

Une fois le code téléversé, la caméra envoie des messages à l’Arduino dès que l’objet apparait dans son champ de vision. Vous avez alors accès à la signature de l’objet, sa dimensions et sa position.

Applications

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Quitter la version mobile