Thymio réseau routier
par Loïc et Benjamin
Fait avec 5+ Thymio
Mots-clés:
Robotique et algorithmes
Projets avec plusieurs Thymio
Ce projet a été réalisé dans le cadre d'un projet de semestre à l'EPFL par Loïc Dubois et Benjamin Kern.
Tout le code est disponible ici
Tous les fichiers pour les routes et les codes-barres sont ici.
Le but était de réaliser un réseau routier utilisé et surveillé par plusieurs Thymios. Un réseau routier consiste en un ensemble de lieux reliés par des routes et des intersections.
Chaque Thymio-véhicule fonctionne comme une machine d'états finis. A chaque instant, le robot se trouve dans un état et, quand les conditions le permettent, change d'état pour effectuer telle ou telle action.
Route
Dans notre cas, les routes consistent en un gradient de gris perpendiculaire au sens de la route. Pour assurer le suivi de ligne, un contrôleur P a été implémenté: en fonction du décalage par rapport à une valeur de référence, un incrément de vitesse est envoyé en plus de la vitesse nominale à chaque moteur. Afin de pouvoir tourner, l'incrément est une fois positif pour un moteur et une fois de la même valeur mais de signe opposé pour le 2ème moteur.
Intersections
Branchement
L'intersection la plus simple. Elle consiste en une division en deux du chemin: soit le robot peut aller tout droit en arrêtant de suivre la ligne pendant un certain temps, soit il continue le suivi de ligne et emprunte la courbe. Afin d'indique à quel moment appliquer le choix, un bit noir est utilisé. Comme nous n'avons pas implémenté de sens unique, un deuxième bit noir est utilisé pour passer par dessus la route venant en sens inverse.
Rond-point
Le rond-point est une généralisation du branchement en plaçant plusieurs branchement autour d'un même cercle central. Le robot peut appliquer les actions expliquées précédemment autant de fois qu'il le veut.
Parking
Les parkings sont les lieux principaux entre lesquels le robot navigue. Le principe est le même que pour un branchement: le robot peut soit continuer sa route, soit suivre la courbe et entrer dans le parking. Une fois dans celui-ci, il lira un code-barre lui indiquant son emplacement dans la carte et il marquera une courte pause. A la sortie du parking, un Thymio-feu de signalisation gère quelle voie est ouverte entre le parking et la route parallèle.
Croisement
Le croisement est l'intersection la plus compliquée. Cette fois le robot a trois choix possibles: tourner à droite, à gauche ou continuer tout droit. Chacun de ces choix implique une série d'action définie. De plus deux Thymios-feux gèrent quelle voie est ouverte pour éviter la création de bouchons.
Lecture de code-barre
Afin de transmettre de l'information aux robots, nous avons utilisé des codes-barres binaires avec un bit de synchronisation pour déclencher la lecture. Ayant prévu trois vitesses différentes pour le robot, il a fallu définir une dimension pour les bits afin qu'en adaptant la séquence d'actions, le robot puisse le lire peu importe sa vitesse.
Afin de rendre la lecture plus robuste, la séquence d'action est légèrement différente pour le premier bit après le bit de synchro que pour les suivants. En effet, le Thymio attend plus longtemps avant de lire la valeur du bit pour se trouver approximativement au milieu de celui-ci. Les codes barres peuvent contenir différents types d'informations: vitesse, type d'intersection ou alors localisation du parking.
Évitement de collision
Sur route
En utilisant les capteurs de proximité à l'avant du robot, les Thymios adaptent leur vitesse. Si un véhicule plus lent se trouve devant, le Thymio va réduire sa vitesse jusqu'à avoir la même que le véhicule devant lui. Pour ceci, nous utilisons un contrôleur P. Une fois un certain seuil du capteur franchi, le robot s'arrête complètement.
Dans les intersections sans suivi de ligne
Dans les instants sans suivi de ligne, le timing est crucial afin de récupérer la ligne au bon moment. C'est pourquoi, dans ce cas, le robot n'adapte pas sa vitesse mais s'arrête complètement pour minimiser les effets sur le compteur
Lecture de code-barre
Finalement pour la lecture, si un robot est déjà présent sur le barcode, le Thymio arrivant effectue une manœuvre de marche arrière afin de laisser au Thymio devant lui le temps de finir la lecture et d'en appliquer le résultat. Lors de la marche arrière, l'évitement d'obstacle est fait en utilisant les capteurs arrières afin d'éviter de reculer dans un autre robot.
Calibration
Il est apparu qu'en utilisant plusieurs Thymios que les moteurs et les capteurs de proximités ne donnent pas les mêmes résultats dans des conditions semblables. Nous avons donc développé une méthode pour calculer les 3 vitesses nominales et une autre pour donner la référence de gris à suivre.
Pour la calibration de vitesse, une simple piste de longueur connue est utilisée. Connaissant des valeurs de références, nous pouvons adapter les commandes de vitesse à envoyer au robot pour atteindre ces valeurs de référence.
Pour la calibration du niveau de gris, un montage avec une impression du dégradé a été fabriqué. En calant le Thymio dans la bonne position et en lisant la valeur lue par le capteur à travers Aseba, nous pouvons connaître la référence à assigner pour le suivi de ligne.
Toutes ces informations ont été stockées dans un fichier Excel afin de faciliter l'initialisation des robots lors de chaque expérience.
Gestion du Réseau et coordination
Pour le réseau final, nous avons utilisé 2 types de Thymio, les Thymios voitures et les Thymios signaux qui servent à contrôler les intersections.
Communication interthymio
Pour permettre la communication entre les Thymios, nous avons utilisé la fonction de communication de la bibliothèque de base en utilisant les capteurs IR horizontaux pour transmettre des nombres aux robots à portées. Cette communication s’apparente à un broadcast local.
Le Thymio wireless récemment développé est une alternative, et possède une portée suffisante pour
tout le circuit, mais nous n'avons pu en réunir que 4. Ils sont donc utilisé comme robots signaux.
Gestion de la carte interne
Chaque Thymio possède une représentation de la carte en interne car pour comprendre les communications, il est essentiel que chaque thymio comprenne sa position.
Elle est représentée sous forme d’un graphique orienté pour ne pas prendre trop de mémoire.
A chaque lecture de code barre, la position est mise à jour en fonction des déplacements.
Communication pour la gestion des carrefours
La gestion des carrefours est équivalente à un feu de signalisation. Elle est réalisée avec un disque de broadcast qui donne à tour de rôle l’état des routes (Ouvert ou fermé). Un disque de broadcast
consiste en un tableau d’informations fixe (Dans notre cas il est renouvelé toutes les 30 secondes
environ en fonction du cycle choisi pour le contrôle) et qui envoie ses informations une par une à
intervalles régulières en le parcourant dans l’ordre. Le principe est que lorsqu’un utilisateur cherche
une information, il écoute et sélectionne la bonne.
Pour cela j’ai défini ces conventions:
• La position du thymio dans la carte interne + 20 = vert
• La position du thymio dans la carte interne + 40 = rouge
Exemple de carrefour contrôlé, le nœud du carrefour est le 0 et les entrées sont respectivement
les 1,2,3,4
Exemple du disque de broadcast pour le carrefour de la figure16. La flèche change de position toutes les 200[ms] et parcours le disque en 800[ms]. Les informations dans le disque ne changent que lorsque la logique du signal décide qu’il est temps d'ouvrir une autre route.
Communication pour la mesure du réseau
Pour faire fonctionner un contrôle adaptatif des carrefours, il faut pouvoir mesurer la quantité de
Thymio sur la même route. La solution implémentée est un ping à incrément. À la fin d’une communication, le Thymio voiture émet automatiquement sa position + 100. Tous les Thymio voitures sur la même position vont soit réémettre le même nombre (s’ils ont déjà répondus à ce type requête récemment) soit l’incrémenter de 20 et l’émettre ensuite. Comme cela, le premier Thymio voiture finira par émettre le nombre de Thymio derrière lui.
Propagation du ping, les voitures incrémentent le signal de 20 si elles sont sur la bonne
route et qu’elles n’ont pas déjà incrémenté.
Retour du ping, les voitures retransmettent la plus haute valeur qu’elles reçoivent.
Contrôle des intersections
Au niveau du contrôle, les robots signaux sont utilisés comme des feux de signalisation. Il faut pour cela que les communications qu’ils dispensent soient correctement reçues sur toutes les routes d’arrivées dans le carrefour.
Pour pallier à la zone discontinue de communication, les robots signaux sont constitué de 2 robots Wireless posé l’un sur l’autre avec un esclave ne servant qu’à retransmettre les décisions.
Contrôle
Le contrôle utilise les mêmes méthodes qui sont utilisées dans la théorie du trafic routier. En particulier la méthode Webster pour le calcul d’un plan de feu optimum.
Plan de feux définis offline
Le calcul du cycle optimal est réalisé avant les tests et reste fixe.
Plan de feux adaptatif
Il s’agit aussi de calculer le cycle avec la formule de Webster, puis de la recalculer à chaque cycle en fonction de la demande réelle mesurée avec la méthode décrite plus haut.
Rapports
Pour de plus amples informations sur la partie bas niveau (suivi de ligne, lecture, contrôle aux intersections,…), le rapport de projet est disponible en anglais ici.
Pour des informations sur la partie haut niveau (communication, contrôle, …) le rapport est disponible en français ici.
Télécharger le code
Lien vers plus d'infos
*
Commentez cette création !