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 recaler 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 quantité 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 objet d’une certaine couleur (en gros, parce qu’il absorbe toutes les autres longueurs 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 :
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).
La photo ci-dessous montre un détecteur sorti de son tube.
Il est constitué de 2 platines :
– la première, visible ici, et portant le capteur, la LED RVB et le condensateur 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.
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.
Ils sont tenus en place par des lyres de fixation murale pour tube électrique, permettant ainsi un réglage facile de la position par rapport au châssis 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 HAMAMATSU : $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éfini, 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 recalé dessus, a déposé sa balle et a commencer à parcourir cette nouvelle trajectoire. C’est pas beau ça ?
Et depuis...
Plusieurs équipes se sont inspirées de cette détection de couleur suite aux très bons résultats que nous avions obtenus.
– C’est le cas de ISTY Mécatronique : tests des capteurs "magiques".
– Egalement celui de l’Ecole Centrale de Nantes : Cartes du robot 2008
Edit 06/06/10 : il semble que les liens ci-dessus ne sont plus valides. Peut-être les documentations des robots concernés sont-elles disponibles ailleurs. Google sera certainement ton ami ;)