CageBut2013-2 : Différence entre versions

De Wiki de bureau d'études PeiP
 
(25 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
+
<include nopre noesc src="/home/pedago/ppeip/include/video-But2-2013-iframe.html" />
 
+
__TOC__
 +
<br style="clear: both;">
 
== Introduction ==
 
== Introduction ==
  
Ligne 6 : Ligne 7 :
 
* les robots ayant une certaine dimension et la balle mesurant tout de même 75mm, il faudra choisir une taille de but convenable.
 
* les robots ayant une certaine dimension et la balle mesurant tout de même 75mm, il faudra choisir une taille de but convenable.
 
* la cage de but doit émettre dans l'infra-rouge pour être repérable sachant que la balle émet déjà dans l'infra-rouge ainsi que le but adverse.
 
* la cage de but doit émettre dans l'infra-rouge pour être repérable sachant que la balle émet déjà dans l'infra-rouge ainsi que le but adverse.
* la cage devant repéré si un but est encaissé, il faut donc dirigé cette dernière vers un capteur de pression, mais celui-ci sera forcément bien plus petit que le but. Il faut donc penser à diriger la balle vers ce dernier.
+
* la cage devant repérer si un but est encaissé, il faut donc diriger cette dernière vers un capteur de pression, mais celui-ci sera forcément bien plus petit que le but. Il faut donc penser à diriger la balle vers ce dernier.
 
* Enfin, nécessitant un renvoie de balle, il faut penser à un système d'expulsion n'interferant pas avec le capteur de pression.
 
* Enfin, nécessitant un renvoie de balle, il faut penser à un système d'expulsion n'interferant pas avec le capteur de pression.
  
  
 
== Le capteur de pression ==
 
== Le capteur de pression ==
 +
 +
Le capteur de pression est soumis à trois contraintes :
 +
 +
* Il doit être suffisamment sensible pour bien comptabiliser chaque but, pour cela, nous utilisons deux approches :
 +
une approche mécanique, une approche logicielle.
 +
* Il ne doit pas être trop sensible pour éviter de comptabiliser plusieurs fois un même but pour cause de rebond de la balle ou autre interférence.
 +
* La cage du but étant de taille bien supérieur au capteur il faut diriger la balle vers le capteur.
 +
 +
 +
 +
==== Première étape : la formation mécanique du capteur ====
 +
 +
 +
 +
* Tout d'abord, nous avons décidé d'élargir un peu la zone de pression du capteur en lui donnant une forme semi-elliptique. D'un point de vue mécanique on peut voir que le capteur est soumis à plusieurs contraintes ce qui ne lui laisse qu'un seul degré de liberté : une translation selon son axe. En effet, les deux barres hautes évitent toutes rotations de notre bumper, rotation qui étaient présente au début et pouvait empêcher le déclenchement du capteur voire le bloquer.
 +
 +
[[Fichier:capteur_pression_v1.jpg]]
 +
 +
 +
 +
* Après avoir construit le squelette de la cage de but, nous avons remarqué que la forme de la cage ne suffit pas à la dirigé vers le capteur. En effet lorsque la balle arrive de face sur le bois elle perd toute sa vitesse et s’arrête avant de toucher le capteur. Nous avons donc décidé d'utiliser deux bras mécanique en rotation permanente afin que, quelque soit l'angle d'entrée de la balle dans le but, celle-ci soit dirigée vers le capteur. 
 +
 +
[[Media:angles_morts.mp4]]
 +
 +
[[Fichier:but_bois_v2.jpg]]
 +
 +
 +
 +
* Suite aux modifications apportées à la structure de la cage de but nous avons modifié le capteur de plusieurs façons. Nous avons changé la forme du capteur afin que la balle soit dirigé vers son centre. Puis nous avons ajouté un amortisseur afin que la balle ne puisse pas rebondir sur le capteur sans l'actionner.
 +
 +
 +
 +
 +
[[Fichier:capteur_pression_v2.jpg]]
 +
 +
=== Deuxième étape : la programmation ===
 +
 +
D'un point de vue logicielle trois possibilités s'offrent à nous dans la programmation MINDSTORM : une détection quand le capteur est enfoncé, quand il est relâché, quand il est heurté. Après avoir testé la fonction heurté, on en a déduit que ce dernier demandait une approche de la balle assez rapide, chose qui ne sera pas forcément le cas. C'est pourquoi nous avons choisi la fonction enfoncé qui semble être la plus adaptée.
 +
 +
[[Fichier:capteur_logiciel.png]]
  
 
== Le système d'expulsion ==
 
== Le système d'expulsion ==
 +
 +
 +
 +
* Ensuite, nous avons construit un bras mécanique, autour du capteur, capable d'expulser la balle sans interférer avec celui-ci.
 +
 +
[[Fichier:capteur-profil_v1.png]]
 +
 +
 +
* Nous avons supprimer le bras mécanique permettant d'expulser la balle puisque les deux autres bras peuvent s'en charger.
 +
 +
 +
== Communication ==
 +
 +
 +
Le cahier des charges demande explicitement que lorsqu'un but est encaissé, la cage communique cette information aux robots, ces derniers se replacent et, une fois replacés, la partie peut-être relancée. La partie se jouant entre 4 robots et le NXT pouvant communiquer avec seulement trois autres NXT, nous avons décidé que les deux buts communiqueraient entre eux sur la connexion 3 et chaque but avec les deux robots de son équipe sur les connexions 1 et 2. Notre but est donc esclave par rapport au but adverse et maitre par rapport aux deux robots. De plus nous avons décidé de communiquer sur la boite aux lettres du numéro de communication correspondante afin de bien différencier les messages provenant de chaque autre NXT.
 +
 +
 +
=== Si notre but encaisse ===
 +
 +
Lorsque nous encaissons un but, nous gérons cette information à l'aide d'une variable que nous dénommons trivialement "but". Cette variable permet de lancer un programme parallèle adapté à la communication dans le cas présent. La gestion du but va donc se passer en trois grandes étapes.
 +
 +
* Nous encaissons le but : la variable "but" passe sur vrai et cela entraine un envoi du message "but" au but adverse sur la communication 0 boite au lettre 3 ainsi qu'aux robots de l'équipe sur les communications 1 et 2 sur respectivement les boites aux lettres 1 et 2.
 +
 +
* Nous attendons le temps que les robots se replacent et nous envoient chacun le message "replacer" sur nos boites au lettres 1 et 2 respectivement ainsi que sur la boite aux lettres 3 pour le but adverse.
 +
 +
* une fois ce dernier message reçu, nous pouvons donc renvoyer la balle et envoyer un message de libération à l'ensemble des robots : message que nous nommerons "bouge". Maintenant que la partie est relancée nous pouvons remettre nos trois variables "but", "replacer" et "bouge" à leurs états initiaux.
 +
 +
 +
=== Si le but adverse encaisse ===
 +
 +
Lorsque le but adverse encaisse, en opposition à lorsque nous encaissons, nous recevons le message "but" sur la boite aux lettres 3. Une fois ce message reçu, nous gérons le but encaissé par l'adversaire en trois étapes similaire à celle de la partie précédente. :
 +
 +
* Le message "but" étant arrivé, nous le transmettons aux robots de notre équipe.
 +
 +
* Pour la suite, nous attendons que ces derniers se replacent. Une fois replacés, nous transmettons l'information au but adverse.
 +
 +
* Enfin, nous attendons que le but adverse nous informe que la balle a été renvoyé pour libérer les robots de notre équipe à l'aide du message "bouge". Une fois toute cette procédure finie, comme pour la partie précédente, nous pouvons réinitialiser l'ensemble de nos trois variables à leur état par défaut.
 +
 +
== Le but dans son ensemble ==
 +
 +
-[[Fichier:but_bois_v1.jpg]]
 +
 +
On peut voir sur la partie supérieur du but trois LEDs : celle du centre qui est une LED émettant dans le visible et donc une LED de contrôle visuel, et les deux LEDs des extrémités émettant dans l'infra-rouge. C'est trois LEDs sont réglés à une fréquence donnée de ... permettant aux robots de détecter le but.
 +
 +
Concernant la fréquence, deux contraintes sont apparus de façon évidente. Premièrement, les robots doivent différencier leur but d'attaque de leur but de défense et de la balle, il fallait donc trois fréquences différentes. Deuxièmement, les robots ne peuvent pas détecter n'importe quelle fréquence, il a donc fallu tester avec ces derniers la plage acceptable.
 +
 +
Enfin, ces LEDs sont placés en hauteur et sur les extrémités des robots. En effet les robots détectant les ondes en fonction de "zone", le fait de mettre les LEDs aux extrémités cela leur permet de détecter les deux poteaux du but mais aussi de faire une moyenne pour détecter le centre du but. Cette disposition nous a donc paru comme la meilleure.

Version actuelle datée du 21 mai 2014 à 11:57


Vidéo HD


Introduction

Pour le bureau d'études d'IMA, nous devons réaliser une cage de but autonome et communicante. Pour cela, plusieurs contraintes nous semble essentiels :

  • les robots ayant une certaine dimension et la balle mesurant tout de même 75mm, il faudra choisir une taille de but convenable.
  • la cage de but doit émettre dans l'infra-rouge pour être repérable sachant que la balle émet déjà dans l'infra-rouge ainsi que le but adverse.
  • la cage devant repérer si un but est encaissé, il faut donc diriger cette dernière vers un capteur de pression, mais celui-ci sera forcément bien plus petit que le but. Il faut donc penser à diriger la balle vers ce dernier.
  • Enfin, nécessitant un renvoie de balle, il faut penser à un système d'expulsion n'interferant pas avec le capteur de pression.


Le capteur de pression

Le capteur de pression est soumis à trois contraintes :

  • Il doit être suffisamment sensible pour bien comptabiliser chaque but, pour cela, nous utilisons deux approches :

une approche mécanique, une approche logicielle.

  • Il ne doit pas être trop sensible pour éviter de comptabiliser plusieurs fois un même but pour cause de rebond de la balle ou autre interférence.
  • La cage du but étant de taille bien supérieur au capteur il faut diriger la balle vers le capteur.


Première étape : la formation mécanique du capteur

  • Tout d'abord, nous avons décidé d'élargir un peu la zone de pression du capteur en lui donnant une forme semi-elliptique. D'un point de vue mécanique on peut voir que le capteur est soumis à plusieurs contraintes ce qui ne lui laisse qu'un seul degré de liberté : une translation selon son axe. En effet, les deux barres hautes évitent toutes rotations de notre bumper, rotation qui étaient présente au début et pouvait empêcher le déclenchement du capteur voire le bloquer.

Capteur pression v1.jpg


  • Après avoir construit le squelette de la cage de but, nous avons remarqué que la forme de la cage ne suffit pas à la dirigé vers le capteur. En effet lorsque la balle arrive de face sur le bois elle perd toute sa vitesse et s’arrête avant de toucher le capteur. Nous avons donc décidé d'utiliser deux bras mécanique en rotation permanente afin que, quelque soit l'angle d'entrée de la balle dans le but, celle-ci soit dirigée vers le capteur.

Media:angles_morts.mp4

But bois v2.jpg


  • Suite aux modifications apportées à la structure de la cage de but nous avons modifié le capteur de plusieurs façons. Nous avons changé la forme du capteur afin que la balle soit dirigé vers son centre. Puis nous avons ajouté un amortisseur afin que la balle ne puisse pas rebondir sur le capteur sans l'actionner.



Capteur pression v2.jpg

Deuxième étape : la programmation

D'un point de vue logicielle trois possibilités s'offrent à nous dans la programmation MINDSTORM : une détection quand le capteur est enfoncé, quand il est relâché, quand il est heurté. Après avoir testé la fonction heurté, on en a déduit que ce dernier demandait une approche de la balle assez rapide, chose qui ne sera pas forcément le cas. C'est pourquoi nous avons choisi la fonction enfoncé qui semble être la plus adaptée.

Capteur logiciel.png

Le système d'expulsion

  • Ensuite, nous avons construit un bras mécanique, autour du capteur, capable d'expulser la balle sans interférer avec celui-ci.

Capteur-profil v1.png


  • Nous avons supprimer le bras mécanique permettant d'expulser la balle puisque les deux autres bras peuvent s'en charger.


Communication

Le cahier des charges demande explicitement que lorsqu'un but est encaissé, la cage communique cette information aux robots, ces derniers se replacent et, une fois replacés, la partie peut-être relancée. La partie se jouant entre 4 robots et le NXT pouvant communiquer avec seulement trois autres NXT, nous avons décidé que les deux buts communiqueraient entre eux sur la connexion 3 et chaque but avec les deux robots de son équipe sur les connexions 1 et 2. Notre but est donc esclave par rapport au but adverse et maitre par rapport aux deux robots. De plus nous avons décidé de communiquer sur la boite aux lettres du numéro de communication correspondante afin de bien différencier les messages provenant de chaque autre NXT.


Si notre but encaisse

Lorsque nous encaissons un but, nous gérons cette information à l'aide d'une variable que nous dénommons trivialement "but". Cette variable permet de lancer un programme parallèle adapté à la communication dans le cas présent. La gestion du but va donc se passer en trois grandes étapes.

  • Nous encaissons le but : la variable "but" passe sur vrai et cela entraine un envoi du message "but" au but adverse sur la communication 0 boite au lettre 3 ainsi qu'aux robots de l'équipe sur les communications 1 et 2 sur respectivement les boites aux lettres 1 et 2.
  • Nous attendons le temps que les robots se replacent et nous envoient chacun le message "replacer" sur nos boites au lettres 1 et 2 respectivement ainsi que sur la boite aux lettres 3 pour le but adverse.
  • une fois ce dernier message reçu, nous pouvons donc renvoyer la balle et envoyer un message de libération à l'ensemble des robots : message que nous nommerons "bouge". Maintenant que la partie est relancée nous pouvons remettre nos trois variables "but", "replacer" et "bouge" à leurs états initiaux.


Si le but adverse encaisse

Lorsque le but adverse encaisse, en opposition à lorsque nous encaissons, nous recevons le message "but" sur la boite aux lettres 3. Une fois ce message reçu, nous gérons le but encaissé par l'adversaire en trois étapes similaire à celle de la partie précédente. :

  • Le message "but" étant arrivé, nous le transmettons aux robots de notre équipe.
  • Pour la suite, nous attendons que ces derniers se replacent. Une fois replacés, nous transmettons l'information au but adverse.
  • Enfin, nous attendons que le but adverse nous informe que la balle a été renvoyé pour libérer les robots de notre équipe à l'aide du message "bouge". Une fois toute cette procédure finie, comme pour la partie précédente, nous pouvons réinitialiser l'ensemble de nos trois variables à leur état par défaut.

Le but dans son ensemble

-But bois v1.jpg

On peut voir sur la partie supérieur du but trois LEDs : celle du centre qui est une LED émettant dans le visible et donc une LED de contrôle visuel, et les deux LEDs des extrémités émettant dans l'infra-rouge. C'est trois LEDs sont réglés à une fréquence donnée de ... permettant aux robots de détecter le but.

Concernant la fréquence, deux contraintes sont apparus de façon évidente. Premièrement, les robots doivent différencier leur but d'attaque de leur but de défense et de la balle, il fallait donc trois fréquences différentes. Deuxièmement, les robots ne peuvent pas détecter n'importe quelle fréquence, il a donc fallu tester avec ces derniers la plage acceptable.

Enfin, ces LEDs sont placés en hauteur et sur les extrémités des robots. En effet les robots détectant les ondes en fonction de "zone", le fait de mettre les LEDs aux extrémités cela leur permet de détecter les deux poteaux du but mais aussi de faire une moyenne pour détecter le centre du but. Cette disposition nous a donc paru comme la meilleure.