Plate-forme de développement vidéo "CMUcam3"

Plate-forme de développement vidéo CMUcam3

L'objectif du projet CMUcam est de pouvoir offrir à la plupart des systèmes embarqués un dispositif de traitement vidéo performant, économique et simple à utiliser. Le dernier produit en date issu de ce projet (qui en est à sa 3ème génération) se présente sous la forme d'une petite platine électronique basée sur un microcontrôleur ARM™ associé à un capteur vidéo CMOS couleur.
 

Appelée CMUcam3, cette platine peut être exploitée soit comme un capteur vidéo intelligent prêt à l'emploi (très facilement interfaçable via une liaison série avec n'importe quel microcontrôleur...), soit comme une véritable plate-forme de développement, laquelle vous permettra de concevoir vos propres algorithmes de traitements et d'analyses vidéos grâce à une bibliothèque d'exemples et de librairies accessibles en open source. Dès lors, ce module pourra vous révéler ses talents et ses possibilités en terme de reconnaissance de couleurs ou
de reconnaissance de formes.
       
Pour en savoir plus...
Téléchargez la documentation complète, les exemples, les firmwares, les codes sources, les utilitaires...
 La Documentation complète 

Présentation matérielle:
Développée par l'Université de Carnegie Mellon qui a sélectionné Lextronic pour fournir et fabriquer ce module sous licence, la CMUcam3 est conçue autour d'un puissant processeur ARM™ de type LPC2106 (origine NXP™ / Philips™) associé à une mémoire FIFO et à un module caméra couleur CMOS interchangeable Omnivision™.   
   
 
    Entièrement programmable en langage C via une suite logiciel librement accessible de type GNU, le module CMUcam3 pourra être très facilement flashé avec vos propres applications (ou une des nombreuses applications prêtes à l'emploi disponibles sur le site dédié à ce projet) au moyen d'une simple liaison série sans autre outil de développement complémentaire. 
 
De très faibles dimensions (55 x 57 mm), la CMUcam3 se compose d'une platine principale reliée à un module caméra couleur via un connecteur mâle / femelle 2 x 16 points.
   
 
Destinée à être alimentée de 6 à 15 Vcc (de préférence en 6 Vcc), la platine de la CMUcam3 dispose d'une multitude de connecteurs mâles au pas de 2,54 mm permettant d'avoir accès à un port de communication série doté d'un niveau logique +/- 12 V (pour une liaison directe avec le port RS-232 d'un PC) ou d'un niveau logique 0 / 5 V (pour une liaison directe avec le port série d'un microcontrôleur externe). La sélection d'une des 2 sorties s'effectue au moyen d'un cavalier. 
    
  
                
  
 
