Thymio réseau routier
Placement.jpg
size="square"
size="square"
size="square"

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.

States.jpg

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.

track_sample.jpg

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.

roundabout_final.jpg

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.

roundabout.jpg

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.

loc_final.jpg

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.

cross.jpg

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.

Barcode.jpg
scanning.jpg

É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.

obst_avoid2.jpg

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

obst_avoid1.jpg

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.

calibration.jpg

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.

calibration_gray.jpg

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.

BroadcastThymio.jpg

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.

GraphMap1.jpg

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

crosscontrolled.jpg

Exemple de carrefour contrôlé, le nœud du carrefour est le 0 et les entrées sont respectivement
les 1,2,3,4

discbroad1.jpg

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.

Ping1.jpg

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é.

Ping2.jpg

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.

Placement.jpg

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

| Cliquez ici

Lien vers plus d'infos

*

Commentez cette création !

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License