BE 2011-2012 : Différence entre versions

De Wiki de bureau d'études PeiP
(Robot suiveur de ligne)
(Notation)
 
(104 révisions intermédiaires par 10 utilisateurs non affichées)
Ligne 6 : Ligne 6 :
 
= Matériel à votre disposition =
 
= Matériel à votre disposition =
  
Ce type de robot très communicant et relativement intelligent peut être réalisé à partir de chassis adaptés controlés par un système embarqué complet de type [http://www.acmesystems.it/foxg20/doku.php FoxBoard]. Cela dit pour un bureau d'études pré-cycle ingénieur il faut utiliser des outils plus accessibles. Les couches basses du robot seront réalisées à l'aide de lego MindStorm. Le lego va permettre de réaliser le chassis avec sa motorisation et d'y installer des capteurs divers. Il est même possible d'assurer une certaine communication entre les robots et le contrôleur grâce à la technologie bluetooth intégrée au micro-contrôleur MindStorm. [[Image:boite_mindstorm.jpg|thumb]] Pour aller plus loin il sera certainement nécessaire d'embarquer un micro-PC de type FoxBoard sur le robot. C'est ce micro-PC qui pourra faire les acquisitions d'images ou les analyses Wifi et c'est à lui que le micro-contrôleur du MindStorm pourra envoyer ses données de localisation.
+
[[Image:boite_mindstorm.jpg|150px|right]]
 +
[[Image:foxboard.jpg|150px|left]]
 +
Les couches basses du robot seront réalisées à l'aide de Lego MindStorm. Le Lego va permettre de réaliser le chassis avec sa motorisation et d'y installer divers capteurs. Il est même possible d'assurer une certaine communication entre robots grâce à la technologie <tt>bluetooth</tt> intégrée au micro-contrôleur MindStorm. Pour aller plus loin, il est nécessaire d'embarquer un micro-PC de type FoxBoard sur le robot. C'est ce micro-PC qui fera faire les acquisitions d'images ou les analyses WiFi et c'est à lui que le micro-contrôleur du MindStorm pourra envoyer ses données de localisation.
 +
 
 +
<br style="clear: both" />
  
 
= Répartition des tâches =
 
= Répartition des tâches =
  
Chaque binôme va se voir affecter une des problématiques décrites dans les précédentes sections. Par la suite les résultats devront être incorporés dans chaque robot pour obtenir un robot tel que décrit plus haut. Notez que tous les robots doivent savoir s'arrêter quand un obstacle se présente devant eux (utilisation du sonar MindStorm).
+
Chaque binôme va se voir affecter une des problématiques décrites dans les sous-sections suivantes. Par la suite les résultats devront être incorporés dans chaque robot pour obtenir un robot tel que décrit plus haut. Notez que tous les robots doivent savoir s'arrêter quand un obstacle se présente devant eux (utilisation du sonar MindStorm).
  
 
== Robot suiveur de ligne ==
 
== Robot suiveur de ligne ==
 
Vous devez créer un robot capable de suivre une courbe discontinue au sol. Le robot doit être capable de réaliser les actions ci-dessous.
 
Vous devez créer un robot capable de suivre une courbe discontinue au sol. Le robot doit être capable de réaliser les actions ci-dessous.
* se remettre l'axe du marquage lorsque ce marquage est retrouvé ;
+
* en cas de perte du marquage, tourner dans un sens puis dans l'autre pour tenter de le retrouver avec des angles de plus en plus grands ;
 +
* si le marquage ne peut pas être retrouvé, se remettre dans la position de la perte initiale et partir tout droit ;
 +
* se remettre dans l'axe du marquage lorsque ce marquage est retrouvé ;
 
* s'arrêter quand un obstacle se présente devant lui et repartir si l'obstacle disparait ;
 
* s'arrêter quand un obstacle se présente devant lui et repartir si l'obstacle disparait ;
* changer de parcours, c'est à dire emprunter un parcours d'une couleur différente dès qu'il est rencontré ;
+
* changer de parcours sur commande, c'est à dire emprunter un parcours d'une couleur différente dès qu'il est rencontré ;
 +
* inverser son sens de parcours.
 +
 
 +
Voici des exemples de parcours discontinus pouvant être suivis dans les deux sens.
 +
<gallery>
 +
File:Parcours-carre.png|Parcours carré
 +
File:Parcours-cercle.png‎|Parcours avec arcs
 +
</gallery>
 +
 
 +
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Ombeline Rossi, Mélanie Hautecoeur </td>
 +
  <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Scotch de couleur</span> </td>
 +
  <td> [[SuiveurLigne2011-1|Robot suiveur de ligne 1]] </td>
 +
</tr>
 +
</table>
  
Matériel: %GREEN%boite lego %NOP%MindStorm%ENDCOLOR%, %ORANGE%scotch de couleur%ENDCOLOR%.
 
  
 
== Robots synchronisés ==
 
== Robots synchronisés ==
Cette étude sera menée par deux binômes. Vos deux robots doivent être capables de se synchroniser. Les robots démarrent avec une trajectoire pré-programmée (par exemple un large cercle) et envoient un message dès qu'un obstacle se présente à eux. Le robot recevant le message doit s'arrêter lui aussi. Quand l'obstacle s'efface les deux robots repartent. La communication entre les deux robots se fait par =bluetooth=. Etudiez le problème de la perte de signal et sous quelles conditions les robots peuvent se remettre a communiquer quand ils reviennent à portée.
+
Cette étude sera menée par deux binômes. Vos deux robots doivent être capables de se synchroniser. Il vous est demandé de réaliser le comportement suivant :
  
Matériel: %GREEN%2 boites lego %NOP%MindStorm%ENDCOLOR%.
+
* séparés, les robots avancent tout droit et s'arrêtent dès qu'ils détectent un obstacle avec leur sonar ;
 +
* les deux robots doivent pouvoir être couplés côte à côte ;
 +
* dans le mode couplé, les robots avancent quand aucun obstacle n'est détecté par leurs sonars ;
 +
* dans le mode couplé, si un robot détecte un obstacle et l'autre non le couple tourne dans la direction où aucun obstacle n'est détecté.
 +
 
 +
La communication entre les deux robots se fait par <tt>bluetooth</tt>.
 +
 
 +
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Nathan Martin, Charlotte Bricout  </td>
 +
  <td> <span style="color:green">Boite lego MindStorm</span> </td>
 +
  <td> [[Synchronize2011-1|Robot communicant 1]] </td>
 +
</tr>
 +
<tr>
 +
  <td>  Jérémy Gondry, Richard Verheyde</td>
 +
  <td> <span style="color:green">Boite lego MindStorm</span> </td>
 +
  <td> [[Synchronize2011-2|Robot communicant 2]] </td>
 +
</tr>
 +
</table>
  
 
== Robot suiveur RFID ==
 
== Robot suiveur RFID ==
Vous doterez votre robot d'un lecteur RFID. Votre robot devra suivre les tags RFID posés au sol. La difficulté consiste à trouver le tag suivant. Dans un premier temps vous pourrez supposer que la trajectoire est une ligne brisée avec des angles entre les segments connus. Par la suite il faudra trouver un algorithme pour trouver le tag suivant le plus proche sans faire d'hypothèse particulière. La direction de la trajectoire doit être prise en compte dans cet algorithme.
+
Vous doterez votre robot d'un lecteur RFID et d'une boussole. Votre robot doit être capable de réaliser les opérations ci-après :
  
Matériel: %GREEN%boite lego %NOP%MindStorm%ENDCOLOR%, %GREEN%module RFID%ENDCOLOR%.
+
* trouver sous une marque de couleur précise (feuille A4, disque, ...) une carte RFID ;
 +
* partir dans une direction donnée ; le robot s'oriente avec la boussole puis se lance avec ses deux moteurs sans tenter de corriger la trajectoire ;
 +
* mémoriser des caps en fonction des identifiants des cartes RFID.
 +
 
 +
Par la suite vous intégrez ces trois fonctionnalités pour obtenir un robot capable de suivre une trajectoire matérialisée par des marques sous lesquelles une carte RFID est dissimulée.
 +
Quand le robot détecte une marque via son capteur de couleur, il se met à chercher l'emplacement exact de la carte RFID. Une fois la carte localisée, le robot trouve le prochain cap à suivre en fonction de l'identifiant de la carte RFID. Le robot s'oriente sur ce cap avec sa boussole puis se lance vers la marque suivante. Et ainsi de suite.
 +
 
 +
Voici un exemple de parcours en suivant des marques RFID.
 +
<gallery>
 +
File:Parcours-marques.png|Parcours RFID
 +
</gallery>
 +
 
 +
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Florian Lemaire, Victor Sallé </td>
 +
  <td> <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Module RFID</span>, <span style="color: green;">Cartes RFID</span>, <span style="color: green;">module boussole</span>,  <span style="color: red;">Marques de couleur</span> </td>
 +
  <td> [[SuiveurRFID2011-1|Robot suiveur RFID 1]] </td>
 +
</tr>
 +
</table>
  
 
== Robot naviguant aux instruments ==
 
== Robot naviguant aux instruments ==
Vous doterez votre robot d'un gyroscope et d'un accéléromètre pour lui permettre de se situer avec précision dans l'espace. Votre robot sera déposé au point "origine" et de là sera capable de donner, en intégrant son accélération et en maitrisant ses rotations, à tout moment, sa position cartésienne par rapport au point "origine". Votre robot suivra une trajectoire aléatoire pour mieux tester vos algorithmes de calcul de position. La position (X,Y) doit être affichée sur l'écran LCD du micro-contrôleur.
+
Vous doterez votre robot d'une boussole pour lui permettre de connaitre précisement sa direction. Vous devez réaliser les actions décrites dans la suite.
 +
 
 +
* Vous commencerez par faire en sorte que votre robot sache avancer en ligne droite, pour cela vous utiliserez le contrôle PID décrit sur la page [http://wikipedia.org/wiki/PID_controller WikiPedia]. Pour simplifier ce qui est dit sur cette page, sachez le principe appliqué à votre robot va être d'effectuer des corrections sur la trajectoire en utilisant des rotations. L'angle de ces rotations va être calculé en fonction de l'erreur de trajectoire indiqué par la boussole. Plus exactement par la somme d'une constante multipliée par l'erreur instantanée, d'une autre constante multipliée par l'intégrale de l'erreur et enfin d'une dernière constante multipliée par la dérivée de l'erreur. A vous de trouver les valeurs adaptées des trois constantes.
 +
 
 +
* Par la suite faites en sorte que votre robot sache contourner les obstacles au plus juste. Au plus juste signifiant qu'il tournera vers la droite ou vers la gauche en jugeant d'où se trouve le chemin le plus libre. L'algorithme a appliquer consiste à tourner le robot d'un angle faible dans un sens puis dans l'autre et de lire les resultats du sonar. Si les deux mesures indiquent un obstacle trop proche, l'angle est augmenté et le procédé répété. Dès qu'une trajectoire indique un chemin libre ou du moins un obstacle à distance suffisante, le robot avance en ligne droite suivant cette trajectoire. La boussole doit être utilisée ici pour vérifier que le robot effectue précisement des rotations des angles souhaités et qu'il sache revenir en position initiale pour éventuellement recommencer avec un angle plus grand.
  
Matériel: %GREEN%boite lego %NOP%MindStorm%ENDCOLOR%, %GREEN%capteur accéléromètre%ENDCOLOR%, %GREEN%module gyroscope%ENDCOLOR%.
+
* Pour permettre de suivre le comportement du robot, faites afficher sur la brique de contrôle MindStorm l'angle de rotation pour le dernier contournement et la distance parcourue le long de la dernière ligne droite.
 +
 
 +
Intégrez les comportements pour obtenir un robot capable de contourner les obstacles avec un minimum d'intelligence.
 +
 
 +
Voici un exemple de contournement d'obstacle avec l'algorithme décrit.
 +
<gallery>
 +
File:Parcours-boussole.png|Contournement d'obstacle
 +
</gallery>
 +
 
 +
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Olivier Tailliez, Antoine Fossey</td>
 +
  <td> <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Module boussole</span> </td>
 +
  <td> [[Boussole2011-1|Robot boussole 1]] </td>
 +
</tr>
 +
</table>
  
 
== Robot téléguidé avec système embarqué ==
 
== Robot téléguidé avec système embarqué ==
Votre robot doit pouvoir être radio-guidé par un contrôleur. Le dit contrôleur peut diriger le robot au vu de l'image de la webcam embarquée. L'acquisition de la webcam et sa diffusion par Wifi est assuré par un système embarqué %NOP%FoxBoard. La %NOP%FoxBoard vous sera livrée configurée mais il faudra étudier la possibilité de l'alimenter sans secteur (une piste à explorer est l'utilisation d'un boitier à piles pour alimenter des périphériques USB). Un calcul du temps d'autonomie doit être effectué. Dans un premier temps le radio-guidage peut se faire à l'aide du logiciel %NOP%MindStorm par =bluetooth=. Dans un second temps il faut étudier la possibilité d'un radio-guidage par Wifi, les ordres étant reçus par la %NOP%FoxBoard puis transmis au micro-contrôleur %NOP%MindStorm. Ce dernier point nécessite de régler un certain nombre de problèmes dont connecter 3 périphériques USB sur la %NOP%FoxBoard et faire communiquer la %NOP%FoxBoard et le micro-contrôleur %NOP%MindStorm par =bluetooth=. Pour établir cette communication, il sera peut être nécessaire de passer à une programmation plus bas niveau. Consultez la page web http://vikram.eggwall.com/computers/nxt.html.
+
Votre robot doit pouvoir être radio-guidé par un contrôleur. Le dit contrôleur peut diriger le robot au vu de l'image de la webcam embarquée. L'acquisition de la webcam et sa diffusion par WiFi est assuré par un système embarqué FoxBoard. La FoxBoard vous sera livrée configurée mais il faudra l'embarquer dans votre robot avec tous ses accessoires (webcam, module <tt>bluetooth</tt>, boitier de piles). Un calcul du temps d'autonomie doit être effectué. Dans un premier temps le radio-guidage peut se faire à l'aide du logiciel MindStorm par <tt>bluetooth</tt>. Dans un second temps il faut étudier la possibilité d'un radio-guidage par WiFi, les ordres étant transmis par un navigateur Web au serveur Web de la FoxBoard puis transmis au micro-contrôleur MindStorm par <tt>bluetooth</tt>. Vous aurez le choix de programmer votre robot avec le logiciel MindStorm ou avec un langage de bas niveau proche du langage C (voir la page web [http://www.eggwall.com/2011/08/lego-nxt-mindstorm-with-linux.html]).
  
Matériel: %GREEN%boite lego %NOP%MindStorm%ENDCOLOR%, %GREEN%eeePC avec convertisseur =bluetooth= %ENDCOLOR%, %GREEN%%NOP%FoxBoard avec webcam, interface Wifi, convertisseur =bluetooth= %ENDCOLOR%, %GREEN%boitier piles%ENDCOLOR%.
+
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Jean-Dominique Lancieri, Thomas Maurice </td>
 +
  <td>  <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Téléphone Android</span>, <span style="color: green;">FoxBoard avec webcam, interface WiFi, convertisseur <tt>bluetooth</tt></span>, <span style="color: green;">Boitier piles</span> </td>
 +
  <td> [[Teleguide2011-1|Robot téléguidé 1]] </td>
 +
</tr>
 +
<tr>
 +
  <td> Florian Royer, Benoît Maliar </td>
 +
  <td>  <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Téléphone Android</span>, <span style="color: green;">FoxBoard avec webcam, interface WiFi, convertisseur <tt>bluetooth</tt></span>, <span style="color: green;">Boitier piles</span> </td>
 +
  <td> [[Teleguide2011-2|Robot téléguidé 2]] </td>
 +
</tr>
 +
<tr>
 +
  <td> Manon Barrois, Fabien Violier </td>
 +
  <td>  <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Téléphone Android</span>, <span style="color: green;">FoxBoard avec webcam, interface WiFi, convertisseur <tt>bluetooth</tt></span>, <span style="color: green;">Boitier piles</span> </td>
 +
  <td> [[Teleguide2011-3|Robot téléguidé 3]] </td>
 +
</tr>
 +
</table>
  
 
= Intégration des fonctionnalités =
 
= Intégration des fonctionnalités =
Une fois toutes les études terminées et les solutions implantées (sous forme de briques personnalisées par exemple), vous doterez votre robot des fonctionnalités nécessaires à la réalisation de la démonstration finale. Votre robot devra être capable de suivre des marquages discontinus au sol, être capable de communiquer avec les autres robots, d'embarquer une FoxBoard avec une connexion Wifi et une webcam, être capable de se repérer dans l'espace et enfin pouvoir être contrôlé à distance par un humain. Pour la partie repérage dans l'espace vous avez le choix de vous reposer sur une lecture d'informations au sol, sur le repérage de tag RFID (deux détecteurs disponibles), sur le calcul aux instruments (1 gyroscope et 2 accéléromètres disponibles) ou le repérage de sons particuliers (2 capteurs de sons possibles). Ces méthodes peuvent être complétées par des heuristiques de localisation en fonction des tours de roues et des angles de rotations.
+
Une fois toutes les études terminées et les solutions implantées (sous forme de briques personnalisées par exemple), vous doterez votre robot des fonctionnalités nécessaires à la réalisation de la démonstration finale. Votre robot doit être capable de suivre des marquages discontinus au sol, être capable de communiquer avec les autres robots, être capable de se repérer dans l'espace en repérant des cartes RFID et enfin doit embarquer une FoxBoard avec une connexion WiFi et une webcam.
  
Pour configurer la FoxBoard avec tout le matériel nécessaire, suivez les [[FoxBoard pour MindStorm|instructions]].
+
Les robots peuvent se trouver soit dans un mode autonome soit dans un mode téléguidé. Dans le mode téléguidé, le robot est contrôlé à l'aide d'un téléphone Android connecté sur le réseau WiFi de l'école. Il doit être possible de le faire avancer, reculer ou tourner. Il doit être possible aussi d'obtenir une image de la webcam.
  
Pour une description du système à obtenir suivez la [[FoxBoard MindStorm système|flèche]].
+
Le comportement en mode autonome est plus complexe :
 +
* le robot tente de suivre un marquage de couleur au sol, ce marquage peut être discontinu, la boussole est utilisée pour passer en ligne droite d'un marquage à l'autre et pour suivre les marquages ;
 +
* le contrôleur peut demander à un robot de changer de sens de parcours ou de changer de couleur de parcours ;
 +
* les robots communiquent à leur FoxBoard la couleur du parcours suivi, le dernier tag RFID détecté et la position de leur boussole ;
 +
* ces informations sont diffusées entre les FoxBoard, elles sont aussi capable d'indiquer la position des robots sur une carte ;
 +
* quand une FoxBoard s'aperçoit qu'un parcours est utilisé par moins de robots qu'un autre parcours, elle peut demander à son robot de changer de couleur de parcours pour équilibrer le nombre de robots.
  
[[Image:img_circuit.jpg|thumb]]
+
<table border="1">
 +
<tr> <th>Matériel</th>
 +
    <td>Boite lego MindStorm</td>
 +
    <td>Module RFID</td>
 +
    <td>Module boussole</td>
 +
    <td>Téléphone Android</td>
 +
    <td>FoxBoard</td>
 +
    <td>WebCam</td>
 +
    <td>Adaptateur USB/WiFi</td>
 +
    <td>Adaptateur BlueTooth</td>
 +
    <td>Hub USB</td>
 +
    <td>Boitier piles</td>
 +
    <td>Piles rechargeables</td>
 +
</tr>
 +
<tr> <th>Nombre</th>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">8/8 (deux non testés)</span></td>
 +
    <td><span style="color: green;">8/8</span></td>
 +
    <td><span style="color: green;">100/100</span></td>
 +
</tr>
 +
</table>
 +
 
 +
Pour configurer la FoxBoard avec tout le matériel nécessaire, suivez les [[FoxBoard pour MindStorm 2012|instructions]].
 +
 
 +
Pour une description du système à obtenir suivez la [[FoxBoard MindStorm système 2012|flèche]].
  
 
= Démonstration finale =
 
= Démonstration finale =
Pour la démonstration finale vous tracerez un parcours constitué de deux courbes fermées reliées par deux bretelles de communication (parcours rouge et bleu). Ajoutez à ce parcours trois voies de garage, deux conduisant à des stations de rechargement factices (parcours vert) et la dernière à une voie de stockage (parcours jaune). Le parcours doit, bien entendu, être constitué d'un marquage au sol discontinu. Vous placerez vos six robots complets sur l'une des courbes fermées. Les robots doivent cheminer un certain temps sur cette courbe (l'occasion de vérifier le bon suivi du marquage au sol et que les robots savent tenir leurs distances). Par la suite le contrôleur doit ordonner à trois robots de passer sur l'autre courbe fermée par une des bretelles. La encore, les robots doivent cheminer un certain temps sur leurs parcours distincts. Sur chaque courbe, le contrôleur ordonne à un robot de changer de sens de parcours. Les robots devraient se bloquer. Le contrôleur inverse le sens de parcours des autres robots pour débloquer la situation. Le contrôleur ordonne enfin à chaque robot d'aller se recharger. Les robots cherchent donc sur leurs parcours un embranchement vers une voie de chargement, suivent la voie jusqu'au bout et attendent un certain temps. Attention les robots ne s'engagent sur une voie de chargement que si d'autres robots ne les occupent pas (communication entre robots). Si les voies de chargement sont occupées, les robots vont attendre sur la voie de stockage (les robots en question verifient de temps en temps pour voir si une voie de rechargement devient libre). Pendant cette démonstration, le contrôleur prend parfois le contrôle total d'un robot et le promène un peu, le robot devant ensuite retrouver automatiquement le parcours le plus proche.
+
Pour la démonstration finale vous tracerez une grande piste comprenant au moins deux parcours (voir schéma ci-dessous). Des cartes RFID doivent être disposées en des points précis de chaque parcours. Vous placerez vos robots sur l'un des parcours, tous orientés dans le même sens. Les robots vont cheminer un certain temps sur ce parcours (l'occasion de vérifier le bon suivi du marquage au sol et que les robots savent tenir leurs distances). Ils doivent ensuite se répartir automatiquement sur les deux parcours disponibles. Un contrôleur ordonne à son robot de changer de sens de parcours. Les robots devraient se bloquer. Le contrôleur téléguide le robot pour le sortir du parcours, les autres robots devraient se débloquer.
 +
 
 +
Voici un exemple de double parcours.
 +
<gallery>
 +
File:Parcours-double.png|Parcours double
 +
</gallery>
 +
 
 +
= Notation =
 +
 
 +
{| class="wikitable"
 +
! Noms !! Partie I !! Partie II !! Rapport Wiki !! Soutenance vidéo !! Total
 +
|-
 +
| Ombeline Rossi, Mélanie Hautecoeur
 +
| Programme graphique, aidées, objectif atteint <br/> 80%
 +
| Téléguidage complet et suivi de ligne intégrés <br/> 66%
 +
| Rapport partie I correct, rien sur la seconde partie <br/> 66%
 +
| Discours tout à fait correct dans la vidéo <br/> 80%
 +
| 75% (15/20)
 +
|-
 +
| Nathan Martin, Charlotte Bricout
 +
| Programme graphique, objectifs atteints, un peu d'aide <br/> 90%
 +
| Un programme de téléguidage complet, un programme de suivi de ligne avec positionnement RFID <br/> 100%
 +
| Excellent rapport sur le Wiki pour les deux parties <br/> 100%
 +
| Discours particulièrement pédagogique dans la vidéo <br/> 100%
 +
| 100% (20/20)
 +
|-
 +
| Jérémy Gondry, Richard Verheyde
 +
| Programme graphique, objectifs atteints, aidés par les encadrants et l'autre groupe <br /> 80%
 +
| Un programme téléguidage et suivi de ligne, un programme d'envoi d'informations <br /> 80%
 +
| Rapport correct sur le Wiki, un cran en dessous de celui de l'autre groupe <br /> 80%
 +
| Discours hésitant dans la vidéo <br /> 75%
 +
| 80% (16/20)
 +
|-
 +
| Florian Lemaire, Victor Sallé
 +
| Programme graphique, objectifs atteints malgré la complexité, un peu d'aide <br /> 90%
 +
| Téléguidage complet et suivi de ligne <br /> 66%
 +
| Rapport très correct sur la première partie, rien sur la seconde <br /> 66%
 +
| Discours un peu heurté sur la vidéo, une explication du logiciel MindStorm intéressant <br /> 75%
 +
| 75% (15/20)
 +
|-
 +
| Olivier Tailliez, Antoine Fossey
 +
| Programme graphique, objectif atteint (même si le son sur la vidéo laisse dubitatif) <br /> 80%
 +
| Téléguidage, suivi de ligne <br/> 66%
 +
| Page Wiki sous forme chronologique, manque un peu de profondeur <br /> 70%
 +
| Discours correct dans la vidéo <br /> 80%
 +
| 75% (15/20)
 +
|-
 +
| Jean-Dominique Lancieri, Thomas Maurice
 +
| Programmes C, C++ et NXC, objectifs largement dépassés <br /> 150%
 +
| Téléguidage et suivi de ligne <br /> 75%
 +
| Très bon rapport pour la première partie (description des bibliothèque écrites en supplément), rien sur la seconde partie <br /> 75%
 +
| Discours tout à fait correct dans la vidéo <br /> 80%
 +
| 95% (19/20)
 +
|-
 +
| Florian Royer, Benoît Maliar
 +
| Programme NXC, objectifs atteints avec de l'aide <br /> 100%
 +
| Téléguidage, suivi de ligne, remontée des informations (non intégré), de l'aide :-) <br /> 80%
 +
| On aurait aimé un rapport sur le Wiki un peu plus dense en informations <br /> 70%
 +
| Discours tout à fait correct dans la vidéo <br /> 85%
 +
| 85% (17/20)
 +
|-
 +
| Manon Barrois, Fabien Violier
 +
| Programme graphique, beaucoup d'aide <br /> 66%
 +
| Téléguidage, suivi de lignes, aide des autres binômes <br /> 66%
 +
| Rapport avec explications parfois approximatives, un bon schéma, rien sur la partie II <br /> 50%
 +
| Vidéo assez peu convaincante <br /> 66%
 +
| 60% (12/20)
 +
|}

Version actuelle datée du 4 juin 2012 à 10:44

But à atteindre

Ce bureau d'étude a comme finalité la construction de robots patrouilleurs. Ces robots doivent parcourir de façon semi-autonome un espace en accumulant des données. Ces données peuvent être, par exemple, des images de leur environnement ou le résultat d'écoutes WiFi. Un robot semi-autonome est un robot capable de se déplacer dans son espace sans intervention humaine en suivant un balisage quelconque (marquage au sol, tags RFID, sons particuliers, etc). Un humain doit cependant pouvoir prendre le contrôle partiel ou total d'un robot. Le contrôle partiel consiste à faire varier la vitesse du robot, le sens du parcours du robot, etc. Le contrôle total consiste à gérer complétement le déplacement du robot, même si ce dernier évite encore les collisions (que le contrôleur pourrait ne pas avoir pu prévoir). Les robots doivent aussi pouvoir communiquer entre eux pour s'échanger des informations de positionnement, pour pouvoir s'éviter ou pour pouvoir se regrouper (par exemple pour pouvoir explorer en détail un lieu particulier). A ce propos il est fondamental que les robots sachent se positionner pour pouvoir annoter les informations envoyées ou stockées (images ou données).


Matériel à votre disposition

Boite mindstorm.jpg
Foxboard.jpg

Les couches basses du robot seront réalisées à l'aide de Lego MindStorm. Le Lego va permettre de réaliser le chassis avec sa motorisation et d'y installer divers capteurs. Il est même possible d'assurer une certaine communication entre robots grâce à la technologie bluetooth intégrée au micro-contrôleur MindStorm. Pour aller plus loin, il est nécessaire d'embarquer un micro-PC de type FoxBoard sur le robot. C'est ce micro-PC qui fera faire les acquisitions d'images ou les analyses WiFi et c'est à lui que le micro-contrôleur du MindStorm pourra envoyer ses données de localisation.


Répartition des tâches

Chaque binôme va se voir affecter une des problématiques décrites dans les sous-sections suivantes. Par la suite les résultats devront être incorporés dans chaque robot pour obtenir un robot tel que décrit plus haut. Notez que tous les robots doivent savoir s'arrêter quand un obstacle se présente devant eux (utilisation du sonar MindStorm).

Robot suiveur de ligne

Vous devez créer un robot capable de suivre une courbe discontinue au sol. Le robot doit être capable de réaliser les actions ci-dessous.

  • en cas de perte du marquage, tourner dans un sens puis dans l'autre pour tenter de le retrouver avec des angles de plus en plus grands ;
  • si le marquage ne peut pas être retrouvé, se remettre dans la position de la perte initiale et partir tout droit ;
  • se remettre dans l'axe du marquage lorsque ce marquage est retrouvé ;
  • s'arrêter quand un obstacle se présente devant lui et repartir si l'obstacle disparait ;
  • changer de parcours sur commande, c'est à dire emprunter un parcours d'une couleur différente dès qu'il est rencontré ;
  • inverser son sens de parcours.

Voici des exemples de parcours discontinus pouvant être suivis dans les deux sens.

Elèves Matériel Page
Ombeline Rossi, Mélanie Hautecoeur Boite lego MindStorm, Scotch de couleur Robot suiveur de ligne 1


Robots synchronisés

Cette étude sera menée par deux binômes. Vos deux robots doivent être capables de se synchroniser. Il vous est demandé de réaliser le comportement suivant :

  • séparés, les robots avancent tout droit et s'arrêtent dès qu'ils détectent un obstacle avec leur sonar ;
  • les deux robots doivent pouvoir être couplés côte à côte ;
  • dans le mode couplé, les robots avancent quand aucun obstacle n'est détecté par leurs sonars ;
  • dans le mode couplé, si un robot détecte un obstacle et l'autre non le couple tourne dans la direction où aucun obstacle n'est détecté.

La communication entre les deux robots se fait par bluetooth.

Elèves Matériel Page
Nathan Martin, Charlotte Bricout Boite lego MindStorm Robot communicant 1
Jérémy Gondry, Richard Verheyde Boite lego MindStorm Robot communicant 2

Robot suiveur RFID

Vous doterez votre robot d'un lecteur RFID et d'une boussole. Votre robot doit être capable de réaliser les opérations ci-après :

  • trouver sous une marque de couleur précise (feuille A4, disque, ...) une carte RFID ;
  • partir dans une direction donnée ; le robot s'oriente avec la boussole puis se lance avec ses deux moteurs sans tenter de corriger la trajectoire ;
  • mémoriser des caps en fonction des identifiants des cartes RFID.

Par la suite vous intégrez ces trois fonctionnalités pour obtenir un robot capable de suivre une trajectoire matérialisée par des marques sous lesquelles une carte RFID est dissimulée. Quand le robot détecte une marque via son capteur de couleur, il se met à chercher l'emplacement exact de la carte RFID. Une fois la carte localisée, le robot trouve le prochain cap à suivre en fonction de l'identifiant de la carte RFID. Le robot s'oriente sur ce cap avec sa boussole puis se lance vers la marque suivante. Et ainsi de suite.

Voici un exemple de parcours en suivant des marques RFID.

Elèves Matériel Page
Florian Lemaire, Victor Sallé Boite lego MindStorm, Module RFID, Cartes RFID, module boussole, Marques de couleur Robot suiveur RFID 1

Robot naviguant aux instruments

Vous doterez votre robot d'une boussole pour lui permettre de connaitre précisement sa direction. Vous devez réaliser les actions décrites dans la suite.

  • Vous commencerez par faire en sorte que votre robot sache avancer en ligne droite, pour cela vous utiliserez le contrôle PID décrit sur la page WikiPedia. Pour simplifier ce qui est dit sur cette page, sachez le principe appliqué à votre robot va être d'effectuer des corrections sur la trajectoire en utilisant des rotations. L'angle de ces rotations va être calculé en fonction de l'erreur de trajectoire indiqué par la boussole. Plus exactement par la somme d'une constante multipliée par l'erreur instantanée, d'une autre constante multipliée par l'intégrale de l'erreur et enfin d'une dernière constante multipliée par la dérivée de l'erreur. A vous de trouver les valeurs adaptées des trois constantes.
  • Par la suite faites en sorte que votre robot sache contourner les obstacles au plus juste. Au plus juste signifiant qu'il tournera vers la droite ou vers la gauche en jugeant d'où se trouve le chemin le plus libre. L'algorithme a appliquer consiste à tourner le robot d'un angle faible dans un sens puis dans l'autre et de lire les resultats du sonar. Si les deux mesures indiquent un obstacle trop proche, l'angle est augmenté et le procédé répété. Dès qu'une trajectoire indique un chemin libre ou du moins un obstacle à distance suffisante, le robot avance en ligne droite suivant cette trajectoire. La boussole doit être utilisée ici pour vérifier que le robot effectue précisement des rotations des angles souhaités et qu'il sache revenir en position initiale pour éventuellement recommencer avec un angle plus grand.
  • Pour permettre de suivre le comportement du robot, faites afficher sur la brique de contrôle MindStorm l'angle de rotation pour le dernier contournement et la distance parcourue le long de la dernière ligne droite.

Intégrez les comportements pour obtenir un robot capable de contourner les obstacles avec un minimum d'intelligence.

Voici un exemple de contournement d'obstacle avec l'algorithme décrit.

Elèves Matériel Page
Olivier Tailliez, Antoine Fossey Boite lego MindStorm, Module boussole Robot boussole 1

Robot téléguidé avec système embarqué

Votre robot doit pouvoir être radio-guidé par un contrôleur. Le dit contrôleur peut diriger le robot au vu de l'image de la webcam embarquée. L'acquisition de la webcam et sa diffusion par WiFi est assuré par un système embarqué FoxBoard. La FoxBoard vous sera livrée configurée mais il faudra l'embarquer dans votre robot avec tous ses accessoires (webcam, module bluetooth, boitier de piles). Un calcul du temps d'autonomie doit être effectué. Dans un premier temps le radio-guidage peut se faire à l'aide du logiciel MindStorm par bluetooth. Dans un second temps il faut étudier la possibilité d'un radio-guidage par WiFi, les ordres étant transmis par un navigateur Web au serveur Web de la FoxBoard puis transmis au micro-contrôleur MindStorm par bluetooth. Vous aurez le choix de programmer votre robot avec le logiciel MindStorm ou avec un langage de bas niveau proche du langage C (voir la page web [1]).

Elèves Matériel Page
Jean-Dominique Lancieri, Thomas Maurice Boite lego MindStorm, Téléphone Android, FoxBoard avec webcam, interface WiFi, convertisseur bluetooth, Boitier piles Robot téléguidé 1
Florian Royer, Benoît Maliar Boite lego MindStorm, Téléphone Android, FoxBoard avec webcam, interface WiFi, convertisseur bluetooth, Boitier piles Robot téléguidé 2
Manon Barrois, Fabien Violier Boite lego MindStorm, Téléphone Android, FoxBoard avec webcam, interface WiFi, convertisseur bluetooth, Boitier piles Robot téléguidé 3

Intégration des fonctionnalités

Une fois toutes les études terminées et les solutions implantées (sous forme de briques personnalisées par exemple), vous doterez votre robot des fonctionnalités nécessaires à la réalisation de la démonstration finale. Votre robot doit être capable de suivre des marquages discontinus au sol, être capable de communiquer avec les autres robots, être capable de se repérer dans l'espace en repérant des cartes RFID et enfin doit embarquer une FoxBoard avec une connexion WiFi et une webcam.

Les robots peuvent se trouver soit dans un mode autonome soit dans un mode téléguidé. Dans le mode téléguidé, le robot est contrôlé à l'aide d'un téléphone Android connecté sur le réseau WiFi de l'école. Il doit être possible de le faire avancer, reculer ou tourner. Il doit être possible aussi d'obtenir une image de la webcam.

Le comportement en mode autonome est plus complexe :

  • le robot tente de suivre un marquage de couleur au sol, ce marquage peut être discontinu, la boussole est utilisée pour passer en ligne droite d'un marquage à l'autre et pour suivre les marquages ;
  • le contrôleur peut demander à un robot de changer de sens de parcours ou de changer de couleur de parcours ;
  • les robots communiquent à leur FoxBoard la couleur du parcours suivi, le dernier tag RFID détecté et la position de leur boussole ;
  • ces informations sont diffusées entre les FoxBoard, elles sont aussi capable d'indiquer la position des robots sur une carte ;
  • quand une FoxBoard s'aperçoit qu'un parcours est utilisé par moins de robots qu'un autre parcours, elle peut demander à son robot de changer de couleur de parcours pour équilibrer le nombre de robots.
Matériel Boite lego MindStorm Module RFID Module boussole Téléphone Android FoxBoard WebCam Adaptateur USB/WiFi Adaptateur BlueTooth Hub USB Boitier piles Piles rechargeables
Nombre 8/8 8/8 8/8 8/8 8/8 8/8 8/8 8/8 8/8 (deux non testés) 8/8 100/100

Pour configurer la FoxBoard avec tout le matériel nécessaire, suivez les instructions.

Pour une description du système à obtenir suivez la flèche.

Démonstration finale

Pour la démonstration finale vous tracerez une grande piste comprenant au moins deux parcours (voir schéma ci-dessous). Des cartes RFID doivent être disposées en des points précis de chaque parcours. Vous placerez vos robots sur l'un des parcours, tous orientés dans le même sens. Les robots vont cheminer un certain temps sur ce parcours (l'occasion de vérifier le bon suivi du marquage au sol et que les robots savent tenir leurs distances). Ils doivent ensuite se répartir automatiquement sur les deux parcours disponibles. Un contrôleur ordonne à son robot de changer de sens de parcours. Les robots devraient se bloquer. Le contrôleur téléguide le robot pour le sortir du parcours, les autres robots devraient se débloquer.

Voici un exemple de double parcours.

Notation

Noms Partie I Partie II Rapport Wiki Soutenance vidéo Total
Ombeline Rossi, Mélanie Hautecoeur Programme graphique, aidées, objectif atteint
80%
Téléguidage complet et suivi de ligne intégrés
66%
Rapport partie I correct, rien sur la seconde partie
66%
Discours tout à fait correct dans la vidéo
80%
75% (15/20)
Nathan Martin, Charlotte Bricout Programme graphique, objectifs atteints, un peu d'aide
90%
Un programme de téléguidage complet, un programme de suivi de ligne avec positionnement RFID
100%
Excellent rapport sur le Wiki pour les deux parties
100%
Discours particulièrement pédagogique dans la vidéo
100%
100% (20/20)
Jérémy Gondry, Richard Verheyde Programme graphique, objectifs atteints, aidés par les encadrants et l'autre groupe
80%
Un programme téléguidage et suivi de ligne, un programme d'envoi d'informations
80%
Rapport correct sur le Wiki, un cran en dessous de celui de l'autre groupe
80%
Discours hésitant dans la vidéo
75%
80% (16/20)
Florian Lemaire, Victor Sallé Programme graphique, objectifs atteints malgré la complexité, un peu d'aide
90%
Téléguidage complet et suivi de ligne
66%
Rapport très correct sur la première partie, rien sur la seconde
66%
Discours un peu heurté sur la vidéo, une explication du logiciel MindStorm intéressant
75%
75% (15/20)
Olivier Tailliez, Antoine Fossey Programme graphique, objectif atteint (même si le son sur la vidéo laisse dubitatif)
80%
Téléguidage, suivi de ligne
66%
Page Wiki sous forme chronologique, manque un peu de profondeur
70%
Discours correct dans la vidéo
80%
75% (15/20)
Jean-Dominique Lancieri, Thomas Maurice Programmes C, C++ et NXC, objectifs largement dépassés
150%
Téléguidage et suivi de ligne
75%
Très bon rapport pour la première partie (description des bibliothèque écrites en supplément), rien sur la seconde partie
75%
Discours tout à fait correct dans la vidéo
80%
95% (19/20)
Florian Royer, Benoît Maliar Programme NXC, objectifs atteints avec de l'aide
100%
Téléguidage, suivi de ligne, remontée des informations (non intégré), de l'aide :-)
80%
On aurait aimé un rapport sur le Wiki un peu plus dense en informations
70%
Discours tout à fait correct dans la vidéo
85%
85% (17/20)
Manon Barrois, Fabien Violier Programme graphique, beaucoup d'aide
66%
Téléguidage, suivi de lignes, aide des autres binômes
66%
Rapport avec explications parfois approximatives, un bon schéma, rien sur la partie II
50%
Vidéo assez peu convaincante
66%
60% (12/20)