D'autres connecteurs donnent accès à des ports d'entrées/sorties à usages divers, dont certains pourront (suivant le Firmware chargé dans la CMUcam3) être utilisés pour piloter directement 4 servomoteurs à partir d'ordres séries envoyés à la CMUcam3. L'alimentation des servomoteurs pourra suivant leur nombre et leur puissance se faire soit directement via le régulateur intégré de la platine ou soit via une source externe (la sélection du mode d'alimentation s'effectuant par un cavalier). 4 Leds de visualisation (dont la première sert à visualiser la présence de l'alimentation) peuvent être pilotées par certaines sorties du microcontrôleur de la platine. 
  
 
La CMUcam3 dispose également d'un mini interrupteur M/A et d'un bouton Reset permettant accessoirement d'initier la phase de programmation ISP de votre application dans la mémoire Flash du microcontrôleur ARM™ LPC2106 via le port série. 
   
Une connexion "à souder" permet également de disposer d'une sortie vidéo PAL analogique en provenance du module caméra de la platine. Enfin, un connecteur pour carte SD™ / MMC™ est quand à lui présent sur l'autre face de la CMUcam3. Ce dernier pourra (en fonction du Firmware installé) être utilisé pour stocker des données ou des images sur une carte mémoire SD™ ou MMC™
      
   
   
   
Principales caractéristiques techniques:
- Faibles dimensions: 55 x 57 mm (épaisseur: 50 mm)
- Microcontrôleur ARM™   LPC2106 avec 128 K de mémoire Flash et 64 K de RAM
- Mémoire RAM (FIFO) externe 512 Kb (Max. Rate: 50 FPS)
- Environnement de développement Open source pour Windows™ ou Linux
- 4 sorties PWM pour servomoteurs (sans nécessité d'acquérrir de platine additonnelle)
- Connecteur pour lecture/écriture sur cartes SD™ / MMC™ en FAT16 (carte non livrée)
- Chargement d'images en mémoire à 26 frames/sec.
- Langage interpréteur LUA pour prototypage rapide
- Emulation permettant de disposer d'un fonctionement quasi similaire à la CMUcam2
- Sortie vidéo analogique PAL
- Buffer avec passes multiples pour traitement des images
- Tourelle de fixation avec déplacement X/Y disponible en option (voir au bas de la page)
- Idéal pour robotique ludique, recherche, éducation, reconnaissance de forme, reconnaissance de
  couleur, reconnaissance de visage, data-logger...   

Reprogrammation de la CMUcam3:
La CMUcam3 est livrée pré-assemblée avec un petit câble de liaison série ainsi qu'un connecteur d'alimentation avec sorties sur fils. Cette dernière est également pré-programmée (et testée) avec un Firmware vous permettant de l'exploiter immédiatement comme un capteur vidéo intelligent capable d'émuler à peu de chose près toutes les possibilités du module CMUcam2. Pour rappel, la CMUcam2 correspond au projet CMUcam de 2ème génération conçu sur la base d'un microcontrôleur SX52. De part l'obsolescence du SX52, le module     


Dès lors, il en résulte que pour bon nombre d'entres vous la CMUcam3 sera immédiatement opérationnelle et capable de s'interfacer simplement et rapidement avec votre microcontrôleur ou votre module microcontrôlé habituel.
  
Toutefois si vous le désirez vous pourrez également télécharger vous même un autre Firmware dans la mémoire de la CMUcam3 afin que cette dernière puisse réaliser d'autres fonctions (reconnaissance de visages, suivi automatique de couleurs, reconnaissance d'environnement, dispositif de surveillance vidéo avec enregistrement des images sur une mémoire SD™ en cas de détection de mouvement, etc...).
       
   
     
    
 
La mise à jour du Firmware de la CMUcam3 s'effectue très simplement au moyen de l'utilitaire LPC210x Flash (pour Windoz pour Linux)  qui vous permettra de transférer un fichier ".hex" dans la mémoire Flash du microcontrôleur ARM™ via le port série de la platine (sans autre outil additionnel). 
   
Vous pourrez aussi décider de modifier ou de développer vous même votre propre "Firmware" sur la base des exemples et des codes sources existants. Pour ce faire, vous disposez de tout l'environnement logiciel nécessaire en téléchargement sur le site officiel: http://cmucam.org (compilateur "C" GNU, programme de flashage du LPC2106, codes sources associés aux différents Firmwares, etc...).    
 
Description des différents Firmwares exploitables sur la CMUcam3:
Ces différents Firmwares sont disponibles sous la forme de codes sources ou de fichiers .hex directement téléchargeables dans la CMUcam3.
  
CMUcam2 firmware emulation


 C'est le Firmware pré-installé lorsque vous recevez la CMUcam3. Celui-ci consiste à faire fonctionner la CMUcam3 comme s'il s'agissait (à quelques exceptions) du module CMUcam2, lequel pourra alors:
     
- Détecter un objet coloré à près de 50 images par secondes
  (la valeur est fonction de la taille de la fenêtre de travail sélectionnée)
- Suivre un objet coloré en mouvement (détection différence de trame, jusqu'à 26 par sec.)
- Trouver le centre de l'objet à suivre
- Renvoyer les données de couleur et variance d'un objet
- Fournir un "histogramme" de chaque canal de couleur
- Manipuler les pixels des images
- Transférer en temps réel les pixels de l'objet suivi en une image
- Redimensionner la fenêtre de détection de la caméra
- Récupérer l'image "vue" par la caméra
- Piloter très simplement jusqu'à 5 servomoteurs type modélisme
- Etc, etc...
   
Une des principales applications possibles de la CMUcam3 est bien évidément sa mise à contribution pour la réalisation de petits robots ludiques intelligent qui pourront très simplement réagir à leur environnement afin de pouvoir suivre des objets colorés. Les petites vidéos ci-dessous montrent des exemples d'aplications réalisées à l'aide de la CMUcam (qui est en fait "l'ancêtre" de la CMUcam3 puisqu'il s'agit de la première génération de module développé). Vous pourrez dés lors réaliser sans peine la même chose avec la CMUcam3 en gardant à l'esprit que la CMUcam est bien moins puissante que la CMUcam3... Ce qui vous laisse entrevoir les possibilités de progression offertes par le module actuel...
   
 

  
     
 
La CMUcam3 (avec Firmware CMUcam2)... Comment ça marche ?
L'utilisation de la CMUcam3 est on ne peu plus simple, puisqu'il suffira au système hôte (votre PC, votre microcontrôleur) de lui envoyer (via le port série) une succession de codes ASCII se terminant par l'équivalent d'un retour chariot (code ASCII 13). Ces codes ASCII correspondent aux commandes et actions que vous désirerez lui faire effectuer (la CMUcam3 est à même d'en reconnaître plus d'une quarantaine). Selon les cas, la CMUcam3 vous répondra en vous renvoyant également une succession de codes ASCII. 
         
Ainsi par exemple les commandes:
 
L0 1 (Enter) -> allumera la Led rouge de la CMUcam3
L0 0 (Enter) -> Eteindra la Led rouge de la CMUcam3
   
SV 0 200 (Enter) -> Déplace un servomoteur sur une certaine position
                                Ce dernier devra être connecté sur une des sorties de la CMUcam3
 
Selon le même principe, des ordres plus complexes peuvent être envoyés pour gérer la détection de couleur en indiquant à la CMUcam3 les limites minimales et maximales des 3 composantes RGB de la couleur que vous voudrez rechercher. Dès lors, chaque pixel de l’image sera analysé et comparé avec vos valeurs afin de vous retourner les coordonnées des pixels les plus en haut à gauche (x1,y1) et les plus en bas à droite (x2, y2) qui correspondent à votre requête. 
  
 
    

Logiciel de test
Graphical User Interface

Bien que principalement destinée à être utilisée sur des dispositifs embarqués autonomes (tels que des robots ludiques par exemple), la CMUcam3 dispose d'un très puissant logiciel de test développé en JAVA™. Pouvant fonctionner sur différentes plate-formes et systèmes d'exploitation (Windows™, Linux™, MAC OS™), ce dernier vous permettra de tester immédiatement et simplement la plupart des fonctions de la CMUcam3 en communiquant avec elle au moyen de différents menus très didactiques.
 

      
 
Appelé GUI (pour Graphical User Interface), ce logiciel est aussi compatible (en partie) avec les versions antérieur du projet CMUcam (CMUcam1 et CMLUcam2). Toutes les fonctions du logiciel sont accessibles depuis une fenêtre dotée de multiples onglets. Une ligne de saisie en haut de l'écran vous permet également d'envoyer des ordres à la CMUcam3 en tapant directement les codes ASCII correspondants aux différentes commandes reconnues par la caméra.
   
 
              
   
Le premier onglet permet d'effectuer une capture d'écran de ce que voit la CMUcam3. L'image une fois capturée peut être sauvegardée sur le disque dur du votre ordinateur. En déplaçant le curseur de la souris sur l'image, le programme vous retourne les valeurs des composantes (RVB) de chaque pixel (idéal pour déterminer les spécifications de la couleur de l'objet que l'on souhaite suivre). 
    
 
            

En cliquant sur un pixel, le logiciel délimite automatiquement le contour de l'objet (via une sur-impression colorée). Vous pouvez également sélectionner une tolérance lors de la génération du contour de l'objet afin de séparer des objets de couleurs plus ou moins proches.
    
Après coups, il vous sera possible (via un autre onglet) de déplacer l'objet devant la caméra, afin que l'écran du PC affiche un rectangle bleu correspondant à la taille de l'objet. Ce rectangle se déplacera également à l'écran en même temps et selon les mêmes conditions que l'objet que vous présenterez à la caméra. 

      
  
              
 
D'autres onglets du logiciel permettent d'obtenir un histogramme de l'image vue par la caméra ou d'obtenir un affichage statistique des couleurs de l'image vue par la caméra.
  
    
              
  
Vous pourrez également piloter (via des curseurs manipulables à la souris) jusqu'à 4 servomoteurs connectés sur les sorties prévues à cet effet sur la CMUcam3. Un dernier onglet s'apparente à une véritable boîte de réglage qui vous permettra de modifier la plupart des paramètres de la CMUcam3 liés au traîtement vidéo.
   
Security-cam firmware
Ce firmware vous permettra de transformer votre CMUcam3 en système de vidéosurveillance expérimental avec détection de mouvement par analyse d'image. Après avoir chargé ce firmware, il vous faudra (hors tension) insérer une carte SD™ / MMC™ dans le connecteur prévu à cet effet sur la CMUcam3. La carte devra préalablement avoir été formatée au format FAT (ne pas utiliser le format FAT32 qui n'est pas supporté). A la mise sous tension de la platine, la "CMUcam3" effectuera une surveillance permanente des images et dès que celle-ci détectera un mouvement la caméra fera clignoter brièvement une de ses leds tout en sauvegardant l'image liée à l'alarme détectée sur la carte SD™ / MMC™. Après coups, il vous sera possible de récupérer toutes les images sauvegardées sur la carte SD™ / MMC™ à partir d'un PC équipé d'un lecteur de carte SD™ / MMC™.
   
    

Viola-jones face detector
Vous trouverez une description très intéressante concernant la mise en oeuvre d'un système de détection et de reconnaissance expérimentales de visages via une CMUcam3. Cet exemple est conçu sur la base d'une parrution écrite par P.Viola et M. Jones (Robust Real-Time Face Detection). Après une phase d'apprentissage, la CMUcam3 sera en mesure de retourner les coordonnées de l'emplacement du visage détecté dans l'image.
 
         
   
    

Implémentation d'un système de navigation pour robots
Vous trouverez une autre description très intéressante concernant la mise en oeuvre d'un système de navigation permettant à un robot de trouver les issues qu'il peut emprunter après analyse de l'image par la CMUcam3. La CMUcam3 numérisera l'image puis filtrera cette dernière pour en extraire les passages non obstrués. Les informations sont transmisent au système hôte sous la forme de trames ASCII via la liaison série. Une version spéciale permet également d'afficher le résultat sous la forme d'un histogramme via le logiciel de test "Graphical User Interface" décrit ci-avant.
  

   
    

Petit robot mobile "Spoon Bot"

Cette réalisation vous permettra de concevoir un petit robot mobile différentiel sur la base d'une CMUcam3. Equipé de 3 servomoteurs, ce dernier sera à même d'effectuer des déplacements divers (y compris en Pan et Tilt) afin de pouvoir suivre les objets colorés. Sa construction est très simple et fait appel à un minimum de composants pour un résultat très didactique.
   
 

      
     
  
Firmware Frame Grabber
Ce Firmware permet (en association avec un petit logiciel de test pour PC) de faire l'acquisition d'images en provenance de la CMUcam3 afin de les afficher sur l'écran de l'ordinateur ou de les sauvegarder sur son disque-dur. Vous disposez également d'un petit terminal de saisie permettant d'envoyer des commandes en ligne à la caméra. La vision industrielle c'est quoi ?
 

    
      
  
Autres exemples d'applications
Vous trouverez de nombreux autres exemples de codes permettant de suivre une couleur, d'activer la fonction d'histogramme, de piloter le port série, d'avoir accès aux données à la carte SD™ / MMC™...
  
   
 
Pour en savoir plus...
Téléchargez la documentation complète, les exemples, les firmwares, les codes sources, les utilitaires...
La Documentation complète
La CMUcam3 est fabriquée sous licence par Lextronic.