BE 2014-2015 : Différence entre versions

De Wiki de bureau d'études PeiP
(Arbitre)
(Notation)
 
(56 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 repérer la balle et la propulser 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.
 +
* 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 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.
* 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 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.
 
* 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 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.
 
  
 
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 que les robots puissent différencier les buts de la balle, les buts font clignoter leurs LEDs infrarouges suivant un code pré-établi.
Ligne 24 : Ligne 25 :
 
|}
 
|}
 
{| 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:pcduino1.png|200px]]
+
| style="border: 1px solid #bbb;" valign="middle" |[[File:pcduino1.png|150px]]
 
| style="border: 1px solid #bbb;" valign="top" |[[File:attiny85.png|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;"
Ligne 37 : Ligne 38 :
  
 
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 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 43 : 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 ==
Ligne 51 : Ligne 104 :
 
* Enfin la cage doit pouvoir expulser la balle quand l'arbitre le demande.
 
* 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'arrêt. Enfin concevez un circuit imprimé pour votre montage.
+
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> Prénom Nom / Prénom Nom </td>
+
   <td> Vivian Senaffe / Florian Saïz </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> <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-1|Cage de but 1]] </td>
 
   <td> [[CageBut2014-1|Cage de but 1]] </td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <td> Prénom Nom / Prénom Nom </td>
+
   <td> Aurélien Caffiaux / Carl Duchemin </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> <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-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 de compétition ==
 
== 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.
 
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.
Ligne 77 : Ligne 155 :
  
 
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.
 
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.
 
Les capteurs nécessaires à un robot de compétition sont décrits ci-dessous.
Ligne 82 : Ligne 162 :
 
* 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> Prénom Nom / Prénom Nom </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> [[RobotCompetition2014-1|Robot de compétition 1]] </td>
 
   <td> [[RobotCompetition2014-1|Robot de compétition 1]] </td>
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <td> Prénom Nom / Prénom Nom </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> [[RobotCompetition2014-2|Robot de compétition 2]] </td>
 
   <td> [[RobotCompetition2014-2|Robot de compétition 2]] </td>
 +
</tr>
 +
<tr>
 +
  <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> [[RobotCompetition2014-3|Robot de compétition 3]] </td>
 +
</tr>
 +
<tr>
 +
  <td> Lisa Izzouzi / Marius Trimbur </td>
 +
  <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
 +
  <td> [[Robot de compétition 4]] </td>
 
</tr>
 
</tr>
 
</table>
 
</table>
 
== 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-dessus.
 
* Utiliser le bus SPI du pcDuino pour contrôler l'afficheur 7 segments.
 
 
* 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.
 
  
 
== Robot ramasseur de balle ==
 
== Robot ramasseur de balle ==
* 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.
+
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.
  
= Intégration des fonctionnalités =
+
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é.
  
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.
+
Le robot ramasseur de balle se met en marche quand l'arbitre lui demande, voici l'algorithme de communication avec l'arbitre :
  
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.
+
Attente du code "requête de type" (0) dans la boîte du ramasseur (1)
* Les équipes des robots d'attaque et de défense fussionnent leurs robots pour en faire des compétiteurs complets.
+
Envoi du "type ramasseur" (0) dans la boîte de l'arbitre (2+10)
* Les équipes ayant travaillé sur les cages réalisent un terrain et implantent dans les robots la réception des buts marqués.
+
Répéter
* 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.
+
  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
  
= Notation =
+
<table border="1">
 +
<tr> <th>Elèves</th> <th>Matériel</th> <th>Page</th> </tr>
 +
<tr>
 +
  <td> Amina Fahem / Marianne Butaye </td>
 +
  <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
 +
  <td> [[RobotRamasseur2014-1|Robot ramasseur de balle 1]] </td>
 +
</tr>
 +
<tr>
 +
  <td> Thomas Gosse / François Lefevre </td>
 +
  <td> <span style="color:green">Boite lego MindStorm</span>, <span style="color:green">Capteur infra-rouge</span> </td>
 +
  <td> [[RobotRamasseur2014-2|Robot ramasseur de balle 2]] </td>
 +
</tr>
 +
</table>
  
{| class="wikitable"
+
= Interaction entre les acteurs =
! Noms !! Rapport Wiki !! Soutenance vidéo !! Total
+
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.
|
 
|
 
|
 
|
 
|
 
|
 
|}
 

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.