Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Capteurs > Autres caméras > Caméra Havimo pour Arduino

Caméra Havimo pour Arduino

jeudi 22 août 2013, par Julien H.

Après plusieurs années à tester des caméras autonomes (type CMUcam), nous avions pris le parti d’utiliser des webcams sur des cartes embarquées sous GNU/Linux. Mais l’offre de petites caméras pilotées par micro-contrôleur a continué à grossir et nous étudions aujourd’hui grâce à Arobose le modèle Havimo 2.5 sous forme d’un shield Arduino.

La détection de couleur et de forme dans une image est une tâche complexe qui nécessite beaucoup de calculs. Un simple micro-contrôleur 8 bits aurait bien du mal à tout gérer dans le temps nécessaire pour piloter un robot, sans compter la nécessité de garder des ressources pour des moteurs, une logique de déplacement, l’acquisition de capteurs, etc..

C’est pour quoi il est très intéressant de disposer d’outils comme la caméra Havimo 2.5 qui malgré son prix est un outil très intéressant pour garder une bonne simplicité de programmation et ne pas passer par des systèmes embarqués difficiles à mettre en oeuvre pour un débutant.

Description du module de vision pour Arduino sur le site Arobose

Vous trouverez sur ce site tous les liens utiles vers la documentation et le logiciel de calibrage HavimoGUI

Principes

L’avantage de ce module est de définir sur une image prise dans les conditions d’éclairage réelles la liste de couleurs (appelée LUT) qui va être détectée par la caméra. Une interface graphique (GUI) permet de cliquer à la souris sur les indicateurs de couleur découverts par la caméra et de visualiser l’étendue (en bleu ciel) de la détection.

On va ensuite enregistrer cette table spécifique dans la mémoire de la puce Havimo (et pas dans le micro-contrôleur, ce qui fait gagner de la place) et on va pouvoir utiliser la caméra qui s’occupera de l’acquisition des images, de la détection de couleur, de la mise en correspondance avec la table, et du calcul géométrique des grandeurs que l’on souhaite récupérer : position des zones détectées - jusqu’à 8 couleurs définies.

Mise en oeuvre

Installez le shield Havimo 2.5 sur une carte Arduino (Uno ou clone mais pas de Mega ou de Mini...) et envoyez le programme suivant qui recopie la liaison série USB vers la liaison série de la puce Havimo qui contrôle la caméra.

void setup()
{
  pinMode(0,INPUT);
  pinMode(1,OUTPUT);
  pinMode(2,INPUT);
  pinMode(3,OUTPUT);
}
void loop() // run over and over
{
  noInterrupts();
  while(1){
    int rxPC = PIND & 1;
    int rxHaViMo = (PIND>>2) & 1;
    PORTD = rxPC * 8 + rxHaViMo * 2;
  }
}

Puis lancez le programme HavimoGUI que vous aurez téléchargé depuis le site Arobose (sous Windows seulement, ou sous Linux avec Wine mais il faut savoir faire passer le port série donc experts seulement).

Faites charger la table LUT et prenez un échantillon avec la caméra. Sélectionnez une couleur et cliquez sur les cubes de couleurs de votre choix dans une teinte proche afin de faire apparaitre en bleu ciel sur l’image du milieu les zones détectées pour toutes ces variantes de la couleur recherchée.

Pensez à enregistrer la table LUT dans la mémoire de la puce. Prenez une nouvelle photo (Sample Image) : vous retrouvez une zone de couleur bleu ciel sur la partie que vous avez définie.

Il ne reste plus qu’à écrire le programme Arduino qui exploitera les informations retournées par la caméra. Notre atelier vous est grand ouvert pour un second épisode !

Vos commentaires

  • Le 5 septembre 2013 à 12:35, par Elvis En réponse à : Caméra Havimo pour Arduino

    Très intéressant. je prévois munir ma carte Arduino Leonardo d’une caméra et d’un robot pour le téléguider avec mon pc (ou mieux ma tablette) tout en reçevant les images de la cam en direct. j’aimerais savoir si c’est possible et de quoi j’aurai besoin pour réaliser ce projet.Merci.

    • Le 5 septembre 2013 à 13:57, par Julien H. En réponse à : Caméra Havimo pour Arduino

      Bonjour,

      Ce projet est assez fréquent pour que le retour d’expérience soit fiable : vous n’aurez pas le débit d’image suffisant avec une carte Arduino et une caméra de ce type.

      Il faut donc passer par une solution (pour quasiment le même prix) avec une Raspberry Pi ou une pcDuino avec une webcam (il en existe de très petite avec même la possibilité de bouger selon deux axes motorisés). Voir par exemple http://www.arobose.com.

      L’avantage est que l’acquisition, la connexion à la tablette et le flux d’images et de commandes de guidage bénéficient d’un système complet GNU/Linux.

      Tenez-nous informé de votre projet (voire même publiez sur ce site votre expérience au fur et à mesure de sa conception).

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.