<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://peip-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nmartin1</id>
		<title>Wiki de bureau d'études PeiP - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://peip-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nmartin1"/>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Nmartin1"/>
		<updated>2026-04-24T23:35:03Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1168</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1168"/>
				<updated>2012-05-29T20:38:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Le logiciel Lego MindStorm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir, dans un premier temps, un robot remplissant une fonction précise comme le suivi de ligne par exemple et dans un second temps, le robot doit intégrer un certain nombre de fonctionnalités. Ce projet sera clôturé par le tournage d'une vidéo de présentation et de démonstration.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
- Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
- Le robot avance tout droit; lorsqu'il rencontre un obstacle, il s'arrête et cherche une issue en balayant successivement d'un angle à gauche puis à droite. &lt;br /&gt;
&lt;br /&gt;
Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
- Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages entre eux.&lt;br /&gt;
&lt;br /&gt;
- Les deux robots avancent en même temps; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
- être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
- être capable de capter une carte RFID, de mémoriser et de renvoyer sa valeur&lt;br /&gt;
&lt;br /&gt;
- être capable d'indiquer sa position exacte grâce à l'outil boussole&lt;br /&gt;
&lt;br /&gt;
- être capable de se synchroniser avec d'autres robots et de communiquer&lt;br /&gt;
&lt;br /&gt;
- être téléguidé via un téléphone androïd ou de fonctionner en mode automatique&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à la réalisation du programme final.&lt;br /&gt;
Nous avons opté pour des roues car les chaînes n'étaient pas assez tendues de par notre structure.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur à ultrasons nécessaire à la réalisation de la première partie du programme. Puis, nous avons placé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Première version de ATOM]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Premier objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici une vidéo de démonstration de l'évitement d'un obstacle.&lt;br /&gt;
Ce programme constitue la moitié de l'objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Second objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir le deuxième objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons créé un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png et avons modifié la carte (fichier .html) du circuit présente sur l'interface web de la FoxBoard. Le robot va renvoyer le dernier tag relevé lorsqu'il recevra l'ordre 65 émis par la Foxboard; ce qui va nous permettre de connaître sa position qui se matérialisera sur la carte par un triangle de couleur noire.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons apprécié de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité. En effet, le logiciel est plutôt difficile à gérer pour la navigation à l'intérieur d'un programme. Nous avons eu quelques problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
== Bilan du Bureau d'études ==&lt;br /&gt;
&lt;br /&gt;
Malgré des débuts un peu brouillon avec la programmation en Légo, ce BE fut très complet et enrichissant. Nous cernons d'avantage la spécialité IMA et l'intérêt d'une pédagogie par projets. Le programme est intéressant même si les contraintes de temps nous obligent à passer outre plusieurs objectifs. Il serait sûrement intéressant pour les années futures d'instaurer un espace de stockage en ligne afin que chaque groupe puisse déverser au fur et à mesure les programmes qu'ils veulent. En effet, nous avons perdu beaucoup de temps à récupérer morceau par morceau et bloc par bloc les programmes. Par un espace commun, chacun amènerait une partie de programme et les objectifs pourraient être remplis. &lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1167</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1167"/>
				<updated>2012-05-29T20:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Le logiciel Lego MindStorm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir, dans un premier temps, un robot remplissant une fonction précise comme le suivi de ligne par exemple et dans un second temps, le robot doit intégrer un certain nombre de fonctionnalités. Ce projet sera clôturé par le tournage d'une vidéo de présentation et de démonstration.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
- Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
- Le robot avance tout droit; lorsqu'il rencontre un obstacle, il s'arrête et cherche une issue en balayant successivement d'un angle à gauche puis à droite. &lt;br /&gt;
&lt;br /&gt;
Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
- Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages entre eux.&lt;br /&gt;
&lt;br /&gt;
- Les deux robots avancent en même temps; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
- être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
- être capable de capter une carte RFID, de mémoriser et de renvoyer sa valeur&lt;br /&gt;
&lt;br /&gt;
- être capable d'indiquer sa position exacte grâce à l'outil boussole&lt;br /&gt;
&lt;br /&gt;
- être capable de se synchroniser avec d'autres robots et de communiquer&lt;br /&gt;
&lt;br /&gt;
- être téléguidé via un téléphone androïd ou de fonctionner en mode automatique&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à la réalisation du programme final.&lt;br /&gt;
Nous avons opté pour des roues car les chaînes n'étaient pas assez tendues de par notre structure.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur à ultrasons nécessaire à la réalisation de la première partie du programme. Puis, nous avons placé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Première version de ATOM]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Premier objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici une vidéo de démonstration de l'évitement d'un obstacle.&lt;br /&gt;
Ce programme constitue la moitié de l'objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Second objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir le deuxième objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons créé un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png et avons modifié la carte (fichier .html) du circuit présente sur l'interface web de la FoxBoard. Le robot va renvoyer le dernier tag relevé lorsqu'il recevra l'ordre 65 émis par la Foxboard; ce qui va nous permettre de connaître sa position qui se matérialisera sur la carte par un triangle de couleur noire.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
      Dans un premier temps, nous avons apprécié de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité. En effet, le logiciel est plutôt difficile à gérer pour la navigation à l'intérieur d'un programme. Nous avons eu quelques problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
== Bilan du Bureau d'études ==&lt;br /&gt;
&lt;br /&gt;
Malgré des débuts un peu brouillon avec la programmation en Légo, ce BE fut très complet et enrichissant. Nous cernons d'avantage la spécialité IMA et l'intérêt d'une pédagogie par projets. Le programme est intéressant même si les contraintes de temps nous obligent à passer outre plusieurs objectifs. Il serait sûrement intéressant pour les années futures d'instaurer un espace de stockage en ligne afin que chaque groupe puisse déverser au fur et à mesure les programmes qu'ils veulent. En effet, nous avons perdu beaucoup de temps à récupérer morceau par morceau et bloc par bloc les programmes. Par un espace commun, chacun amènerait une partie de programme et les objectifs pourraient être remplis. &lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1166</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1166"/>
				<updated>2012-05-29T20:12:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Lecteur de cartes RFID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir, dans un premier temps, un robot remplissant une fonction précise comme le suivi de ligne par exemple et dans un second temps, le robot doit intégrer un certain nombre de fonctionnalités. Ce projet sera clôturé par le tournage d'une vidéo de présentation et de démonstration.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
- Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
- Le robot avance tout droit; lorsqu'il rencontre un obstacle, il s'arrête et cherche une issue en balayant successivement d'un angle à gauche puis à droite. &lt;br /&gt;
&lt;br /&gt;
Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
- Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages entre eux.&lt;br /&gt;
&lt;br /&gt;
- Les deux robots avancent en même temps; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
- être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
- être capable de capter une carte RFID, de mémoriser et de renvoyer sa valeur&lt;br /&gt;
&lt;br /&gt;
- être capable d'indiquer sa position exacte grâce à l'outil boussole&lt;br /&gt;
&lt;br /&gt;
- être capable de se synchroniser avec d'autres robots et de communiquer&lt;br /&gt;
&lt;br /&gt;
- être téléguidé via un téléphone androïd ou de fonctionner en mode automatique&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à la réalisation du programme final.&lt;br /&gt;
Nous avons opté pour des roues car les chaînes n'étaient pas assez tendues de par notre structure.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur à ultrasons nécessaire à la réalisation de la première partie du programme. Puis, nous avons placé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Première version de ATOM]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Premier objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici une vidéo de démonstration de l'évitement d'un obstacle.&lt;br /&gt;
Ce programme constitue la moitié de l'objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Second objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir le deuxième objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons créé un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png et avons modifié la carte (fichier .html) du circuit présente sur l'interface web de la FoxBoard. Le robot va renvoyer le dernier tag relevé lorsqu'il recevra l'ordre 65 émis par la Foxboard; ce qui va nous permettre de connaître sa position qui se matérialisera sur la carte par un triangle de couleur noire.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
== Bilan du Bureau d'études ==&lt;br /&gt;
&lt;br /&gt;
Malgré des débuts un peu brouillon avec la programmation en Légo, ce BE fut très complet et enrichissant. Nous cernons d'avantage la spécialité IMA et l'intérêt d'une pédagogie par projets. Le programme est intéressant même si les contraintes de temps nous obligent à passer outre plusieurs objectifs. Il serait sûrement intéressant pour les années futures d'instaurer un espace de stockage en ligne afin que chaque groupe puisse déverser au fur et à mesure les programmes qu'ils veulent. En effet, nous avons perdu beaucoup de temps à récupérer morceau par morceau et bloc par bloc les programmes. Par un espace commun, chacun amènerait une partie de programme et les objectifs pourraient être remplis. &lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1165</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1165"/>
				<updated>2012-05-29T20:11:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Lecteur de cartes RFID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir, dans un premier temps, un robot remplissant une fonction précise comme le suivi de ligne par exemple et dans un second temps, le robot doit intégrer un certain nombre de fonctionnalités. Ce projet sera clôturé par le tournage d'une vidéo de présentation et de démonstration.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
- Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
- Le robot avance tout droit; lorsqu'il rencontre un obstacle, il s'arrête et cherche une issue en balayant successivement d'un angle à gauche puis à droite. &lt;br /&gt;
&lt;br /&gt;
Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
- Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages entre eux.&lt;br /&gt;
&lt;br /&gt;
- Les deux robots avancent en même temps; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
- être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
- être capable de capter une carte RFID, de mémoriser et de renvoyer sa valeur&lt;br /&gt;
&lt;br /&gt;
- être capable d'indiquer sa position exacte grâce à l'outil boussole&lt;br /&gt;
&lt;br /&gt;
- être capable de se synchroniser avec d'autres robots et de communiquer&lt;br /&gt;
&lt;br /&gt;
- être téléguidé via un téléphone androïd ou de fonctionner en mode automatique&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à la réalisation du programme final.&lt;br /&gt;
Nous avons opté pour des roues car les chaînes n'étaient pas assez tendues de par notre structure.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur à ultrasons nécessaire à la réalisation de la première partie du programme. Puis, nous avons placé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Première version de ATOM]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Premier objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici une vidéo de démonstration de l'évitement d'un obstacle.&lt;br /&gt;
Ce programme constitue la moitié de l'objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Second objectif du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir le deuxième objectif de la première partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons créé un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png et avons modifié la carte (fichier .html) du circuit présente sur l'interface web de la FoxBoard. Le robot va renvoyer le dernier tag relevé lorsqu'il recevra l'ordre 65. Ce qui va nous permettre de connaître sa position qui se matérialisera sur la carte par un triangle de couleur noire.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
== Bilan du Bureau d'études ==&lt;br /&gt;
&lt;br /&gt;
Malgré des débuts un peu brouillon avec la programmation en Légo, ce BE fut très complet et enrichissant. Nous cernons d'avantage la spécialité IMA et l'intérêt d'une pédagogie par projets. Le programme est intéressant même si les contraintes de temps nous obligent à passer outre plusieurs objectifs. Il serait sûrement intéressant pour les années futures d'instaurer un espace de stockage en ligne afin que chaque groupe puisse déverser au fur et à mesure les programmes qu'ils veulent. En effet, nous avons perdu beaucoup de temps à récupérer morceau par morceau et bloc par bloc les programmes. Par un espace commun, chacun amènerait une partie de programme et les objectifs pourraient être remplis. &lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1155</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1155"/>
				<updated>2012-05-29T19:19:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Lecteur de cartes RFID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir, dans un premier temps, un robot remplissant une fonction précise comme le suivi de ligne par exemple et dans un second temps, le robot doit intégrer un certain nombre de fonctionnalités. Ce projet sera clôturé par le tournage d'une vidéo de présentation et de démonstration.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
- Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
- Le robot avance tout droit; lorsqu'il rencontre un obstacle, il s'arrête et cherche une issue en balayant successivement d'un angle à gauche puis à droite. &lt;br /&gt;
Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
- Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages entre eux.&lt;br /&gt;
&lt;br /&gt;
- Les deux robots avancent en même temps; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
- être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
- être capable de capter une carte RFID, de mémoriser et de renvoyer sa valeur&lt;br /&gt;
&lt;br /&gt;
- être capable d'indiquer sa position exacte grâce à l'outil boussole&lt;br /&gt;
&lt;br /&gt;
- être capable de se synchroniser avec d'autres robots et de communiquer&lt;br /&gt;
&lt;br /&gt;
- être téléguidé via un téléphone androïd ou de fonctionner en mode automatique&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à sa fonctionnalité.&lt;br /&gt;
Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur ultrasons nécessaire à la réalisation de la première partie du programme. Nous avons ensuite installé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Le robot dans sa finalité (1)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Première partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle, à savoir la première partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seconde partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir la deuxième partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons créé un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png et avons modifié la carte (fichier .html) du circuit présente sur l'interface web de la FoxBoard. Carte qui va nous permettre de connaître la dernière carte RFID relevée par le robot et donc sa position. Celle-ci se matérialisera sur la carte par un triangle de couleur noire.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
== Bilan du Bureau d'études ==&lt;br /&gt;
&lt;br /&gt;
Malgré des débuts un peu brouillon avec la programmation en Légo, ce BE fut très complet et enrichissant. Nous cernons d'avantage la spécialité IMA et l'intérêt d'une pédagogie par projets. Le programme est intéressant même si les contraintes de temps nous obligent à passer outre plusieurs objectifs. Il serait sûrement intéressant pour les années futures d'instaurer un espace de stockage en ligne afin que chaque groupe puisse déverser au fur et à mesure les programmes qu'ils veulent. En effet, nous avons perdu beaucoup de temps à récupérer morceau par morceau et bloc par bloc les programmes. Par un espace commun, chacun amènerait une partie de programme et les objectifs pourraient être remplis. &lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1152</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1152"/>
				<updated>2012-05-29T19:00:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Contrôle à distance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir dans un premier temps des robots remplissant une fonction précise comme le suivi de ligne ou la synchronisation avec un autre robot et dans un second temps, les robots doivent intégrer toutes les fonctionnalités proposées.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
2) Le robot qui rencontre un obstacle s'arrête et cherche une issue en balayant successivement à gauche et à droite. Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
3) Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages à l'autre.&lt;br /&gt;
&lt;br /&gt;
4) Les deux robots avancent en même temps ; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
1) être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
2) être capable de capter une carte RFID&lt;br /&gt;
&lt;br /&gt;
3) être capable de connaître sa position exacte&lt;br /&gt;
&lt;br /&gt;
4) être capable de se synchroniser avec d'autres robots&lt;br /&gt;
&lt;br /&gt;
5) être téléguidé via un téléphone androïd&lt;br /&gt;
&lt;br /&gt;
Le robot final effectuera une réprésentation à la fin du Bureau d'Etude. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à sa fonctionnalité.&lt;br /&gt;
Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur ultrasons nécessaire à la réalisation de la première partie du programme. Nous avons ensuite installé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Le robot dans sa finalité (1)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Première partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle, à savoir la première partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seconde partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir la deuxième partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons créé un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png.&lt;br /&gt;
Ensuite, nous avons crée un programme indépendant permettant de lire les cartes RFID lorsque le robot en détecte une et de stocker le tag de la carte. Ainsi, à tout moment, une personne peut communiquer avec le robot via l'interface de la FoxBoard et lui demander la valeur de la dernière carte enregistrée. Pour ce faire, il suffit de rentrer l'ordre 65 pour que le robot renvoie le dernier tag enregistré. Cela va permettre de situer le robot sur la carte de l'interface web de la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
== Bilan du Bureau d'études ==&lt;br /&gt;
&lt;br /&gt;
Malgré des débuts un peu brouillon avec la programmation en Légo, ce BE fut très complet et enrichissant. Nous cernons d'avantage la spécialité IMA et l'intérêt d'une pédagogie par projets. Le programme est intéressant même si les contraintes de temps nous obligent à passer outre plusieurs objectifs. Il serait sûrement intéressant pour les années futures d'instaurer un espace de stockage en ligne afin que chaque groupe puisse déverser au fur et à mesure les programmes qu'ils veulent. En effet, nous avons perdu beaucoup de temps à récupérer morceau par morceau et bloc par bloc les programmes. Par un espace commun, chacun amènerait une partie de programme et les objectifs pourraient être remplis. &lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1150</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1150"/>
				<updated>2012-05-29T18:57:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Programme du suiveur de ligne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir dans un premier temps des robots remplissant une fonction précise comme le suivi de ligne ou la synchronisation avec un autre robot et dans un second temps, les robots doivent intégrer toutes les fonctionnalités proposées.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
