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 FIFO
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.