Synchronize2012-1

De Wiki de bureau d'études PeiP
Révision datée du 4 mars 2013 à 16:27 par Cduplouy (discussion | contributions) (Mode Autonome)

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 ERROR in secure-include.php: Not allowed to include remote URLs, or inexistant path.

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.