Club robotique de Sophia-Antipolis

Accueil > Projets et études > Nos robots > Robots Eurobot > PoBot 2006 (aka Le Gobeur) > Détection de couleur

Détection de couleur

vendredi 2 juin 2006, par Eric P.

 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 :

PNG - 9.7 ko
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).

JPEG - 579.4 ko
gros plan sur un des détecteurs

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

JPEG - 640.7 ko
les internes

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.

JPEG - 68.6 ko
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.

JPEG - 98.2 ko
détecteurs en situation

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 ;)


il semble que même plusieurs années après cet article conserve sa popularité. En effet, ClubElek nous a fait l’honneur de nous référencer sur leur site : ils se sont inspirés de cette réalisation pour le détecteur d’éléments de jeu équipant leur robot 2011. Quand on voit le palmarès de leur bébé, on ne peut être qu’honoré :)

Vos commentaires

  • Le 4 janvier 2008 à 18:29, par Domi En réponse à : Détection de couleur

    Bravo pour ce concept.
    Personellement j’aurai utilisé une porte non et pour la cablage des LED, mais les 2 transistors sa fonctionne aussi.
    Utiliser le transistor interne du capteur pour gérer la fréquence de clignotement c’est vraiment bien joué.

    • Le 4 janvier 2008 à 18:52, par Eric P. En réponse à : Détection de couleur

      Les transistors offrent un gros avantage : ça prend moins de place qu’un boitier DIL qui ne serait pas rentré dans le carénage souhaité (tube électrique D16). C’est vrai qu’à l’heure du tout numérique, on a tendance à oublier les services qu’ils peuvent rendre ;-)

      Par contre je ne suis pas certain de comprendre la remarque sur l’utilisation de transistor interne. En fait, il n’est pas utilisé pour gérer l’alternance des couleurs, mais la modulation des LEDs, sur laquelle le détecteur interne est synchronisé (comme pour les IS471 de chez SHARP). C’est l’utilisation standard pour ce type de capteur à modulation de la source. L’alternance des couleurs est pilotée par le signal SELECT, géré par le MCU.

      Merci pour ta visite ;-)

      PS : fais-tu partie de l’équipe ENISE (Coupe de France de Robotique) ?

    Répondre à ce message

  • Le 21 novembre 2007 à 22:46, par bernard En réponse à : Détection de couleur

    Bonjour,

    je ne comprend pas trop votre schema car les 2 leds sont relier sur la meme commandes !
    Comment on peus s avoir la couleur si on l’éclaire de bleu et de rouge.

    Mercie en vous souhaitant un bon concour

    • Le 21 novembre 2007 à 22:56, par Eric P. En réponse à : Détection de couleur

      Bonjour,

      Si on regarde bien le schéma, on voit qu’il y a un transistor PNP et un transistor NPN pour commander les LEDs. Par conséquent quand le signal de commande est tel que l’un est passant, l’autre ne l’est pas. Et réciproquement.

    • Le 8 août 2011 à 15:56, par Telson En réponse à : Détection de couleur

      Bonjour,

      En lisant votre article, je me pose la question suivante : sur les robots tondeuses il existe des capteurs pour détecter si la zone est belle est bien du gazon à tondre....Ils utilisent des capteurs de couleurs ou d’autres systèmes ?

    • Le 8 août 2011 à 18:39, par Eric En réponse à : Détection de couleur

      Je n’en ai pas la moindre idée.

      Les seuls systèmes dont j’ai entendu parler sont basés sur la délimitation du périmètre d’évolution de la tondeuse via un câble enterré en périphérie et émettant un faible signal capté par la tondeuse lorsqu’elle est à proximité.

      Je serais surpris que des systèmes optiques soient utilisés, car ça me parait difficile de déterminer la nature de la plantation sur la seule couleur. De plus tout cela travaille dans un environnement assez salissant (il n’y a qu’à regarder le dessous du carter d’une tondeuse qui a déjà servi :) et les capteurs optiques risquent d’être à la peine dans un tel contexte.

    • Le 16 août 2011 à 17:10, par Telson En réponse à : Détection de couleur

      Effectivement, les tondeuses utilisent les Capteurs d’herbe Zucchetti...mais quel est le principe de ces capteurs ???

    • Le 22 août 2011 à 22:35, par Eric En réponse à : Détection de couleur

      Pas la moindre idée. Je n’ai pas réussi à trouver de détails sur ces capteurs d’herbe. Couleur peut-être ?

      A moins que ce ne soit tout simplement la hauteur d’herbe.

    Répondre à ce message

  • Le 5 juin 2010 à 16:48, par Pite En réponse à : Détection de couleur

    Bonjour,

    serait il possible de connaitre le distance entre le capteur et la surface à détecter ?

    merci

    • Le 6 juin 2010 à 14:23, par Julien H. En réponse à : Détection de couleur

      On était à moins d’un centimètre du sol : les tubes pouvaient être descendus pour laisser le moins de lumière parasite entrer.

    • Le 6 juin 2010 à 19:33, par Eric P. En réponse à : Détection de couleur

      J’irai mesurer sur le robot car je n’ai pas souvenir d’une distance si faible.

      Lorsque je faisais les tests en tenant le capteur à la main, il fonctionnait correctement avec une distance de l’ordre de 1 ou 2 cm.

    Répondre à ce message

  • Le 8 avril 2008 à 19:06, par Olivier En réponse à : Détection de couleur

    Bonjour,

    j’ai un souci avec votre montage. En faite, toute les couleurs sont detectés par les 2 LED. Je ne sais pas d’ou ca vient.

    Cordialement

    Répondre à ce message

  • Le 16 mars 2008 à 18:37, par Olivier En réponse à : Détection de couleur

    Bonjour,
    j’ai fais le même montage que vous avec une petite modif, j’ai mis 3 fils de selection et une LED vert (en faite j’en mis une LED 6pattes de 4couleurs) plus afin de pouvoir detecter 3 couleur rouge, bleu et blanc. J’ai mis le capteur et la LED 4couleurs dans un tube avec un cache noir sur la LED comme vous. Mais mon montage ne marche pas et je ne comprend pas pourquoi. Si vous avez une solution ca serai sympa. Merci d’avance.

    • Le 17 mars 2008 à 22:25, par Eric P. En réponse à : Détection de couleur

      Bonjour,

      Il me faudrait plus de précision sur la nature des modifications apportées au montage. Le mieux serait de m’envoyer le schéma électronique (en cliquant sur "Eric" dans la liste des auteurs en haut de l’article ou en envoyant un mail à eric at pobot dot org).

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document