Se déplacer avec une relative précision est une difficulté qui s’impose à tout mobile autonome quand il se doit de suivre un chemin précis. Pour cela il existe plusieurs techniques dont les suiveurs de ligne monochrome, les radar optique, les systèmes de triangulation, etc. Alors pourquoi ne pas également utiliser les couleurs ?
C’est ce que nous allons découvrir ensemble sous l’appellation de géolocalisation chromatique .
Les champs d’exploration
Nous allons expérimenter tour à tour :
– un lecteur de couleurs (cet atelier)
– un suivi de ligne bicolore (à venir)
– un déplacement sur le cercle chromatique (à venir)
Le capteur de couleur
Commençons par le capteur de couleurs. Le choix s’est porté sur le TCS3200 (pas le TCS3210 moins puissant) qui peut détecter et mesurer une gamme presque infinie de couleurs visibles. Il dispose d’un réseau de photodétecteurs en grille 8x8, dont 16 ont un filtre bleu, 16 ont un filtre vert, 16 ont un filtre rouge, et les 16 autres n’ont pas de filtre. Ces différents capteurs sont réparties uniformément.
Les valeurs obtenues seront une représentation proportionnelle de l’intensité lumineuse des trois teintes de bases : Rouge-Vert-Bleu et de leur somme.
Pour un résultat optimum, on placera la couleur à détecter à une distance à déterminer de telle sorte que le faisceau des quatre sources lumineuses convergent en un point unique (et qu’il n’y ait pas quatre spots lumineux distincts sur l’objet). Ici, ce qui a le mieux fonctionner c’est de plaquer les DEL de la platine pour ne laisser que 10mm entre le capteur et la zone à lire.
Sur certaines platines, une broche de commutation du système d’éclairage est disponible. Cela peut permettre d’ajouter une fonction de détection de présence...
Pour obtenir les sus-citées valeurs, un oscillateur interne produit une signal carré dont la fréquence est proportionnelle à l’intensité de la teinte sélectionnée. L’intervalle typique est 2Hz-500Khz. On peut diviser cette fréquence par 5 ou par 50. Remarque : si on utilise la fonction PulseIn de l’arduino (utilisé ici comme microcontrôleur) pour effectuer l’acquisition des valeurs RVB , il faut impérativement réduire la fréquence par 5. En effet, la période qui correspond à la fréquence typique maximum est de 1/500Khz soit 2µs, ce qui est plus petit que la valeur minimum que cette fonction peut retourner (10µs).
Un lecteur de couleurs
On se propose de réaliser dans un premier temps un discriminateur six couleurs plus noir, gris, blanc.
Pour cela on va utiliser :
– un capteur de couleurs basé sur la puce TCS3210
– une carte arduino, dans cet exemple la DFRduino Romeo V2 (R3)
– 8 câbles pour platine d’expérimentation
Il faut réaliser le montage suivant :
Remarque : Le schéma tient compte du brochage maximum.
Passons à l’algorithme.
Nous allons lire tour à tour les quatre valeurs du capteur puis appliquer une transformation RVB vers TSL de façon à extraite la teinte.
n.b. pour plus d’informations sur les couleurs, il y a cet excellent article.
On déterminera en premier s’il s’agit de noir, de gris ou de blanc, de façon empirique, en se basant sur la composante -lumière- ; puis la teinte directement depuis la valeur issue de la transformation.
Vous trouverez le code ici.
Étape suivante
Lors du prochain article nous verrons comment mettre à profit cette détection des teintes pour faire suivre une ligne à un mobile équipé d’un seul capteur, sans pour autant qu’il perde le fil de son trajet :) ...
à suivre...