Synchronize2012-1 : Différence entre versions

De Wiki de bureau d'études PeiP
(Mode Couplage)
(Mode Couplage)
Ligne 92 : Ligne 92 :
  
 
Sur la base de ce programme, qui mettait en évidence la bonne réception des messages bluetooth, nous avons réalisé un programme plus complexe qui était le suivant :  
 
Sur la base de ce programme, qui mettait en évidence la bonne réception des messages bluetooth, nous avons réalisé un programme plus complexe qui était le suivant :  
EVE avance et lorsqu'il y a un obstacle devant WALL_E (notre main) celui-ci envoie un message bluetooth à EVE pour lui dire de s'arrêter et EVE s'arrête. Voici deux screens des programmes maître (WALL_E) et esclave (EVE).
+
EVE avance et lorsqu'il y a un obstacle devant WALL_E (notre main) celui-ci envoie un message bluetooth à EVE pour lui dire de s'arrêter et EVE s'arrête. Voici deux screens des programmes maître (WALL_E) et esclave (EVE):
 +
[[Fichier:Maitre test stop.png]]

Version du 4 mars 2013 à 18:11

Le but du Bureau d'Etude

A travers ce Bureau d'Etude, nous allons concevoir un robot patrouilleur semi-autonome, c'est-à-dire qu'il sera capable d’interagir avec son environnement en accumulant des données sur celui-ci (des images par exemple) sans une intervention humaine. Dans un premier temps, le robot devra remplir une fonction précise (suivi d'une ligne, d'un parcours RFID ...). Dans notre cas, il s'agira de concevoir un robot étant synchronisé en bluetooth avec un autre. Dans un second temps, le robot devra intégrer un certain nombre de fonctionnalités étudiées par les autres binômes. Une vidéo de présentation et de démonstration du robot finale clôturera ce projet.


Buts de la première partie :

/* Partie à expliciter et à préciser*/

  • Concevoir un robot basique intégrant le capteur ultrason et le boîtier NXT.
  • Le robot avance tout droit et s'arrête dès qu'il détecte un obstacle avec son sonar. Il effectue une rotation sur place et redémarre lorsqu'aucun objet n'est détecté.
  • Les deux robots doivent communiquer par bluetooth pour mutuellement s'envoyer et recevoir des messages par rapport aux informations obtenues sur l’environnement pendant leur navigation.
  • Dans le mode couplé, les robots avancent en même temps, mais si un obstacle est détecté par le sonar d'un des robots, le couple tourne dans la direction où aucun obstacle n'est détecté.

Buts de la seconde partie :

Le robot doit maintenant intégrer les fonctions suivantes :

  • Suivi d'une ligne de couleur discontinue
  • Capter une carte RFID et enregistrer et renvoyer sa valeur
  • Indiquer sa position exacte avec l'outil boussole
  • Se synchroniser avec d'autres robots et communiquer
  • Circulation auto en évitant les obstacles ou pilotage via téléphone ou tablette.

Construction du Robot : WALL_E

Construction de la base du robot

Robot base de la notice Lego


Pour cette première séance, nous avons réalisé la base du robot : Nous avons suivi le montage proposé par la notice Lego Mindstorms, qui comporte 3 moteurs et le boitier NXT. Mais le 3ème moteur étant superflue, et étant le seul groupe a travailler sur les robots synchronisé, nous avons décidé de réaliser un robot plus basique en utilisant le moins de pièces Lego possibles pour pouvoir réaliser un 2ème robot identique.




Base motrice du nouveau Robot


Nous avons donc utilisé 2 moteurs reliés simplement par des barres Lego pour former un socle destiné à recevoir le boitier NXT comme on peut le voir sur la photo ci-contre. Par la suite, nous avons fixé les 4 roues, dont 2 sur les moteurs qui, lors de leur activation permettent au robot d'avancer, ainsi que le capteur infrarouge, nécessaire pour entreprendre la première partie, puisqu'il permet de détecter les obstacles. Une première version du robot ayant été réalisée, nous avons pu nous familiariser avec les fonctionnalités du robot grâce à la fonction "Try Me" intégrée dans le boitier NXT. Nous avons ainsi rencontré un premier problème : l'utilisation des roues n'était pas très adaptée, puisque lors des rotations et de l'avancée du robot, la conduite n'était pas très fluide. Nous avons donc opté pour les chenilles.