2) Le robot qui rencontre un obstacle s'arrête et cherche une issue en balayant successivement à gauche et à droite. Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
3) Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages à l'autre.&lt;br /&gt;
&lt;br /&gt;
4) Les deux robots avancent en même temps ; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
1) être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
2) être capable de capter une carte RFID&lt;br /&gt;
&lt;br /&gt;
3) être capable de connaître sa position exacte&lt;br /&gt;
&lt;br /&gt;
4) être capable de se synchroniser avec d'autres robots&lt;br /&gt;
&lt;br /&gt;
5) être téléguidé via un téléphone androïd&lt;br /&gt;
&lt;br /&gt;
Le robot final effectuera une réprésentation à la fin du Bureau d'Etude. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à sa fonctionnalité.&lt;br /&gt;
Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur ultrasons nécessaire à la réalisation de la première partie du programme. Nous avons ensuite installé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Le robot dans sa finalité (1)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Première partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle, à savoir la première partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seconde partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir la deuxième partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord créé un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons crée un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png.&lt;br /&gt;
Ensuite, nous avons crée un programme indépendant permettant de lire les cartes RFID lorsque le robot en détecte une et de stocker le tag de la carte. Ainsi, à tout moment, une personne peut communiquer avec le robot via l'interface de la FoxBoard et lui demander la valeur de la dernière carte enregistrée. Pour ce faire, il suffit de rentrer l'ordre 65 pour que le robot renvoie le dernier tag enregistré. Cela va permettre de situer le robot sur la carte de l'interface web de la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1149</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1149"/>
				<updated>2012-05-29T18:55:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* La compatibilité des deux robots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir dans un premier temps des robots remplissant une fonction précise comme le suivi de ligne ou la synchronisation avec un autre robot et dans un second temps, les robots doivent intégrer toutes les fonctionnalités proposées.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
2) Le robot qui rencontre un obstacle s'arrête et cherche une issue en balayant successivement à gauche et à droite. Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
3) Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages à l'autre.&lt;br /&gt;
&lt;br /&gt;
4) Les deux robots avancent en même temps ; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
1) être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
2) être capable de capter une carte RFID&lt;br /&gt;
&lt;br /&gt;
3) être capable de connaître sa position exacte&lt;br /&gt;
&lt;br /&gt;
4) être capable de se synchroniser avec d'autres robots&lt;br /&gt;
&lt;br /&gt;
5) être téléguidé via un téléphone androïd&lt;br /&gt;
&lt;br /&gt;
Le robot final effectuera une réprésentation à la fin du Bureau d'Etude. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à sa fonctionnalité.&lt;br /&gt;
Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur ultrasons nécessaire à la réalisation de la première partie du programme. Nous avons ensuite installé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Le robot dans sa finalité (1)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Première partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle, à savoir la première partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seconde partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir la deuxième partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, et ce jusqu'à la fin du projet.&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord crée un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons crée un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png.&lt;br /&gt;
Ensuite, nous avons crée un programme indépendant permettant de lire les cartes RFID lorsque le robot en détecte une et de stocker le tag de la carte. Ainsi, à tout moment, une personne peut communiquer avec le robot via l'interface de la FoxBoard et lui demander la valeur de la dernière carte enregistrée. Pour ce faire, il suffit de rentrer l'ordre 65 pour que le robot renvoie le dernier tag enregistré. Cela va permettre de situer le robot sur la carte de l'interface web de la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1148</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=1148"/>
				<updated>2012-05-29T18:48:47Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Quelques explications... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les objectifs de ce Bureau d'Etude ==&lt;br /&gt;
