BE 2014-2015 : Différence entre versions

De Wiki de bureau d'études PeiP
(Notation)
 
(79 révisions intermédiaires par 14 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
= Objectif à atteindre =
 
= Objectif à atteindre =
  
Le contexte de ce bureau d'études est un jeu de balle. Deux robots se font face sur un terrain (voir ci-dessous), doivent se saisir de la balle et la porter dans le but adverse.  
+
Le contexte de ce bureau d'études est un jeu de balle. Deux robots se font face sur un terrain, doivent repérer la balle et la propulser dans le but adverse. Vous trouverez, ci-dessous, une représentation possible du terrain. Les bandes peuvent être réalisées avec de l'adhésif de couleur. Les limites du terrain sont doublées avec une barrière pour empêcher la balle de sortir.
[[Image:terrain.png|500px|center]]
+
 
 +
[[Image:TerrainCouleur.png|500px|center]]
  
 
Les robots ne sont pas les seuls acteurs dans ce jeu. Les buts ont aussi un rôle à assurer, un dispositif de remise de la balle au centre est nécessaire ainsi qu'un arbitre.
 
Les robots ne sont pas les seuls acteurs dans ce jeu. Les buts ont aussi un rôle à assurer, un dispositif de remise de la balle au centre est nécessaire ainsi qu'un arbitre.
  
 
Les différents différents rôles des acteurs sont décrits ci-après.
 
Les différents différents rôles des acteurs sont décrits ci-après.
* Les buts doivent s'annoncer aux robots en utilisant des LEDs infra-rouges modulées avec une fréquence compatible avec les détecteurs des robots. Les buts doivent disposer d'un mécanisme capable de capturer la balle dès qu'elle rentre dans la cage. Un message est alors envoyé à l'arbitre qui met le score à jour. Sur commande de l'arbitre, le but relance la balle vers le centre du terrain.
+
* Le rôle principal de l'arbitre est de communiquer avec les autres acteurs (robots et buts). Quand un but est marqué, l'arbitre met le score à jour. Ce score est affiché sur des afficheurs dédiés. C'est aussi l'arbitre qui commande la remise au centre de la balle. Enfin l'arbitre ordonne aux robots de se placer et leur indique quand ils peuvent jouer une manche.
* Le rôle principal de l'arbitre est de communiquer avec les autres acteurs (robots et buts). Quand un but est marqué, l'arbitre met le score à jour. Ce score est affiché sur des afficheurs 7 segments. C'est aussi l'arbitre qui commande la remise au centre de la balle. Enfin l'arbitre ordonne aux robots de se placer et leur indique quand ils peuvent se lancer.
+
* Les buts doivent s'annoncer aux robots par infra-rouge. Les buts doivent disposer d'un mécanisme capable de capturer la balle dès qu'elle rentre dans la cage. L'évenement "but marqué" est alors envoyé à l'arbitre. Sur commande de l'arbitre, le but relance la balle vers le centre du terrain.
*  
+
* Les robots ont comme tâche principale de s'approcher de la balle et de la lancer vers le but adverse. Les robots ne peuvent avancer que s'ils ne détectent pas d'obstacle à faible distance. Un robot ne repérant plus la balle peut se replier devant son but pour le bloquer. Un robot de jeu ne peut pas sortir du terrain.
* Les robots ont comme tâche principale de capturer la balle et de la lancer dans le but adverse. Les robots ne peuvent avancer que s'ils ne détectent pas d'obstacle à faible distance. Un robot ne repérant plus la balle peut se replier devant son but pour le bloquer.
+
* Le dispositif de remise au centre de la balle est un robot qui capture la balle et va la déposer au point d'engagement en se repérant sur les marques au sol. Ce robot opère lorsque l'arbitre le demande et prévient l'arbitre lorsque la tâche est réalisée.
 
 
Les robots vont devoir s'affronter par paires. Le but d'une paire de robot est d'arriver à envoyer l'unique balle dans le but adverse sans qu'il leur arrive la même chose. Il n'y a pas de spécialisation dans les robots. Chacun pouvant attaquer ou défendre. Un robot qui trouve la balle va chercher à l'attraper et à la lancer sans rentrer en contact avec un autre robot. Un robot qui ne trouve pas la balle va se replier sur un rôle de défenseur. Les robots ne peuvent, bien entendu, pas quitter le terrain.
 
 
 
Pour repérer la balle et les buts des signaux modulés dans l'infra-rouge vont être utilisés. La balle et les buts ne moduleront pas suivant la même fréquence. Les robots vont devoir se repérer dans le terrain en utilisant un détecteur de couleur et des lignes au sol. Ils peuvent aussi se répérer via un pavage non couvrant du terrain par des cartes RFID.
 
  
Dans ce dispositif, les buts sont des objets intelligents capable d'interagir avec la balle et les robots.
+
Pour que les robots puissent différencier les buts de la balle, les buts font clignoter leurs LEDs infrarouges suivant un code pré-établi.
  
Pour 2013/2014, il est juste prévu d'explorer le thème, réaliser des compétitions entre robots autonomes paraissant encore hors d'atteinte. Pour pouvoir tout de même présenter des compétitions entre robots, des équipes réaliseront des robots télécommandés par WiFi. Des compétitions pourront donc avoir lieu mais entre humains, par l'intermédiaire des robots.
+
Les communications entre les acteurs s'effectuent par <tt>bluetooth</tt>. Les robots et les buts s'apparient avec l'arbitre et ne communiquent qu'avec lui. Votre premier travail consiste à analyser toutes les informations contenues dans cette page et à établir un schéma des communications qui doivent avoir lieu durant un jeu complet.
  
 
= Matériel à votre disposition =
 
= Matériel à votre disposition =
 
{| style="float: right; height: 160px; margin-left:0.2em; border: 1px solid #bbb;"
 
{| style="float: right; height: 160px; margin-left:0.2em; border: 1px solid #bbb;"
 
| style="border: 1px solid #bbb;" valign="top" |[[File:boite_mindstorm.jpg|150px]]
 
| style="border: 1px solid #bbb;" valign="top" |[[File:boite_mindstorm.jpg|150px]]
 +
| style="border: 1px solid #bbb;" valign="top" |[[File:ev3.png|120px]]
 
|- style="font-size: 87%; text-align: center;"
 
|- style="font-size: 87%; text-align: center;"
 
| valign="center" | Legos Mindstorm
 
| valign="center" | Legos Mindstorm
 
|}
 
|}
 
{| style="float: left; height: 160px; margin-left:0.2em; border: 1px solid #bbb;"
 
{| style="float: left; height: 160px; margin-left:0.2em; border: 1px solid #bbb;"
| style="border: 1px solid #bbb;" valign="top" |[[File:foxboard.jpg|150px]]
+
| style="border: 1px solid #bbb;" valign="middle" |[[File:pcduino1.png|150px]]
| style="border: 1px solid #bbb;" valign="top" |[[File:arduino.jpg|150px]]
+
| style="border: 1px solid #bbb;" valign="top" |[[File:attiny85.png|150px]]
 
|- style="font-size: 87%; text-align: center;"
 
|- style="font-size: 87%; text-align: center;"
| valign="center" | Système FoxBoard
+
| valign="center" | Système pcDuino1
| valign="center" | Platine Arduino
+
| valign="center" | AVR attiny85
 
|}
 
|}
Les couches basses des robots et des buts seront réalisées à l'aide de Lego MindStorm. Le Lego va permettre de réaliser le chassis des robots avec sa motorisation et d'y installer divers capteurs. Le lego permettra aussi de réaliser les cages des buts avec les émetteurs infra-rouges, le dispositif de test de présence de la balle et le dispositif d'éjection. Il est même possible d'assurer une certaine communication entre robots et buts grâce à la technologie <tt>bluetooth</tt> intégrée au micro-contrôleur MindStorm. Pour aller plus loin, il est nécessaire d'embarquer un micro-PC de type FoxBoard sur les robots. C'est ce micro-PC qui permettra les acquisitions d'images et c'est à lui qui transmettera au micro-contrôleur du MindStorm les ordres de déplacement ou de lancement de balle. Pour réaliser le signal de repérage des buts, une platine Arduino sera utilisée.
+
Les robots et les buts doivent être réalisées à l'aide de Lego MindStorm. Le Lego va permettre de réaliser le chassis des robots avec sa motorisation et d'y installer divers capteurs. Le Lego permet aussi de réaliser les cages des buts, leur dispositif de capture de la balle et leur dispositif d'éjection.
 +
 
 +
La communication des robots et des buts vers l'arbitre doit se faire grâce à la technologie <tt>bluetooth</tt> intégrée au micro-contrôleur MindStorm.
 +
 
 +
Pour la localisation des buts, des balises doivent être construites à base de LEDs infra-rouges modulées à l'aide d'une fréquence compatible avec les détecteurs des robots. Vous réaliserez un petit circuit électronique à base de micro-contrôleur AVR <tt>tiny85</tt>.
 +
 
 +
Pour l'arbitre un système embarqué de type pcDuino est nécessaire. Doit lui être adjoint un adaptateur USB <tt>bluetooth</tt> pour permettre la communication avec les contrôleurs MindStorm. Les afficheurs seront réalisés à partir de platines séries contrôlant des afficheurs 7 segments. Ces platines peuvent être contrôlées via le bus SPI du pcDuino.
 +
 
 +
Pour la programmation des micro-contrôleurs MindStorm, vous pouvez utiliser le logiciel graphique fourni mais vous êtes encouragés à tester le langage [http://bricxcc.sourceforge.net/nbc/ NXC] (Not eXactly C) qui permet d'écrire efficacement des programmes plus conséquents.  
  
 
<br style="clear: both" />
 
<br style="clear: both" />
Ligne 40 : Ligne 46 :
  
 
Chaque binôme va se voir affecter une des problématiques décrites dans les sous-sections suivantes.
 
Chaque binôme va se voir affecter une des problématiques décrites dans les sous-sections suivantes.
 +
 +
== Arbitre ==
 +
{| style="float: right; height: 140px; margin-left:0.2em; border: 1px solid #bbb;"
 +
| style="border: 1px solid #bbb;" valign="top" |[[File:Serie7segments.png|150px]]
 +
|- style="font-size: 87%; text-align: center;"
 +
| valign="center" | Afficheurs 7 segments
 +
|}
 +
L'arbitre est réalisé à partir d'un système embarqué de type pcDuino. Les différentes tâches à réaliser sont décrites ci-dessous.
 +
* Utiliser le bus SPI du pcDuino pour contrôler l'afficheur 7 segments.
 +
* Etablir la communication <tt>bluetooth</tt> avec les robots et les buts, vous pouvez vous baser sur les [[https://peip-ima.polytech-lille.net:40001/archive/FoxLego-2012.tar sources C]] déjà développées les années précédentes.
 +
* Implanter l'algorithme d'arbitrage décrit ci-après.
 +
** demander aux robots d'aller se garer ;
 +
** demander aux cages de but d'éjecter la balle ;
 +
** demander au ramasseur de balle d'opérer, revenir au premier point en cas d'échec du ramasseur ;
 +
** demander aux robots de lancer la partie après que le ramasseur de balle ait terminé son travail ;
 +
** attendre l'événement "but marqué" pour mettre à jour le score, revenir au premier point ;
 +
** en cas d'attente trop longue, revenir au premier point.
 +
 +
Pour cette saison, aucun binôme, n'ayant pris cet atelier, un arbitre a été développé sur un eeePC. Les boîtes aux lettres utilisées pour la communication ont le numéro 1 pour les boîtes des acteurs et le numéro 2 pour la boîte de l'arbitre. Il vous reste à écrire la partie communication pour les acteurs en NXC avec les fonctions <tt>SendMessage</tt> et <tt>ReceiveMessage</tt>.
 +
 +
Les codes pouvant être envoyés dans la boite d'un but sont :
 +
#define CODE_REQTYPE            0 // demander le type de l'acteur
 +
#define CODE_EJECTER            1 // ordonne l'éjection de la balle
 +
 +
Les codes pouvant être envoyés dans la boite d'un robot sont :
 +
#define CODE_REQTYPE            0 // demander le type de l'acteur
 +
#define CODE_PLACER            1 // ordonne au robot de se garer
 +
#define CODE_JOUER              2 // permet de démarrer la manche
 +
 +
Les codes pouvant être envoyés dans la boîte d'un ramasseur sont :
 +
#define CODE_REQTYPE            0 // demander le type de l'acteur
 +
#define CODE_RAMASSER          1 // ordonne le placement de la balle
 +
 +
En réponse à la demande d'un type d'acteur, les codes suivants peuvent être envoyés dans la boîte de l'arbitre :
 +
#define TYPE_BUT                0
 +
#define TYPE_JOUEUR            1
 +
#define TYPE_RAMASSEUR          2
 +
Dans les autres circonstances les codes pouvant être envoyés dans la boîte de l'arbitre sont :
 +
#define CODE_GARE              1 // un robot est garé
 +
#define CODE_BALLEOK            2 // la balle est placé au centre
 +
#define CODE_BUT                3 // un but est marqué
 +
 +
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Prénom Nom / Prénom Nom </td>
 +
  <td> <span style="color:green">pcDuino</span>, <span style="color:green">Adaptateur USB/<tt>bluetooth</tt></span>, <span style="color:green">Afficheurs 7 segments</span> </td>
 +
  <td> [[ArbitreRobots2014-1|Arbitre 1]] </td>
 +
</tr>
 +
</table>
  
 
== Cage de but ==
 
== Cage de but ==
 
Une cage de but doit comporter les dispositifs décrits ci-dessous.
 
Une cage de but doit comporter les dispositifs décrits ci-dessous.
* La cage doit émettre un signal infra-rouge pour être facilement repérable par les robots. Pour cela vous partirez de LED infra-rouges et vous modulerez leur alimentation par une platine Arduino pour émettre un signal facilement identifiable. Ajouter quelques LED dans le visible pour mimer la fréquence dans l'infra-rouge ne peut pas nuire.
+
* La cage doit émettre un signal infra-rouge pour être facilement repérable par les robots.  
 
* La cage doit détecter quand la balle rentre dans la cage en la dirigeant précisement vers un capteur de contact.
 
* La cage doit détecter quand la balle rentre dans la cage en la dirigeant précisement vers un capteur de contact.
* La cage doit signaler un but à l'ensemble des robots en comptétion et à l'autre cage. Elle tient aussi le compte du score.
+
* La cage doit signaler un but à l'arbitre.
* Enfin la cage doit pouvoir expulser la balle quand les robots se sont repositionnés sur le terrain pour une nouvelle action.
+
* Enfin la cage doit pouvoir expulser la balle quand l'arbitre le demande.
 +
 
 +
Il existe des sites Web décrivant des montages électroniques pour réaliser une [http://ftcforum.usfirst.org/showthread.php?2147-DIY-IR-Beacon-using-Arduino-or-ATTiny-chip balise infra-rouge]. Votre balise doit pouvoir alterner des séquences d'émission et d'arrêt de période déterminée pour permettre de différencier les buts. Pour aller plus loin, prévoyez une LED classique pour indiquer les période d'émission et d'arrêt ainsi qu'un bouton pour sélectionner la durée en seconde des périodes d'allumage. Enfin concevez un circuit imprimé pour votre montage. Vous pouvez vous inspirer de ce [[Media:Balise.zip|routage]] sous Eagle.
 +
 
 +
L'algorithme de communication d'un but avec l'arbitre est donné ci-dessous :
 +
 
 +
Attente du code "requête de type" (0) dans la boîte du but (1)
 +
Envoi du "type but" (0) dans la boîte de l'arbitre (2+10)
 +
Répéter
 +
  Attente du code "éjection de balle" (1) dans la boîte du but (1)
 +
  Attendre que la balle entre dans la cage
 +
  Envoyer le code "but marqué" (3) dans la boîte de l'arbitre (2+10)
 +
Jusqu'à la fin du jeu 
  
 
<table border="1">
 
<table border="1">
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
<tr>
 
<tr>
   <td> Raphaël De Clercq - Nicolas Duflos </td>
+
   <td> Vivian Senaffe / Florian Saïz </td>
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">LED Infra-rouge</span>, <span style="color:green">Arduino UNO</span> </td>
+
   <td> <span style="color:green">Boite Lego MindStorm</span>, <span style="color:green">LEDs infra-rouge</span>, <span style="color:green">AVR attiny85</span>, <span style="color:green">Composants électroniques pour balise</span> </td>
   <td> [[CageBut2013-1|Cage de but 1]] </td>
+
   <td> [[CageBut2014-1|Cage de but 1]] </td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <td> Basile Lacombe-Bar - Matthieu Herwegh </td>
+
   <td> Aurélien Caffiaux / Carl Duchemin </td>
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">LED Infra-rouge</span>, <span style="color:green">Arduino UNO</span> </td>
+
   <td> <span style="color:green">Boite Lego MindStorm</span>, <span style="color:green">LEDs infra-rouge</span>, <span style="color:green">AVR attiny85</span>, <span style="color:green">Composants électroniques pour balise</span> </td>
   <td> [[CageBut2013-2|Cage de but 2]] </td>
+
   <td> [[CageBut2014-2|Cage de but 2]] </td>
 
</tr>
 
</tr>
 +
<tr>
 +
  <td> Jules-Eric Clement / Sébastien Delannoy </td>
 +
  <td> <span style="color:green">Boite Lego MindStorm</span>, <span style="color:green">LEDs infra-rouge</span>, <span style="color:green">AVR attiny85</span>, <span style="color:green">Composants électroniques pour balise</span> </td>
 +
  <td> [[CageBut2014-3|Cage de but 3]] </td>
 +
</tr>
 +
<tr>
 +
<td> Paul Knockaert / Florian Waels </td>
 +
  <td> <span style="color:green">Boite Lego MindStorm</span>, <span style="color:green">LEDs infra-rouge</span>, <span style="color:green">AVR attiny85</span>, <span style="color:green">Composants électroniques pour balise</span> </td>
 +
  <td> [[CageBut2014-4|Cage de but 4]] </td>
 
</table>
 
</table>
  
== Robots d'attaque ==
+
== Robots de compétition ==
Pour simplifier la conception des robots compétiteurs, les comportements d'attaque et de défense sont séparés. Pour cet atelier, il est demandé de se pencher sur le comportement d'attaque.
+
Un robot de compétition doit pouvoir se garer pour permettre au ramasseur de balle d'opérer. Avec le terrain proposé vous pouvez appliquer l'algorithme suivant :
 +
* Commencer par chercher une ligne médiane (ligne bleue). Une méthode consiste à aller en ligne droite et à rebondir sur les limites du terrain (ligne rouge).
 +
* Une fois sur une ligne bleue, la suivre, faire un demi-tour si la ligne se termine par du noir ou du vert. Si la ligne se termine par du jaune, traverser le jaune et tourner de 90° toujours dans le même sens.
 +
* Faire un demi-tour, repérer le bon but par infra-rouge, suivre la ligne rouge vers le but.
 +
* Prendre le chemin de la ligne noire, faire un demi-tour, le robot est garé.
  
Il s'agit du comportement d'un robot lorsqu'il a su repérer la balle.
+
Lorsque qu'un robot de compétition a repéré la balle, il effectue les actions suivantes.
 
* Il se dirige vers la balle pour la capturer. Une fois la balle capturée le robot ne se déplace plus en translation.
 
* Il se dirige vers la balle pour la capturer. Une fois la balle capturée le robot ne se déplace plus en translation.
 
* Il lance la balle vers le but adverse. Une rotation peut être nécessaire pour l'envoi.
 
* Il lance la balle vers le but adverse. Une rotation peut être nécessaire pour l'envoi.
Ligne 71 : Ligne 152 :
 
D'un point de vue mécanique certains dispositifs doivent être étudiés.
 
D'un point de vue mécanique certains dispositifs doivent être étudiés.
 
* Un dispositif de capture de la balle, un simple récupérateur non articulé devrait suffire.
 
* Un dispositif de capture de la balle, un simple récupérateur non articulé devrait suffire.
* Un dispositif de lancement. Vous pouvez étudier le lancement en utilisant un servo-moteur ou un dispositif de rotation du robot.
+
* Un dispositif de lancement. Vous pouvez considérer le lancement par gravité, en utilisant un servo-moteur ou en utilisant la force centrifuge.
  
Les capteurs nécessaires à un robot d'attaque sont décrits ci-dessous.
+
Si le robot ne trouve pas la balle, il peut considérer qu'elle est en possession d'un robot adverse. Dans ce cas, le robot doit se rapprocher de toutes ses roues de son but pour en bloquer l'accès.
 +
 
 +
En aucun cas, le robot ne doit quitter l'aire de jeu durant une partie.
 +
 
 +
Les capteurs nécessaires à un robot de compétition sont décrits ci-dessous.
 
* Le capteur infra-rouge pour se diriger vers la balle et estimer la position du but.
 
* Le capteur infra-rouge pour se diriger vers la balle et estimer la position du but.
 
* Le capteur ultra-son pour éviter de percuter les objets (buts et autres robots).
 
* Le capteur ultra-son pour éviter de percuter les objets (buts et autres robots).
 
* Un capteur de couleur pour éviter de sortir du terrain.
 
* Un capteur de couleur pour éviter de sortir du terrain.
 +
 +
L'algorithme de communication d'un joueur avec l'arbitre est donné ci-dessous :
 +
 +
Attente du code "requête de type" (0) dans la boîte du joueur (1)
 +
Envoi du "type joueur" (1) dans la boîte de l'arbitre (2+10)
 +
Répéter
 +
  Attente du code "aller au garage" (1) dans la boîte du joueur (1)
 +
  Garer le robot
 +
  Envoyer le code "robot garé" (1) dans la boîte de l'arbitre (2+10)
 +
  Attente du code "manche démarrée" (2) dans la boîte du joueur (1)
 +
  Tenter de marquer un but
 +
Jusqu'à la fin du jeu
  
 
<table border="1">
 
<table border="1">
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
<tr>
 
<tr>
   <td> Etienne Radenne - Dolovan Tomasek </td>
+
   <td> Loïc Tombazzi / Eddine Farid Omar </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
   <td> [[RobotAttaque2013-1|Robot d'attaque 1]] </td>
+
   <td> [[RobotCompetition2014-1|Robot de compétition 1]] </td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <td> Kévin Debaets - Simon Delaine </td>
+
   <td> Yves-Alain Agbodjogbe / Anthony Casisa </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
   <td> [[RobotAttaque2013-2|Robot d'attaque 2]] </td>
+
   <td> [[RobotCompetition2014-2|Robot de compétition 2]] </td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
<td> Rémy Coste - Thibault François </td>
+
  <td> Antoine Mariette / Victor Forney </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
   <td> [[RobotAttaque2013-3|Robot d'attaque 3]] </td>
+
   <td> [[RobotCompetition2014-3|Robot de compétition 3]] </td>
 
</tr>
 
</tr>
</table>
 
 
== Robot de défense ==
 
Le second comportement nécessaire à nos robots compétiteurs est le comportement de défense. C'est le comportement qu'adopte un robot lorsqu'il ne trouve plus la balle dans le doute qu'un autre robot l'ait capturée. Dans ce cas de figure le robot doit se rapprocher de toutes ses roues de son but pour le défendre.
 
 
Toute la difficulté de cette tâche consiste à se repérer sur le terrain. Pour cela le robot dispose de plusieurs moyens.
 
* Il peut repérer par infra-rouge son but.
 
* Chacune des zones du terrain peut être délimitée par une couleur spécifique à la zone. Le robot peut ainsi se situer dès qu'il tombe sur une ligne.
 
* Le terrain peut être pavé de cartes RFID. Il suffit d'associer aux identifiants des cartes leur position pour permettre un repérage très précis.
 
 
Votre but est d'essayer les différentes méthodes pour pouvoir les tester et les comparer. Il faudra peut être les mixer pour obtenir une méthode efficace dans toutes les situations.
 
 
Votre robot doit bien entendu ne jamais sortir du terrain (une partie du robot doit toujours être sur le terrain) et il ne doit pas rentrer dans les obstacles. Vous établirez aussi une règle pour que les robots ne puissent pas totalement obstruer le but.
 
 
Les capteurs nécessaires à un robot d'attaque sont décrits ci-dessous.
 
* Le capteur infra-rouge pour se diriger vers son but.
 
* Le capteur ultra-son pour éviter de percuter les objets (buts et autres robots).
 
* Un capteur de couleur pour reconnaître la zone et éviter de sortir du terrain.
 
* Un capteur RFID pour lire les cartes RFID de pavage du terrain.
 
 
 
 
 
<table border="1">
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
 
<tr>
 
<tr>
   <td> Jeremy Couvrat - Hugo Vandenbunder </td>
+
   <td> Lisa Izzouzi / Marius Trimbur </td>
  <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span>, <span style="color: green;">Module RFID</span>, <span style="color: green;">Cartes RFID</span> </td>
+
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
  <td> [[RobotDefense2013-1|Robot de défense 1]] </td>
+
   <td> [[Robot de compétition 4]] </td>
</tr>
 
<tr>
 
  <td> Yassir Osman - Yassine Laanaia </td>
 
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span>,  <span style="color: green;">Module RFID</span>, <span style="color: green;">Cartes RFID</span> </td>
 
   <td> [[RobotDefense2013-2|Robot de défense 2]] </td>
 
 
</tr>
 
</tr>
 
</table>
 
</table>
  
== Robot téléguidé avec système embarqué ==
+
== Robot ramasseur de balle ==
Votre robot doit pouvoir être radio-guidé par un contrôleur. Le dit contrôleur peut diriger le robot au vu de l'image de la webcam embarquée. L'acquisition de la webcam et sa diffusion par WiFi est assuré par un système embarqué FoxBoard. La FoxBoard vous sera livrée configurée mais il faudra l'embarquer dans votre robot avec tous ses accessoires (webcam, module <tt>bluetooth</tt>, boitier de piles). Un calcul du temps d'autonomie doit être effectué. Dans un premier temps le radio-guidage peut se faire à l'aide du logiciel MindStorm par <tt>bluetooth</tt>. Dans un second temps il faut étudier la possibilité d'un radio-guidage par WiFi, les ordres étant transmis par un navigateur Web au serveur Web de la FoxBoard puis transmis au micro-contrôleur MindStorm par <tt>bluetooth</tt>. Vous aurez le choix de programmer votre robot avec le logiciel MindStorm ou avec un langage de bas niveau proche du langage C (voir la page web [http://www.eggwall.com/2011/08/lego-nxt-mindstorm-with-linux.html]).
+
Le robot ramasseur de balle doit réaliser les actions décrites ci-dessous.
 +
* Trouver la balle, se diriger vers elle et la capturer.
 +
* Trouver la marque de centre de terrain, relacher la balle.
 +
* Prévenir l'arbitre.
 +
* Retourner sur sa base.
  
Pour pouvoir utiliser votre robot dans une compétition de balle, il devra comporter un dispositif de lancer de balle commandable lui aussi à distance. Pour cela vous devrez modifier légérement le logiciel installé sur la FoxBoard.  
+
Pour trouver le centre du terrain et retourner à la base, un algorithme possible est :
 +
* Commencer par chercher une ligne médiane (ligne bleue). Une méthode consiste à aller en ligne droite et à rebondir sur les barrières.
 +
* Une fois sur une ligne bleue, la suivre, faire un demi-tour si la ligne se termine par du rouge ou du vert. Si la ligne se termine par du jaune, traverser le jaune et tourner de 90° toujours dans le même sens.
 +
* La marque noire indique la base du ramasseur, faire demi-tour, s'arrêter sur la marque jaune du centre du terrain, lâcher la balle.
 +
* Reculer, faire demi-tour, suivre la ligne bleue puis la ligne noire, faire demi-tour, le ramasseur est garé.
  
 +
Le robot ramasseur de balle se met en marche quand l'arbitre lui demande, voici l'algorithme de communication avec l'arbitre :
  
Pour configurer la FoxBoard avec tout le matériel nécessaire, suivez les [[FoxBoard pour MindStorm 2012|instructions]]. Pour une description du système à obtenir suivez la [[FoxBoard MindStorm système 2013|flèche]].
+
Attente du code "requête de type" (0) dans la boîte du ramasseur (1)
 +
Envoi du "type ramasseur" (0) dans la boîte de l'arbitre (2+10)
 +
Répéter
 +
  Attente du code "ramassage de balle" (1) dans la boîte du ramasseur (1)
 +
  Repérer la balle et la poser au centre du terrain (point jaune)
 +
  Retourner à la base
 +
  Envoyer le code "balle posée" (2) dans la boîte de l'arbitre (2+10)
 +
Jusqu'à la fin du jeu
  
 
<table border="1">
 
<table border="1">
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 
<tr>
 
<tr>
   <td> Thomas Roj - Romuald Lentieul</td>
+
   <td> Amina Fahem / Marianne Butaye </td>
   <td> <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Téléphone Android</span>, <span style="color: green;">FoxBoard avec webcam, interface WiFi, convertisseur <tt>bluetooth</tt></span>, <span style="color: green;">Boitier piles</span> </td>
+
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
   <td> [[Teleguide2013-1|Robot téléguidé 1]] </td>
+
   <td> [[RobotRamasseur2014-1|Robot ramasseur de balle 1]] </td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <td> Audrey Affoyon - Nicolas Blondel </td>
+
   <td> Thomas Gosse / François Lefevre </td>
   <td> <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Téléphone Android</span>, <span style="color: green;">FoxBoard avec webcam, interface WiFi, convertisseur <tt>bluetooth</tt></span>, <span style="color: green;">Boitier piles</span> </td>
+
   <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
   <td> [[Teleguide2013-2|Robot téléguidé 2]] </td>
+
   <td> [[RobotRamasseur2014-2|Robot ramasseur de balle 2]] </td>
</tr>
 
<tr>
 
  <td> Simon Joncquez - Jordan Razafindraibe </td>
 
  <td> <span style="color: green;">Boite lego MindStorm</span>, <span style="color: green;">Téléphone Android</span>, <span style="color: green;">FoxBoard avec webcam, interface WiFi, convertisseur <tt>bluetooth</tt></span>, <span style="color: green;">Boitier piles</span> </td>
 
  <td> [[Teleguide2013-3|Robot téléguidé 3]] </td>
 
 
</tr>
 
</tr>
 
</table>
 
</table>
  
= Intégration des fonctionnalités =
+
= Interaction entre les acteurs =
 
+
Constituez un groupe complet d'acteurs avec 2 cages de buts, 2 robots de compétition, un robot de ramassage de balle et un arbitre.
Pour l'année 2013/2014, il ne vous est demandé que de montrer le bon fonctionnement du dispositif ci-avant dont vous aurez choisi de vous occuper.
+
Vérifiez que le match se déroule correctement.
 
 
Cela dit dans l'idéal, une démonstration complète pourrait être présentée avec le travail supplémentaire décrit dans la suite.
 
* Les équipes des robots d'attaque et de défense fussionnent leurs robots pour en faire des compétiteurs complets.
 
* Les équipes ayant travaillé sur les cages réalisent un terrain et implantent dans les robots la réception des buts marqués.
 
* Les équipes des robots télécommandés organisent une compétition sur un terrain avec deux buts avec remontée automatique du score sur le dispositif de télécommande.
 
 
 
= Notation =
 
 
 
{| class="wikitable"
 
! Noms !! Rapport Wiki !! Soutenance vidéo !! Total
 
|-
 
|
 
|
 
|
 
|
 
|
 
|
 
|}
 

Version actuelle datée du 28 mai 2015 à 16:49

Objectif à atteindre

Le contexte de ce bureau d'études est un jeu de balle. Deux robots se font face sur un terrain, doivent repérer la balle et la propulser dans le but adverse. Vous trouverez, ci-dessous, une représentation possible du terrain. Les bandes peuvent être réalisées avec de l'adhésif de couleur. Les limites du terrain sont doublées avec une barrière pour empêcher la balle de sortir.

TerrainCouleur.png

Les robots ne sont pas les seuls acteurs dans ce jeu. Les buts ont aussi un rôle à assurer, un dispositif de remise de la balle au centre est nécessaire ainsi qu'un arbitre.

Les différents différents rôles des acteurs sont décrits ci-après.

  • Le rôle principal de l'arbitre est de communiquer avec les autres acteurs (robots et buts). Quand un but est marqué, l'arbitre met le score à jour. Ce score est affiché sur des afficheurs dédiés. C'est aussi l'arbitre qui commande la remise au centre de la balle. Enfin l'arbitre ordonne aux robots de se placer et leur indique quand ils peuvent jouer une manche.
  • Les buts doivent s'annoncer aux robots par infra-rouge. Les buts doivent disposer d'un mécanisme capable de capturer la balle dès qu'elle rentre dans la cage. L'évenement "but marqué" est alors envoyé à l'arbitre. Sur commande de l'arbitre, le but relance la balle vers le centre du terrain.
  • Les robots ont comme tâche principale de s'approcher de la balle et de la lancer vers le but adverse. Les robots ne peuvent avancer que s'ils ne détectent pas d'obstacle à faible distance. Un robot ne repérant plus la balle peut se replier devant son but pour le bloquer. Un robot de jeu ne peut pas sortir du terrain.
  • Le dispositif de remise au centre de la balle est un robot qui capture la balle et va la déposer au point d'engagement en se repérant sur les marques au sol. Ce robot opère lorsque l'arbitre le demande et prévient l'arbitre lorsque la tâche est réalisée.

Pour que les robots puissent différencier les buts de la balle, les buts font clignoter leurs LEDs infrarouges suivant un code pré-établi.

Les communications entre les acteurs s'effectuent par bluetooth. Les robots et les buts s'apparient avec l'arbitre et ne communiquent qu'avec lui. Votre premier travail consiste à analyser toutes les informations contenues dans cette page et à établir un schéma des communications qui doivent avoir lieu durant un jeu complet.

Matériel à votre disposition

Boite mindstorm.jpg Ev3.png
Legos Mindstorm
Pcduino1.png Attiny85.png
Système pcDuino1 AVR attiny85

Les robots et les buts doivent être réalisées à l'aide de Lego MindStorm. Le Lego va permettre de réaliser le chassis des robots avec sa motorisation et d'y installer divers capteurs. Le Lego permet aussi de réaliser les cages des buts, leur dispositif de capture de la balle et leur dispositif d'éjection.

La communication des robots et des buts vers l'arbitre doit se faire grâce à la technologie bluetooth intégrée au micro-contrôleur MindStorm.

Pour la localisation des buts, des balises doivent être construites à base de LEDs infra-rouges modulées à l'aide d'une fréquence compatible avec les détecteurs des robots. Vous réaliserez un petit circuit électronique à base de micro-contrôleur AVR tiny85.

Pour l'arbitre un système embarqué de type pcDuino est nécessaire. Doit lui être adjoint un adaptateur USB bluetooth pour permettre la communication avec les contrôleurs MindStorm. Les afficheurs seront réalisés à partir de platines séries contrôlant des afficheurs 7 segments. Ces platines peuvent être contrôlées via le bus SPI du pcDuino.

Pour la programmation des micro-contrôleurs MindStorm, vous pouvez utiliser le logiciel graphique fourni mais vous êtes encouragés à tester le langage NXC (Not eXactly C) qui permet d'écrire efficacement des programmes plus conséquents.


Répartition des tâches

Chaque binôme va se voir affecter une des problématiques décrites dans les sous-sections suivantes.

Arbitre

Serie7segments.png
Afficheurs 7 segments

L'arbitre est réalisé à partir d'un système embarqué de type pcDuino. Les différentes tâches à réaliser sont décrites ci-dessous.

  • Utiliser le bus SPI du pcDuino pour contrôler l'afficheur 7 segments.
  • Etablir la communication bluetooth avec les robots et les buts, vous pouvez vous baser sur les [sources C] déjà développées les années précédentes.
  • Implanter l'algorithme d'arbitrage décrit ci-après.
    • demander aux robots d'aller se garer ;
    • demander aux cages de but d'éjecter la balle ;
    • demander au ramasseur de balle d'opérer, revenir au premier point en cas d'échec du ramasseur ;
    • demander aux robots de lancer la partie après que le ramasseur de balle ait terminé son travail ;
    • attendre l'événement "but marqué" pour mettre à jour le score, revenir au premier point ;
    • en cas d'attente trop longue, revenir au premier point.

Pour cette saison, aucun binôme, n'ayant pris cet atelier, un arbitre a été développé sur un eeePC. Les boîtes aux lettres utilisées pour la communication ont le numéro 1 pour les boîtes des acteurs et le numéro 2 pour la boîte de l'arbitre. Il vous reste à écrire la partie communication pour les acteurs en NXC avec les fonctions SendMessage et ReceiveMessage.

Les codes pouvant être envoyés dans la boite d'un but sont :

#define CODE_REQTYPE            0 // demander le type de l'acteur
#define CODE_EJECTER            1 // ordonne l'éjection de la balle

Les codes pouvant être envoyés dans la boite d'un robot sont :

#define CODE_REQTYPE            0 // demander le type de l'acteur
#define CODE_PLACER             1 // ordonne au robot de se garer
#define CODE_JOUER              2 // permet de démarrer la manche

Les codes pouvant être envoyés dans la boîte d'un ramasseur sont :

#define CODE_REQTYPE            0 // demander le type de l'acteur
#define CODE_RAMASSER           1 // ordonne le placement de la balle

En réponse à la demande d'un type d'acteur, les codes suivants peuvent être envoyés dans la boîte de l'arbitre :

#define TYPE_BUT                0
#define TYPE_JOUEUR             1
#define TYPE_RAMASSEUR          2

Dans les autres circonstances les codes pouvant être envoyés dans la boîte de l'arbitre sont :

#define CODE_GARE               1 // un robot est garé
#define CODE_BALLEOK            2 // la balle est placé au centre
#define CODE_BUT                3 // un but est marqué
Elèves Matériel Page
Prénom Nom / Prénom Nom pcDuino, Adaptateur USB/bluetooth, Afficheurs 7 segments Arbitre 1

Cage de but

Une cage de but doit comporter les dispositifs décrits ci-dessous.

  • La cage doit émettre un signal infra-rouge pour être facilement repérable par les robots.
  • La cage doit détecter quand la balle rentre dans la cage en la dirigeant précisement vers un capteur de contact.
  • La cage doit signaler un but à l'arbitre.
  • Enfin la cage doit pouvoir expulser la balle quand l'arbitre le demande.

Il existe des sites Web décrivant des montages électroniques pour réaliser une balise infra-rouge. Votre balise doit pouvoir alterner des séquences d'émission et d'arrêt de période déterminée pour permettre de différencier les buts. Pour aller plus loin, prévoyez une LED classique pour indiquer les période d'émission et d'arrêt ainsi qu'un bouton pour sélectionner la durée en seconde des périodes d'allumage. Enfin concevez un circuit imprimé pour votre montage. Vous pouvez vous inspirer de ce routage sous Eagle.

L'algorithme de communication d'un but avec l'arbitre est donné ci-dessous :

Attente du code "requête de type" (0) dans la boîte du but (1)
Envoi du "type but" (0) dans la boîte de l'arbitre (2+10)
Répéter
  Attente du code "éjection de balle" (1) dans la boîte du but (1)
  Attendre que la balle entre dans la cage
  Envoyer le code "but marqué" (3) dans la boîte de l'arbitre (2+10)
Jusqu'à la fin du jeu  
Elèves Matériel Page
Vivian Senaffe / Florian Saïz Boite Lego MindStorm, LEDs infra-rouge, AVR attiny85, Composants électroniques pour balise Cage de but 1
Aurélien Caffiaux / Carl Duchemin Boite Lego MindStorm, LEDs infra-rouge, AVR attiny85, Composants électroniques pour balise Cage de but 2
Jules-Eric Clement / Sébastien Delannoy Boite Lego MindStorm, LEDs infra-rouge, AVR attiny85, Composants électroniques pour balise Cage de but 3
Paul Knockaert / Florian Waels Boite Lego MindStorm, LEDs infra-rouge, AVR attiny85, Composants électroniques pour balise Cage de but 4

Robots de compétition

Un robot de compétition doit pouvoir se garer pour permettre au ramasseur de balle d'opérer. Avec le terrain proposé vous pouvez appliquer l'algorithme suivant :

  • Commencer par chercher une ligne médiane (ligne bleue). Une méthode consiste à aller en ligne droite et à rebondir sur les limites du terrain (ligne rouge).
  • Une fois sur une ligne bleue, la suivre, faire un demi-tour si la ligne se termine par du noir ou du vert. Si la ligne se termine par du jaune, traverser le jaune et tourner de 90° toujours dans le même sens.
  • Faire un demi-tour, repérer le bon but par infra-rouge, suivre la ligne rouge vers le but.
  • Prendre le chemin de la ligne noire, faire un demi-tour, le robot est garé.

Lorsque qu'un robot de compétition a repéré la balle, il effectue les actions suivantes.

  • Il se dirige vers la balle pour la capturer. Une fois la balle capturée le robot ne se déplace plus en translation.
  • Il lance la balle vers le but adverse. Une rotation peut être nécessaire pour l'envoi.

D'un point de vue mécanique certains dispositifs doivent être étudiés.

  • Un dispositif de capture de la balle, un simple récupérateur non articulé devrait suffire.
  • Un dispositif de lancement. Vous pouvez considérer le lancement par gravité, en utilisant un servo-moteur ou en utilisant la force centrifuge.

Si le robot ne trouve pas la balle, il peut considérer qu'elle est en possession d'un robot adverse. Dans ce cas, le robot doit se rapprocher de toutes ses roues de son but pour en bloquer l'accès.

En aucun cas, le robot ne doit quitter l'aire de jeu durant une partie.

Les capteurs nécessaires à un robot de compétition sont décrits ci-dessous.

  • Le capteur infra-rouge pour se diriger vers la balle et estimer la position du but.
  • Le capteur ultra-son pour éviter de percuter les objets (buts et autres robots).
  • Un capteur de couleur pour éviter de sortir du terrain.

L'algorithme de communication d'un joueur avec l'arbitre est donné ci-dessous :

Attente du code "requête de type" (0) dans la boîte du joueur (1)
Envoi du "type joueur" (1) dans la boîte de l'arbitre (2+10)
Répéter
  Attente du code "aller au garage" (1) dans la boîte du joueur (1)
  Garer le robot
  Envoyer le code "robot garé" (1) dans la boîte de l'arbitre (2+10)
  Attente du code "manche démarrée" (2) dans la boîte du joueur (1)
  Tenter de marquer un but
Jusqu'à la fin du jeu
Elèves Matériel Page
Loïc Tombazzi / Eddine Farid Omar Boite lego MindStorm, Capteur infra-rouge Robot de compétition 1
Yves-Alain Agbodjogbe / Anthony Casisa Boite lego MindStorm, Capteur infra-rouge Robot de compétition 2
Antoine Mariette / Victor Forney Boite lego MindStorm, Capteur infra-rouge Robot de compétition 3
Lisa Izzouzi / Marius Trimbur Boite lego MindStorm, Capteur infra-rouge Robot de compétition 4

Robot ramasseur de balle

Le robot ramasseur de balle doit réaliser les actions décrites ci-dessous.

  • Trouver la balle, se diriger vers elle et la capturer.
  • Trouver la marque de centre de terrain, relacher la balle.
  • Prévenir l'arbitre.
  • Retourner sur sa base.

Pour trouver le centre du terrain et retourner à la base, un algorithme possible est :

  • Commencer par chercher une ligne médiane (ligne bleue). Une méthode consiste à aller en ligne droite et à rebondir sur les barrières.
  • Une fois sur une ligne bleue, la suivre, faire un demi-tour si la ligne se termine par du rouge ou du vert. Si la ligne se termine par du jaune, traverser le jaune et tourner de 90° toujours dans le même sens.
  • La marque noire indique la base du ramasseur, faire demi-tour, s'arrêter sur la marque jaune du centre du terrain, lâcher la balle.
  • Reculer, faire demi-tour, suivre la ligne bleue puis la ligne noire, faire demi-tour, le ramasseur est garé.

Le robot ramasseur de balle se met en marche quand l'arbitre lui demande, voici l'algorithme de communication avec l'arbitre :

Attente du code "requête de type" (0) dans la boîte du ramasseur (1)
Envoi du "type ramasseur" (0) dans la boîte de l'arbitre (2+10)
Répéter
  Attente du code "ramassage de balle" (1) dans la boîte du ramasseur (1)
  Repérer la balle et la poser au centre du terrain (point jaune)
  Retourner à la base
  Envoyer le code "balle posée" (2) dans la boîte de l'arbitre (2+10)
Jusqu'à la fin du jeu 
Elèves Matériel Page
Amina Fahem / Marianne Butaye Boite lego MindStorm, Capteur infra-rouge Robot ramasseur de balle 1
Thomas Gosse / François Lefevre Boite lego MindStorm, Capteur infra-rouge Robot ramasseur de balle 2

Interaction entre les acteurs

Constituez un groupe complet d'acteurs avec 2 cages de buts, 2 robots de compétition, un robot de ramassage de balle et un arbitre. Vérifiez que le match se déroule correctement.