Nous avons ainsi obtenu la première version de WALL_E :

Première version de WALL_E

Modification de WALL_E

Suite à l'utilisation de notre robot, nous nous sommes rendu compte que le capteur à ultrasons était installé un peu trop haut par rapport aux obstacles présents dans la pièce, comme les pieds de chaises ou de tables par exemple. Nous avons donc effectuer plusieurs test pour trouver la bonne hauteur pour mettre en place le capteur. Entre temps, un autre groupe nous a rejoint sur le projet. Nous n'avons donc pas du construire un deuxième robot, puisque c'est le second groupe qui s'en est chargé.

C'est ainsi que sont nés WALL_E et EVE :
WALL_E et EVE


Première Partie

Mode Autonome

Programme pour éviter les obstacles

Après avoir pris connaissance et s'être familiarisés avec le logiciel de programmation Lego Mindstorm, nous avons débuté la programmation par la réalisation d'un premier programme qui permettra au robot d'avancer puis de s’arrêter s'il détecte un obstacle. Par la suite nous avons établit un programme un peu plus complet qui permet au robot de circuler tout en évitant les obstacles. On peut voir ci-contre le code du programme :


Ici, le principe est simple : Le robot commence à avancer puis on rentre dans une boucle vide qui tourne. S'il rencontre un obstacle, on sort de cette boucle, le robot s'arrête et commence à tourner. On rentre à nouveau dans une boucle vide : le robot va donc tourner jusqu'à ce qu'il ne détecte plus d'obstacle. Si c'est le cas, on sort de la boucle et le robot peut se remettre à avancer et ainsi de suite.


Voici une petite vidéo de démonstration : Vidéo évite obstacles


Même si le robot semble rapide, il existe un inconvénient : on voit que le robot favorise une direction, qui est la gauche. On voit en effet que le robot tourne en rond. Mais comme ce programme n'est pas d'une extrême importance, nous avons choisi d'ignorer cet inconvénient et de passer à la suite.


Mode Couplage

WALL_E et EVE étant prêts pour une programmation en couple, nos deux groupes ont travaillé ensemble pour la réalisation des programmes.

Notre premier essai consistait en la réalisation d'un programme qui permettait de faire avancer les deux robots et de les arrêter lorsque l'un des deux détectait un obstacle. Mais cet essai fut un échec. En effet, nous nous sommes précipités dans la programmation sans tester la connexion bluetooth et vérifier le couplage des deux boitier NXT.


Sur les conseils d'un encadrant, nous avons donc réalisé un programme basique juste pour tester la connexion bluetooth. Ce programme était le suivant : WALL_E envoie un message bluetooth à EVE. Tant qu'EVE ne reçoit pas le message bluetooth, elle affiche :(. Au contraire si elle le reçoit, elle affiche un :). Malheureusement, même ce programme basique ne fonctionnait pas. Après avoir passé un long moment à vérifier ou modifier le programme, nous avons eu une idée : changer le nom des deux robots (qui ne s'appelaient pas encore WALL_E et EVE à ce moment). Miracle ! Le programme fonctionna à merveille. La cause était toute simple : WALL_E se connectait à un autre boitier de la pièce qui portait exactement le même nom que celui d'EVE avant modification.


Sur la base de ce programme, qui mettait en évidence la bonne réception des messages bluetooth, nous avons réalisé un programme plus complexe qui était le suivant : EVE avance et lorsqu'il y a un obstacle devant WALL_E (notre main) celui-ci envoie un message bluetooth à EVE pour lui dire de s'arrêter et EVE s'arrête. Voici deux screens des programmes maître (WALL_E) et esclave (EVE): Maitre test stop.png