&lt;br /&gt;
Le but de ce Bureau d’Étude est de concevoir dans un premier temps des robots remplissant une fonction précise comme le suivi de ligne ou la synchronisation avec un autre robot et dans un second temps, les robots doivent intégrer toutes les fonctionnalités proposées.&lt;br /&gt;
Nous avons été chargé de concevoir un robot destiné à être synchronisé avec un autre robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la première partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Il faut concevoir un robot permettant d'accueillir principalement un boîtier NXT, un boîtier de piles, une foxboard et quatre capteurs.&lt;br /&gt;
&lt;br /&gt;
2) Le robot qui rencontre un obstacle s'arrête et cherche une issue en balayant successivement à gauche et à droite. Lorsque aucun objet n'est détecté, le robot redémarre.&lt;br /&gt;
&lt;br /&gt;
3) Il faut connecter les deux robots communicants par bluetooth afin qu'ils puissent mutuellement recevoir et envoyer des messages à l'autre.&lt;br /&gt;
&lt;br /&gt;
4) Les deux robots avancent en même temps ; lorsqu'un robot détecte un objet, il envoie un message à l'autre et ils exécutent le programme d'évitement mis au point précédemment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Objectifs de la deuxième partie: ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le robot doit intégrer les fonctionnalités suivantes :&lt;br /&gt;
&lt;br /&gt;
1) être capable de suivre une ligne bleue et une ligne rouge discontinues&lt;br /&gt;
&lt;br /&gt;
2) être capable de capter une carte RFID&lt;br /&gt;
&lt;br /&gt;
3) être capable de connaître sa position exacte&lt;br /&gt;
&lt;br /&gt;
4) être capable de se synchroniser avec d'autres robots&lt;br /&gt;
&lt;br /&gt;
5) être téléguidé via un téléphone androïd&lt;br /&gt;
&lt;br /&gt;
Le robot final effectuera une réprésentation à la fin du Bureau d'Etude. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Construction du Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012: Première séance: Construction du robot.'''&lt;br /&gt;
[[Fichier:Base.JPG|150px|thumb|left|La base du robot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons construit la base de la structure du robot incluant trois moteurs. Néanmoins, nous n'utilisons que deux des trois moteurs installés. Le troisième moteur ne sert que d'élément de structure. Nous avons tout d'abord repris le modèle de construction du manuel Légo puis nous avons modifié l'original pour que le robot puisse intégrer tous les éléments nécessaires à sa fonctionnalité.&lt;br /&gt;
Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
[[Fichier:2.JPG|150px|thumb|right|Après introduction du boîtier NXT]]Nous avons ensuite mis en place le boîtier NXT puis le capteur ultrasons nécessaire à la réalisation de la première partie du programme. Nous avons ensuite installé la Foxboard en prévision du projet final qui nécessite cet équipement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012: Deuxième séance: Fin de la construction, début de la programmation.'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|120px|thumb|left|Après introduction de la Foxboard]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego Mindstorm.[[Fichier:4.JPG|150px|thumb|right|Le robot dans sa finalité (1)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10/05/2012: Avant dernière séance: Modification de la structure du robot.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour le projet final, il nous a fallu ajouter une boussole, un lecteur RFID et un capteur de couleurs. Chaque capteur doit être placé dans une position particulière; Par exemple, le capteur de couleur doit être situé verticalement, très proche du sol. De ce fait, nous avons eu quelques difficultés d'intégration de ce matériel et nous avons été contraints de revoir la structure de ATOM.&lt;br /&gt;
Nous avons également retiré les roues et installé des chaînes qui nous ont paru plus pratique pour la démonstration finale. En effet, les roues occasionnaient plus de frottements que les chaines et cela déviait la trajectoire du robot lors de l'exécution du programme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Atom.JPG|500px|thumb|center|Version anatomique finale de ATOM]]&lt;br /&gt;
&lt;br /&gt;
== Programmation pour la première partie du projet ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Première partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons réalisé un premier code via le logiciel Lego Mind Storm permettant au robot de s'arrêter s'il détecte un obstacle et d'avancer sinon.&lt;br /&gt;
Puis nous avons mis au point un système de balayage de la zone : Le robot pivote d'abord d'un angle donné à gauche puis il pivote, de nouveau, du double de cet angle à droite etc ; ainsi, il contourne l'objet par le chemin le plus accessible selon la position de l'obstacle.&lt;br /&gt;
Nous avons imposé un angle maximum de pivot pour éviter que le robot tourne de 360°. De cette façon, si l'obstacle est en mouvement, le robot s'arrête quand il atteint l'angle limite et il redémarre quand il n'y a plus d'obstacle.&lt;br /&gt;
&lt;br /&gt;
==== Algorithme pour l'évitement d'un objet ====&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pg évitement seul.jpg|150px|thumb|right|Programme d'évitement d'un obstacle]] &lt;br /&gt;
Voici une partie de l'algorithme qui permet d'éviter un obstacle en empruntant le chemin de plus court.&lt;br /&gt;
Ici, on visualise surtout la partie qui permet le pivotage du robot d'un degré exponentiel et la partie qui permet au robot de s'arrêter au bout certain angle défini.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync1EviteSeul-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle, à savoir la première partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Seconde partie du programme: ===&lt;br /&gt;
&lt;br /&gt;
==== Quelques explications... ====&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé un court programme, en collaboration avec le second groupe chargé des robots communicants, qui permet d'envoyer et de recevoir des messages par bluetooth d'un robot à l'autre.&lt;br /&gt;
Ensuite, nous avons élaboré un code qui permet aux robots d'éviter des obstacles simultanément grâce à la communication par bluetooth. Ainsi, Les deux robots démarrent le programme en avançant tout droit; Lorsque l'un des deux détecte un obstacle, ils l'évitent ensemble en le contournant. Pour ce faire, nous avons du définir par défaut que le maître serait toujours à la gauche de l'esclave. De ce fait, si l'esclave détecte l'objet, les deux robots le contourne par la gauche alors qu'ils le contournent par la droite si c'est le maître qui a l’obstacle. Si les deux robots détectent un objet simultanément alors ils s'arrêtent. Ils redémarrent lorsque l'objet est retiré.&lt;br /&gt;
&lt;br /&gt;
==== Connexion Bluetooth  ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La connexion bluetooth entre deux robots se décompose en plusieurs étapes. Tout d'abord, l'un des robots doit être défini comme le maître et par défaut, l'autre devient esclave. Le robot maître est celui qui entame la connexion bluetooth avec l'autre robot. L'esclave occupe obligatoirement la connexion 0 alors que le maître est libre de se connecter sur celle qu'il souhaite.&lt;br /&gt;
Afin de pouvoir créer la connexion, il est nécessaire de sélectionner l'intitulé exact du robot auquel on souhaite s'appareiller. &lt;br /&gt;
&lt;br /&gt;
Les robots maître et esclave ne peuvent partager un même programme de communication inter-robots; Tout d'abord, le programme du maître doit intégrer la fonction: démarrer la connexion bluetooth avec l'esclave. Ensuite, il nous faut définir une boîte aux lettres pour l'envoi et une autre pour la réception. Par ailleurs, la boîte aux lettres sur laquelle émet le robot maître doit être celle définie comme boîte de réception du robot esclave et inversement.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Algorithme de synchronisation des deux robots ====&lt;br /&gt;
[[Fichier:3.jpg|120px|thumb|right|Action face à un objet]][[Fichier:Maitre.jpg|100px|thumb|left|Programe du Maître]][[Fichier:esclave.jpg|100px|thumb|left|Programme de l'esclave]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici les algorithmes des programmes maître et esclave d'évitement synchronisé d'un objet.&lt;br /&gt;
On peut voir sur le programme du maître, le démarrage de la connexion en plus du reste du programme.&lt;br /&gt;
Nous avons crée deux blocs que nous avons intégré à notre programme; l'un permettant d'envoyer un message à l'autre robot et l'autre contrôlant l'action des deux robots lorsqu'un objet est détecté par l'un ou l'autre des sonars.&lt;br /&gt;
Ce deuxième bloc est détaillé sur la photo suivante: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Démonstration ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;include nopre noesc src=&amp;quot;/home/pedago/ppeip/include/video-Sync2EviteCouple-iframe.html&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voici la vidéo de démonstration de l'évitement d'un obstacle avec les deux robots synchronisés, à savoir la deuxième partie du premier objectif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Les problèmes rencontrés ==&lt;br /&gt;
&lt;br /&gt;
=== La connexion bluetooth ===&lt;br /&gt;
&lt;br /&gt;
Nous avons constaté que le démarrage de la connexion bluetooth du maître vers l'esclave pouvait prendre un certain temps de l'ordre d'une dizaine de secondes. Du fait, si l'esclave rencontrait un obstacle avant que la connexion soit établie, le maître n'exécutait par l'évitement de cet obstacle. Pour outrepasser ce problème technique, nous avons du instaurer un délai d'attente d'une quinzaine de secondes avant que les deux robots exécutent le programme.&lt;br /&gt;
&lt;br /&gt;
=== Les manœuvres d'évitement ===&lt;br /&gt;
&lt;br /&gt;
Au début de la deuxième partie, nous souhaitions intégrer, à notre programme de communication inter-robots, notre manœuvre d'évitement de la première partie. Rapidement, nous avons renoncé à cette intégration de par sa complexité. En effet, il était nécessaire de modifier intégralement la manœuvre d'évitement pour le maître et pour l'esclave afin de l'intégrer au programme de communication. De plus, l'importante capacité du fichier final occasionnait de nombreux &amp;quot;bugs&amp;quot; du logiciel Lego Mind Storm.&lt;br /&gt;
De ce fait, nous avons été contraints de définir une position par défaut, du maître par rapport à l'esclave pour l'évitement d'obstacles.&lt;br /&gt;
&lt;br /&gt;
=== La compatibilité des deux robots ===&lt;br /&gt;
&lt;br /&gt;
De par leurs différences de morphologie et de poids, nous avons eu quelques difficultés de compatibilité entre les deux robots. En effet, le robot esclave est bien plus lourd que le maître ce qui implique une différence de vitesse entre les deux. Pour dépasser ce problème, nous avons &amp;quot;ré-agencer&amp;quot; le robot maître. De plus, les roues du maître occasionnaient plus de frottements lors de l'évitement d'un obstacle que les chaînes de l'esclave. De ce fait, nous avons changé les roues pour des chaînes, le temps de l'exécution du programme de cette deuxième partie.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Intégration de toutes les fonctionnalités ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programme du suiveur de ligne ===&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord crée un programme suiveur de ligne indépendant. Nous nous sommes inspiré de celui mis en oeuvre par le groupe chargé du suivi de ligne. L'objectif premier est de suivre une ligne rouge qui peut être discontinue. Le robot effectue un balayage de la zone (même principe que pour le programme d'évitement d'un obstacle) jusqu'à repérer une ligne rouge grâce au capteur de couleur. Nous avons fixé un angle maximal qui, une fois atteint, impose au robot de revenir dans sa position initiale et lui indique d'aller tout droit pendant 5 secondes.&lt;br /&gt;
De ce fait, il a des chances de retrouver, sur son chemin, une autre ligne.&lt;br /&gt;
Cette partie fut rapidement exécutée. &lt;br /&gt;
La deuxième étape consiste à établir deux circuits de deux couleurs différentes (un rouge et un bleu par exemple) et les robots doivent alors pouvoir passer d'un circuit à l'autre par simple commande de celui qui le contrôle. &lt;br /&gt;
Cependant, par manque de temps, nous n'avons pas réussi à faire la deuxième étape. Notre robot n'est donc capable que de suivre un circuit de couleur rouge.&lt;br /&gt;
&lt;br /&gt;
=== Contrôle à distance ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Cad.png|120px|thumb|left|Programme de contrôle à distance]]Nous avons crée un programme indépendant de téléguidage de notre robot. Nous nous sommes connecté sur le serveur Web de la FoxBoard via un ordinateur et y avons rentré l'adresse MAC de notre boîtier NXT. Puis, nous avons connecté par bluetooth la NXT et la FoxBoard.&lt;br /&gt;
Dans un premier temps, nous avions un programme simple permettant de contrôler à distance le robot par les flèches sur le serveur de la FoxBoard.&lt;br /&gt;
Après avoir branché une clé wifi sur celle-ci, il suffit de lancer le programme de notre robot et de le contrôler grâce aux flèches.&lt;br /&gt;
Pour finir, nous avons crée un deuxième programme, légèrement plus compliqué, permettant le contrôle à distance par la rose des vents. &lt;br /&gt;
Cette deuxième partie de programme sera par la suite intégrée au programme final qui regroupe toutes les fonctionnalités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lecteur de cartes RFID ===&lt;br /&gt;
&lt;br /&gt;
En collaboration avec les autres groupes du bureau d'études, nous avons mis au point un circuit de couleur rouge et placé plusieurs cartes RFID sur toute la longueur du circuit. Préalablement, nous avons rentré les coordonnées des cartes RFID dans le fichier .png.&lt;br /&gt;
Ensuite, nous avons crée un programme indépendant permettant de lire les cartes RFID lorsque le robot en détecte une et de stocker le tag de la carte. Ainsi, à tout moment, une personne peut communiquer avec le robot via l'interface de la FoxBoard et lui demander la valeur de la dernière carte enregistrée. Pour ce faire, il suffit de rentrer l'ordre 65 pour que le robot renvoie le dernier tag enregistré. Cela va permettre de situer le robot sur la carte de l'interface web de la FoxBoard.&lt;br /&gt;
&lt;br /&gt;
=== Intégration de la boussole ===&lt;br /&gt;
&lt;br /&gt;
Pour intégrer l'outil boussole, nous avons repris le même schéma que pour les cartes RFID. Nous avons intégrer au programme précédent une lecture des coordonnées de la boussole toutes les 0,1 secondes. Ainsi, toujours via l'interface web de la FoxBoard, en envoyant l'ordre 64 au robot, celui ci nous renvoie la dernière valeur de la boussole qu'il a enregistré. Cela permet, en absence de visuel de ATOM, de connaître son emplacement exact. De plus, si plusieurs robots circulent sur le même circuit, connaître leurs coordonnées précises permet d'éviter une collision entre deux ou plusieurs robots.&lt;br /&gt;
&lt;br /&gt;
=== Programme final ===&lt;br /&gt;
&lt;br /&gt;
Le but ultime de de bureau d'études est d'intégrer toutes les fonctionnalités du robot dans un unique programme.&lt;br /&gt;
Pour ce faire, nous avons créer 3 blocs: un suivi de ligne, un lecteur RFID et un lecteur de la Boussole et nous avons, dans un nouveau programme, exécuté les trois actions en parallèle.&lt;br /&gt;
Par manque de temps, nous ne sommes pas parvenu à ajouter à celui ci le passage du mode automatique au mode téléguidé.&lt;br /&gt;
[[Fichier:Pf.png|750px|thumb|center|Programme Final]]&lt;br /&gt;
&lt;br /&gt;
== Difficultés liées à la seconde partie ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Le logiciel Lego MindStorm ===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous avons été réjouis de travailler sur un logiciel ne nécessitant aucune compétence informatique pour la programmation.&lt;br /&gt;
Cependant, nous avons très vite déchanté quant aux problèmes de malléabilité dans un premier temps. En effet, le logiciel est plutôt difficile à gérer d'une part pour la navigation à l'intérieur d'un programme et d'autre part pour conserver les liaisons entre blocs qui se défont trop facilement. Dans un second temps, nous avons eu beaucoup de problèmes dès qu'il s'agissait de travailler sur un programme volumineux. Le simple fait d'ouvrir le programme occasionnait de nombreux dysfonctionnements.&lt;br /&gt;
&lt;br /&gt;
=== La collaboration inter-groupes ===&lt;br /&gt;
&lt;br /&gt;
Nous avons rencontré quelques difficultés à se coordonner avec les différents groupes car certains tardaient à terminer leur première partie. De plus, certains binômes ayant codé en langage C, il n'était pas possible de collaborer pour la partie finale. &lt;br /&gt;
La grande difficulté de cette partie a été de comprendre le fonctionnement des différentes fonctionnalités, de réussir à coder plusieurs programmes rapidement et de parvenir à les combiner en un seul.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remerciements ==&lt;br /&gt;
&lt;br /&gt;
Nous tenons à remercier M. Xavier REDON et M. Alexandre BOE pour leur investissement et leur persévérance tout au long de ce bureau d'études.&lt;br /&gt;
Nous remercions également tous les binômes pour leur contribution et leur aide à l'aboutissement du programme final.&lt;br /&gt;
Pour finir, nous remercions la personne chargée de la réalisation de la vidéo pour sa patience et son dévouement. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=638</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=638"/>
				<updated>2012-02-12T20:12:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Construction d'un Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|right|]]Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2.JPG|200px|thumb|right|]]Nous avons ensuite mis en place la foxboard puis le capteur. Nous avons installé la Foxboard en premier afin d'équilibrer le système tout entier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|200px|thumb|right|]]&lt;br /&gt;
