Accueil du site > Nos robots > PoBot 2006 (aka Le Gobeur)  > Détection de couleur

Les besoins

Nous avions besoin d’un système de détection de la couleur des cercles entourant les trous pour plusieurs raisons :
-  identifier si le trou était à nous ou pas
-  utiliser le cercle pour recaller la position et le cap du robot, afin de passer correctement sur le trou.

Les options possibles

Il existe des détecteurs industriels capables de donner précisément les composantes de la couleur de l’objet qu’ils regardent. Mais ils valent une fortune.

Une autre solution était d’utiliser une CMUcam pour cela (d’autres l’ont fait je crois), mais nous en avions déjà besoin pour le repérage des totems, et elle n’avait donc pas l’orientation adéquate. Quant à en mettre une deuxième, ça commençait à coûter un peu cher, et se posait aussi le problème de place. Sans compter que vu la résolution, nous n’étions pas convaincus que la précision aurait été suffisante pour atteindre les objectifs.

La solution retenue

Nous avons donc conçu un capteur maison, adapté au problème. En fait, il n’est pas nécessaire d’obtenir une information de couleur précise et générique, mais juste de savoir si on se trouve au-dessus d’une zone rouge, bleue ou autre.

Vu que les couleurs qui nous intéressent se trouvent être des primaires (au sens synthèse additive), le problème se simplifie grandement. En effet, il suffit alors d’éclairer la surface analysée avec la couleur recherchée et de mesurer la quantitié de lumière reçue par réflexion. Celle-ci sera maximale lorsque couleur de la surface et couleur de l’éclairage seront les mêmes (ou presque), en vertu du principe de physique qui explique pourquoi on voit un object d’une certaine couleur (en gros, parce qu’il absorbe toutes les autres longeurs d’onde).

La réalisation

Le capteur utilisé est un HAMAMATSU S6986 dont vous trouverez datasheet et note d’application dans la rubrique Datasheets / Détecteurs et capteurs optiques.

Il fonctionne comme le SHARP IS471F, sauf qu’il travaille dans le visible et non dans l’infra-rouge. Il est lui aussi équipé d’une sortie modulation destinée à piloter l’éclairage et ainsi s’affranchir des interférences avec d’autres capteurs et des conditions de luminosité ambiante. Il sort un signal binaire indiquant s’il y a eu détection ou non. Pour régler la sensibilité de détection, il suffit de régler le courant traversant la LED par un simple ajustable.

Puisque nous avons deux couleurs à détecter, la source de lumière est multi-chromatique. Pour des raisons de compacité, une LED RGB haut-rendement a été utilisée (encore que le prototype fonctionnait avec deux LEDs standard). Les anodes rouge et bleue sont pilotées par une paire de transistors complémentaires (BC547 et BC557) de manière à avoir un allumage exclusif des couleurs avec un seul signal de commande.

Le schéma électronique est le suivant :

Schéma électronique

L’ensemble a été packagé dans un raccord pour tube électrique de 16mm, de manière à protéger les composants, permettre une fixation facile et réglable et offrir également une protection vis à vis de l’éclairage ambiant. A noter sur ce point, que le détecteur fonctionnait très bien à l’air libre également, et qu’il a fallu peindre l’intérieur du tube en noir mat pour réduire les réflexions (qui ont engendré quelques réactions erratiques).

gros plan sur un des détecteurs

La photo ci-dessous montre un détecteur sorti de son tube.

les internes

Il est constitué de 2 platines :
-  la première, visble ici, et portant le capteur, la LED RVB et le condesnsateur de découplage de l’alim (au plus près du capteur comme conseillé par le fabricant)
-  la deuxième, qu’on devine à l’arrière de l’entretoise, portant le reste des composants de la logique de commande

Ces deux platines sont reliées par simple enfichage, de manière à pouvoir être séparées facilement en cas d’intervention. L’entretoise grise qui les sépare est un bout de tube électrique, donc la fonction est de maintenir l’ensemble à l’intérieur du tube protecteur, par simple friction.

On notera l’inévitable gainage de la LED avec de la gaine thermo afin d’éviter qu’elle n’éclaire le capteur en direct. On se rend compte de son importance quand plus rien ne marche et qu’on en cherche la raison comme un malade, jusqu’au moment où on se rend compte que le bout de gaine s’est fait la malle...

Pour faciliter les manipulations, les résistances ajustables de réglage de la puissance d’éclairage ont été déportées.

détail des ajustables de réglage

Cela s’est avéré très utile, car la peinture rouge des tables de la Coupe était un peu limite (il aurait fallu une ou deux couches de plus pour couvrir correctement le vert), et la détection de la frontière rouge/vert était peu fiable. Un petit coup de tournevis à l’ajustable correspondant avec le robot sur une des tables a résolu le problème de manière définitive.

La mise en oeuvre

Deux capteurs de ce type ont été installés en alignement avec l’axes des roues motrices, espacés d’environ 8 cm.

détecteurs en situation

Ils sont tenus en place par des lyres de fixation murale pour tube électique, permettant ainsi un réglage facile de la position par rapport au chassis du robot. Ces lyres sont elles-même montées sur une pièce en alu qui coulisse le long de l’axe des roues et s’immobilise dessus par une simple vis de pression.

Algorithmes

Les algorithmes de calage du robot utilisent les transitions couleur/vert pour faire pivoter le robot de manière à amener les 2 détecteurs sur la limite du disque, et aligner ainsi l’axe du robot avec un diamètre du trou. Selon la position relative du robot par rapport au trou au moment de son approche, plusieurs cas de figure ont été identifiés, et des séquences de mouvements adaptées ont été élaborées. Contrairement à l’idée initiale, la solution définitive utilise la sortie de la zone de couleur et non son entrée, et ce pour les raisons suivantes :
-  évite de faire 3/4 tour dans certains cas d’approche
-  effectue le calage juste avant que le dispositif de dépose ne soit au niveau du trou, réduisant ainsi l’ajustement final effectué par les capteurs I/R placés à l’arrière.

Pour tous les détails, se reporter à l’article Dépose des balles

Le coût

-  capteur HAMATSU : $4 chez Junun
-  LED RGB : 1,39€ chez TotalStyles
-  transistors : 0,30€ les 2
-  ajustables : 0,60€ les 2
-  résistances et composants divers : < 1€

Total : environ 7€ par détecteur

Le résultat

Le recalage optique n’est pas recalé :-) 100% de réussite : nous n’avons pas raté une seule dépose.

De plus, le robot nous a fait une surprise de taille (mais logique si on y réfléchit). Les stratégies employées débutaient par un parcours prédédini, passant par les trous de la couronne externe. Lors d’un match, nous avons été heurtés et déviés de notre trajectoire, et le robot s’est dirigé vers le centre du terrain. A ce moment, nous pensions que tout était perdu, car en l’absence d’odométrie, il n’avait plus aucune connaissance de sa position. Il se trouve que chemin faisant il a rencontré un trou de la couronne interne, s’est recallé dessus, a déposé sa balle et a commencer à parcourir cette nouvelle trajectoire. C’est pas beau ça ?


Répondre à cet article