Lorsque l’on se lance dans la robotique personnelle programmable, une caméra n’est pas le premier type de capteur que l’on teste, ne serait-ce que par son coût et surtout sa complexité. Cependant, il n’est pas rare se diriger ensuite rapidement vers l’information visuelle, ce sens jouant un rôle important dans notre perception du monde pour les humains que nous sommes.
La fameuse Carnegie Mellon University l’a bien compris et propose depuis quelques années un modèle générique de caméra embarquée pour les petits robots nommée CMUCAM. Ce modèle est ensuite implémenté par différents constructeurs électroniques sur la base des spécifications éditées par l’université. Nous proposons sur ce site deux implémentations de CMUCAM :
La CMUCAM n’est pas exactement une caméra embarquée comme celle que nous connaissons pour nos PC ou nos téléphones portables. C’est à la fois un peut plus et un peu moins.
La CMUCAM est un système composé d’une caméra et d’un microprocesseur qui sont intégrés. C’est un appareil de vision artificielle d’entrée de gamme. Elle dispose d’un port série pour l’interfacer avec le PC ou le robot. La CMUCAM propose, embarqué dans son microprocesseur, des fonctionnalités basiques d’analyse d’images.
Ce système a spécifiquement été réalisé pour la robotique personnelle (dans le cadre du loisir ou de l’enseignement) avec comme objectif la simplicité ainsi que la maîtrise des coûts. Les capacités de la CMUCAM sont volontairement faibles car elle est destinée à être embarquée sur un petit robot où l’énergie et la capacité de traitement ainsi que la mémoire sont limités.
A ce jour, 3 générations de caméra sont proposés. Une page spécifique de l’institue de robotique de l’université de Carnegie Mellon présente les 3 générations de spécification : http://www.cs.cmu.edu/~cmucam
La CMUCAM sert avant tout à repérer des couleurs que l’utilisateur aura préalablement paramétrées dans la CMUCAM. Les couleurs sont repérées automatiquement par le processeur embarqué qui fourni ensuite au robot des informations brutes que sont le nombre de zones (on parle de Blob) ainsi que les coordonnées de ces zones et la couleur repérée.
A l’aide de ces informations, vous pouvez programmer votre robot pour réagir à ces zones de couleurs : suivre un objet, une ligne…
![]() |
Dans la suite de cet article, nous allons nous appuyer sur un exemple spécifique afin de concrétiser notre présentation. Nous avons choisi de présenter la NXTCAM de la société Mindsensors proposée par ailleurs sur ce site. Ce qui suit est donc spécifique à cette caméra mais la plupart des concepts sont identiques pour les autres implémentations de la CMUCAM. |
Toute utilisation de la CMUCAM s’effectue en deux temps :
Les caractéristiques techniques de la NXTCAM sont les suivantes :
La caméra retourne en temps réel les informations suivantes : Nombre d’objets (8 au max), couleur des objets, coordonnées des objets sous forme de boite ou de ligne. Tout ça en temps réel comme tout capteur NXT.
Pour installer la NXTCAM sur votre PC, vous devez tout d’abord installer les drivers USB pour la NXTCAM. Les drivers PC et MAC sont disponibles à l’adresse suivante : http://www.mindsensors.com/index.php?module=documents&JAS_DocumentManager_op=viewDocument&JAS_Document_id=44
Pour l’installation sur un PC équipé de Windows XP, téléchargez le fichier zip correspondant (cf. lien ci-dessus) et dézippez le fichier. Connectez ensuite la NXTCAM à votre PC à l’aide d’un câble USB. Votre PC détecte le nouvel équipement. Dans la fenêtre qui s’ouvre, indiquez l’emplacement du répertorie que vous venez de compresser. Cette opération sera à renouveler une seconde fois à l’identique (car deux drivers sont installés). Pour l’installation sur un PC équipé de Windows Vista ou sur un Mac, consultez le site de Mindsensors (http://www.mindsensors.com).
Les spécifications de la CMUCAM décrivent une connexion à l’aide du port série. Mindsensors, dans l’implémentation proposée, a eu l’idée d’une connexion USB. C’est pour cela que vous installez un second driver car celui-ci est le connecteur série-USB.
Avant d’utiliser la CMUCAM sur votre robot, la première étape consiste à paramétrer sur la CMUCAM les couleurs que vous souhaitez suivre. Pour ce faire, vous devez télécharger l’outil Open source NXTCamView disponible à l’adresse suivante : http://nxtcamview.sourceforge.net
Il s’agit de la fenêtre Options de NXTCamView. Cette fenêtre vous permet de définir les configurations de connexion à la NXTCam. A ce stade, nous nous concentrerons sur la connexion à la NXTCam. Dans la liste déroulante, choisissez le port COM associé à la NXTCam. Appuyez sur le bouton « Test ». Si la connexion est valide, alors la phrase « Success : NXTCam responded » apparaît en vert sous le bouton test. Dans le cas contraire, assurez-vous que le câble USB est bien connecté à la NXTCam et à votre PC. Cliquez sur « OK ».
La fenêtre de travail de NXTCamView apparaît. Appuyez sur le bouton « Connect », la pastille rouge en bas à gauche devient alors verte. :
Voilà, vous êtes prêt à démarrer l’utilisation proprement dite de la NXTCam. L’étape à suivre ensuite est de paramétrer la NXTCAM pour lui indiquer quelles sont les couleurs que l’on souhaite suivre (on dit « tracker »).
La première étape consiste à effectuer des captures d’images et de déterminer à l’aide de ces images, les couleurs que vous souhaitez tracker par la suite. Pour faire cela, vous devez déterminer les valeurs minimale et maximale de l’intensité de chacune des trois couleurs rouge, vert, bleu. Les valeurs que vous déterminez définissent ce que l’on appelle la carte des couleurs (ou colormap en anglais).
La difficulté est que la couleur d’un objet n’est généralement pas uniforme, ne serait-ce que par l’emplacement de la caméra ainsi que la configuration lumineuse de l’endroit. La qualité de l’image capturée par la NXTCam n’est pas très bonne et l’image est un peu floue. Cela est dû au fait que la résolution de la caméra n’est pas très puissante. On peut essayer d’ajuster le focus manuellement (en tournant le focus de la caméra) ou bien en ajustant les paramètres dans NXTCamView (paramètres AutoWhiteBalance ou AutoAdjust)
Revenons à notre propos. Nous devons paramétrer les couleurs à suivre. Les étapes sont les suivantes :
Des vidéos de démonstration sont disponibles au format Flash à l’adresse suivante : http://nxtcamview.sourceforge.net/DemoScreenCam.htm
Le « tracking » est la capacité à extraire d’une image l’emplacement d’une couleur en particulier dans cette image. Cela revient à entourer d’un cadre toutes les touches d’une couleur que l’on peut trouver dans une image. C’est ce que fait automatiquement la CMUCAM en retournant la position (le cadre) de chacune des zones identifiées (maximum 8 zones par image).
Il existe plusieurs algorithmes de traitement de l’image pour réaliser le tracking. La CMUCAM 2 propose un algorithme simple qui ne nécessite qu’un traitement unique de chaque frame capturée. L’algorithme est le suivant : La CMUCAM démarre en haut à gauche de la frame capturée et examine chaque pixel un à un, ligne par ligne. Si la valeur du pixel entre dans la zone de couleur déterminé précédemment, alors il est marqué comme tracké. Le pixel est également examiné pour savoir s’il est le pixel le plus haut, le plus bas, le plus à gauche ou le plus à droite de la zone trackée en cours. Si c’est le cas, alors, la zone de tracking est élargie. L’algorithme conserve également en mémoire, la somme des coordonnées horizontales ainsi que la somme des coordonnées verticales des pixels constituant la zone trackée. Ces deux sommes peuvent ensuite être utilisées pour déterminer quel est le centre de gravité de la zone trackée en divisant ces deux nombres par le nombre de pixels trackés. Ce centre de gravité est nommé le centroïd.
Reprenons à l’étape 6 du paragraphe précédent. Une fenêtre tracking est disponible dans NXTCamView (si elle n’est pas visible, cliquez sur le bouton tracking). Cette fenêtre vous permet d’effectuer un tracking de test alors que votre NXTCam est toujours connectée à votre PC. Si vous avez bien téléchargé les couleurs sur la NXTCam à l’étape précédente, vous devez les voir apparaître dans le tableau en bas à droite de la fenêtre tracking. Cliquez alors sur le bouton « Start » ce qui démarre la capture d’images par la NXTCam. Vous voyez alors apparaître en temps réel une représentation graphique des mesures effectuées par la NXTCam dans le tableau blanc constituant la majeure partie de la fenêtre tracking.
NXTCamView présente en effet les objets sous forme de boites de la couleur correspondante accompagnée de leurs coordonnées.
Les coordonnées affichées pour chacune des boites est :
Voilà, vous avez à présent une idée de comment fonctionne la CMUCAM. Elle fournit des coordonnées de zones de couleurs paramétrées dans son champ de vision. Vous pouvez à présent embarquer la NXTCam sur votre robot et vous en servir comme n’importe quel autre capteur.
Poursuivons notre découverte de la CMUCAM et installons notre NXTCam sur notre robot Lego Mindstorms NXT. Fixez tout d’abord la caméra sur le robot et reliez la caméra à la brique intelligente Lego Mindstorms NXT à l’aide d’un câble de connexion RJ12 (ce sont les câbles fournis avec le kit et qui ressemblent à des câbles de ligne téléphonique).
La connexion ainsi réalisée assure à la fois l’alimentation de la NXTCAM et également l’acheminement des informations au microprocesseur de la brique Intelligente Lego Mindstorms NXT (lorsqu’elle est alimentée, une diode jaune est allumée au dos de la NXTCAM).
La première étape à réaliser consiste à vous munir de la brique de programmation qui vous permettra de manipuler la caméra.
Le code source de la brique se trouve sur le site de Mindsensors à l’adresse suivante : http://www.mindsensors.com/index.php?module=documents&JAS_DocumentManager_op=viewDocument&JAS_Document_id=46
La procédure d’installation est très simple et de s’effectue qu’une seule fois :
Maintenant que toutes les conditions sont réunies pour programmer, nous allons réaliser un programme très simple.
D’autres programmes plus complexes et qui constituent de bon exemples sont disponibles aux adresses suivantes : http://nxtcamview.wiki.sourceforge.net/Projects
Le programme suivant est très simple :
Ce programme permet d’afficher le nombre d’objets trackés à l’écran de la brique intelligente Lego Mindstorms NXT.
Le bloc NXTCAM est appelé deux fois :
Il existe d’autres fonctions de la NXTCAM qui permettent de classer les objets par taille ou par couleur ou qui permettent de récupérer le nième objet de la liste (rappelez vous que la NXTCAM n’est tracke dans tous les cas que 8 à la fois). N’hésitez pas à consulter l’aide en ligne qui décrit le bloc.
Petit remarque : il arrive parfois que la brique NXTCAM affiche « No device ». Ne vous en préoccupez pas et téléchargez le programme NXT-G sur votre robot, généralement cela fonctionne. Rappelez-vous de bien paramétrer le numéro de port sur lequel se trouve la NXTCAM (comme tous les autres capteurs). Vous n’avez généralement pas à toucher au paramètre address.
Voici quelques bonnes pratiques qui vous permettront de tirer un meilleur parti de votre CMUCAM :
Génération Robots (http://www.generationRobots.com)
Tout usage et reproduction soumis à autorisation explicite préalable.
La fameuse caméra couleur Pob Technology qui équipe tous les robots POB |
|
|
solution ecommerce