[[Fichier:4.JPG|200px|thumb|right|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles par un système de bascule d'une partie de la structure.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego mindstorm.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=637</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=637"/>
				<updated>2012-02-12T20:12:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Construction d'un Robot synchronisé, ATOM. ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|right|]]Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2.JPG|200px|thumb|right|]]Nous avons ensuite mis en place la foxboard puis le capteur. Nous avons installé la Foxboard en premier afin d'équilibrer le système tout entier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|200px|thumb|right|]]&lt;br /&gt;
[[Fichier:4.JPG|200px|thumb|right|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles par un système de bascule d'une partie de la structure.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego mindstorm.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=636</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=636"/>
				<updated>2012-02-12T20:01:42Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|right|]]Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2.JPG|200px|thumb|right|]]Nous avons ensuite mis en place la foxboard puis le capteur. Nous avons installé la Foxboard en premier afin d'équilibrer le système tout entier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''06/02/2012'''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:3.JPG|200px|thumb|right|]]&lt;br /&gt;
[[Fichier:4.JPG|200px|thumb|right|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons terminé de construire la structure du robot en incluant le matériel nécessaire à l'alimentation des moteurs, le fonctionnement du capteur à ultrasons etc. Nous avons situé à la base de notre robot, le boîtier de piles. Cependant, nous avons laissé un accès pratique en cas de changement de piles par un système de bascule d'une partie de la structure.&lt;br /&gt;
Nous avons pu commencer la programmation par le logiciel Lego mindstorm.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:4.JPG&amp;diff=635</id>
		<title>Fichier:4.JPG</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:4.JPG&amp;diff=635"/>
				<updated>2012-02-12T19:50:42Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:3.JPG&amp;diff=634</id>
		<title>Fichier:3.JPG</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:3.JPG&amp;diff=634"/>
				<updated>2012-02-12T19:50:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=606</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=606"/>
				<updated>2012-02-08T19:22:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : ptea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|right|]]Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2.JPG|200px|thumb|right|]]Nous avons ensuite mis en place la foxboard puis le capteur. Nous avons installé la Foxboard en premier afin d'équilibrer le système tout entier.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:2.JPG&amp;diff=605</id>
		<title>Fichier:2.JPG</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:2.JPG&amp;diff=605"/>
				<updated>2012-02-08T19:16:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=604</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=604"/>
				<updated>2012-02-06T10:32:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|right|]]Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=603</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=603"/>
				<updated>2012-02-06T10:31:44Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|right|]]Nous avons construit labase de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=602</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=602"/>
				<updated>2012-02-06T10:27:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
''Construction de la base et des chaînes servant au déplacement du robot.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.JPG|200px|thumb|left|Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=601</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=601"/>
				<updated>2012-02-06T10:22:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
''Construction de la base et des chaînes servant au déplacement du robot.''&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Base.jpg]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Base.JPG&amp;diff=600</id>
		<title>Fichier:Base.JPG</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Fichier:Base.JPG&amp;diff=600"/>
				<updated>2012-02-06T10:13:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionn&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nous avons construit la base de la structure du robot incluant trois moteurs. Puis, nous avons monté les roues avec dans un premier temps des chaînes. Finalement, nous avons opté pour des pneus car les chaînes n'étaient pas assez tendues et occasionnaient des frottements.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=589</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=589"/>
				<updated>2012-02-06T07:16:53Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Construction d'un robot destiné à être synchronisé avec un autre robot.'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''30/01/2012'''&lt;br /&gt;
&lt;br /&gt;
''Construction de la base et des chaînes servant au déplacement du robot.''&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=577</id>
		<title>Synchronize2011-1</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=Synchronize2011-1&amp;diff=577"/>
				<updated>2012-01-30T09:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : Page créée avec « 30/01/2012  Construction de la base et des chaînes servant au déplacement du robot. »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;30/01/2012&lt;br /&gt;
&lt;br /&gt;
Construction de la base et des chaînes servant au déplacement du robot.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2011-2012&amp;diff=560</id>
		<title>BE 2011-2012</title>
		<link rel="alternate" type="text/html" href="https://peip-ima.plil.fr/mediawiki/index.php?title=BE_2011-2012&amp;diff=560"/>
				<updated>2012-01-30T07:50:05Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= But à atteindre =&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Matériel à votre disposition =&lt;br /&gt;
&lt;br /&gt;
[[Image:boite_mindstorm.jpg|150px|right]]&lt;br /&gt;
[[Image:foxboard.jpg|150px|left]]&lt;br /&gt;
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 &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Répartition des tâches =&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
== Robot suiveur de ligne ==&lt;br /&gt;
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.&lt;br /&gt;
* 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 ;&lt;br /&gt;
* si le marquage ne peut pas être retrouvé, se remettre dans la position de la perte initiale et partir tout droit ;&lt;br /&gt;
* se remettre dans l'axe du marquage lorsque ce marquage est retrouvé ;&lt;br /&gt;
* s'arrêter quand un obstacle se présente devant lui et repartir si l'obstacle disparait ;&lt;br /&gt;
* changer de parcours sur commande, c'est à dire emprunter un parcours d'une couleur différente dès qu'il est rencontré ;&lt;br /&gt;
* inverser son sens de parcours.&lt;br /&gt;
&lt;br /&gt;
Voici des exemples de parcours discontinus pouvant être suivis dans les deux sens.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Parcours-carre.png|Parcours carré&lt;br /&gt;
File:Parcours-cercle.png‎|Parcours avec arcs&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Page&amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Prenom Nom, Prenom Nom &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Boite lego MindStorm&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Scotch de couleur&amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; [[SuiveurLigne2011-1|Robot suiveur de ligne 1]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Robots synchronisés ==&lt;br /&gt;
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 :&lt;br /&gt;
&lt;br /&gt;
* séparés, les robots avancent tout droit et s'arrêtent dès qu'ils détectent un obstacle avec leur sonar ;&lt;br /&gt;
* les deux robots doivent pouvoir être couplés côte à côte ;&lt;br /&gt;
* dans le mode couplé, les robots avancent quand aucun obstacle n'est détecté par leurs sonars ;&lt;br /&gt;
* 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é.&lt;br /&gt;
&lt;br /&gt;
La communication entre les deux robots se fait par &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Page&amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Nathan MARTIN, Charlotte BRICOUT &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Boite lego MindStorm&amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; [[Synchronize2011-1|Robot communicant 1]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Prenom Nom, Prenom Nom &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;Boite lego MindStorm&amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; [[Synchronize2011-2|Robot communicant 2]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Robot suiveur RFID ==&lt;br /&gt;
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 :&lt;br /&gt;
&lt;br /&gt;
* trouver sous une marque de couleur précise (feuille A4, disque, ...) une carte RFID ;&lt;br /&gt;
* 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 ;&lt;br /&gt;
* mémoriser des caps en fonction des identifiants des cartes RFID.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de parcours en suivant des marques RFID.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Parcours-marques.png|Parcours RFID&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Page&amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Florian Lemaire, Victor Sallé &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Boite lego MindStorm&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Module RFID&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Cartes RFID&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;module boussole&amp;lt;/span&amp;gt;,  &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Marques de couleur&amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; [[SuiveurRFID2011-1|Robot suiveur RFID 1]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Robot naviguant aux instruments ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
Intégrez les comportements pour obtenir un robot capable de contourner les obstacles avec un minimum d'intelligence.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de contournement d'obstacle avec l'algorithme décrit.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Parcours-boussole.png|Contournement d'obstacle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Page&amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Prenom Nom, Prenom Nom &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Boite lego MindStorm&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Module boussole&amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; [[Boussole2011-1|Robot boussole 1]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Robot téléguidé avec système embarqué ==&lt;br /&gt;
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 &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt;, 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 &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt;. 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 &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt;. 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]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Page&amp;lt;/th&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; Jean-Dominique Lancieri - Thomas Maurice &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;  &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Boite lego MindStorm&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Téléphone Android&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;FoxBoard avec webcam, interface WiFi, convertisseur &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt;&amp;lt;/span&amp;gt;, &amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;Boitier piles&amp;lt;/span&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; [[Teleguide2011-1|Robot téléguidé 1]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Intégration des fonctionnalités =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Le comportement en mode autonome est plus complexe :&lt;br /&gt;
* 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 ;&lt;br /&gt;
* le contrôleur peut demander à un robot de changer de sens de parcours ou de changer de couleur de parcours ;&lt;br /&gt;
* dès qu'il trouve une carte RFID sur ce marquage, la FoxBoard est prévenue et stocke une image correspondant à l'identifiant de la carte RFID ;&lt;br /&gt;
* les robots communiquent en &amp;lt;tt&amp;gt;bluetooth&amp;lt;/tt&amp;gt; à leur FoxBoard la couleur du parcours suivi, les FoxBoard diffusent cette information entre elles ;&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Matériel&amp;lt;/th&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Boite lego MindStorm&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Module RFID&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Module boussole&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Téléphone Android&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;FoxBoard&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;WebCam&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Adaptateur USB/WiFi&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Adaptateur BlueTooth&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Hub USB&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;Boitier piles&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Nombre&amp;lt;/th&amp;gt;&lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;7/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;7/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: orange;&amp;quot;&amp;gt;7/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;8/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;8/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;8/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;8/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;?/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;?/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
     &amp;lt;td&amp;gt;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;?/8&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Démonstration finale =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de double parcours.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Parcours-double.png|Parcours double&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	</feed>