Binome2015-11 : Différence entre versions

De Wiki de bureau d'études PeiP
Ligne 92 : Ligne 92 :
 
Afin d'obtenir un résultat valable, nous avons décidé de classer les différentes fonctions du robot selon deux catégories : actives et passives.
 
Afin d'obtenir un résultat valable, nous avons décidé de classer les différentes fonctions du robot selon deux catégories : actives et passives.
  
** Les fonctions dites passives, sont celles qui sont directement liées aux règles du jeu: ne pas sortir du terrain, par exemple.
+
**Les fonctions dites passives, sont celles qui sont directement liées aux règles du jeu: ne pas sortir du terrain, par exemple.
 
On pourrait les qualifier de conditionnelles: si les conditions auxquelles elles se rapportent ne sont pas respectées, le robot ne pourra pas appliquer les fonctions actives. Un exemple: pourquoi demander au robot d'attraper la balle, s'il est obliger de sortir du terrain?
 
On pourrait les qualifier de conditionnelles: si les conditions auxquelles elles se rapportent ne sont pas respectées, le robot ne pourra pas appliquer les fonctions actives. Un exemple: pourquoi demander au robot d'attraper la balle, s'il est obliger de sortir du terrain?
  
** Les fonctions actives sont celles qui sont en rapport avec la balle, que se soit la chercher, l'attraper ou la mettre dans le but. Ces fonctions ne seront appliquées qu'au moment où elles seront nécessaires, à l'inverse des passives qui sont appliquées en permanence.
+
**Les fonctions actives sont celles qui sont en rapport avec la balle, que se soit la chercher, l'attraper ou la mettre dans le but. Ces fonctions ne seront appliquées qu'au moment où elles seront nécessaires, à l'inverse des passives qui sont appliquées en permanence.
  
* Voici donc la logique (simplifiée) qui nous semble la plus adaptée au bon fonctionnement de notre robot:
+
*Voici donc la logique (simplifiée) qui nous semble la plus adaptée au bon fonctionnement de notre robot:
  
* Mettre le robot en jeu
+
*Mettre le robot en jeu
  
 
Si capteur de ligne détecte vert (couleur du garage):
 
Si capteur de ligne détecte vert (couleur du garage):

Version du 2 mai 2016 à 06:45

Robot joueur

Tâches du robot compétiteur

  • trouver la balle
  • la récupérer
  • trouver le but
  • lancer la balle dans le but
  • ne pas sortir du terrain
  • communiquer avec les buts et les autres robots


Matériel utilisé

  • 1 châssis deux roues + 1 roue folle
  • 1 arduino MEGA
  • 2 servos-moteurs
  • 1 capteur ultrason
  • (1 plaque d'essais)
  • 3 capteurs de ligne
  • 3 phototransistors
  • 1 boîtier à piles
  • résistances, câbles


Rôle et fonctionnement du robot

Un robot compétiteur est activé par un message du robot ramasseur de balle. Il sort alors de son garage pour rentrer sur le terrain. Une fois sur le terrain le robot s'y promène en changeant de direction lorsqu'il arrive en limite du terrain jusqu'à ce qu'il détecte la balle infrarouge. Il se dirige alors vers la balle et tente de la capturer avec sa pince. Il demande alors au but adverse d'activer sa balise IR. Le robot tourne jusqu'à trouver le but adverse et tire pour envoyer la balle dans le but. Après avoir tiré, il demande au but adverse d'arrêter sa balise IR. Si le robot reçoit un message signalant qu'un but a été marqué, il va se garer. Pour cela il parcourt le terrain jusqu'à trouver une ligne de l'aire de jeu. Il suit cette ligne jusqu'à trouver l'intersection qui correspond à son garage. Pour détecter la balle infrarouge plusieurs phototransistors installés dans des caches réduisant leur angle de détection sont nécessaires. A vous de trouver la meilleure répartition sur le châssis pour les détecteurs. Vous pouvez aussi utiliser un plateau rotatif réalisé avec un servo-moteur pour augmenter le champ de vision. Les éléments de la pince sont à réaliser par impression 3D ou découpe laser de plexiglas ou bois. Quand la pince se referme elle doit occulter la balle pour que le robot puisse détecter la balise du but.


Répartition des composants sur le robot

  • Robot à trois étages:
    • -1 : Moteurs et détecteurs de lignes
    • 0 : Pince et batterie
    • 1 : Arduino, circuits, détecteurs IR et détecteur ultrasons


Déplacements

  • 1ère étape du travail : permettre au robot de se déplacer en ligne droite.
  • Structure du robot : 2 servo-moteurs qui entraînent deux roues, et une roue folle
  • Problèmes rencontrés (et résolus) : faire tourner les roues dans le même sens, régler la vitesse de croisière et de contournement d'obstacles
Photo des premiers branchements
Photo des premiers branchements
  • Nous utiliserons ce circuit pour les moteurs
PCB contrôle des moteurs
PCB contrôle des moteurs


Détecteur ultrasons

  • 2ème étape : pouvoir contourner les obstacles, à l'aide d'un détecteur à ultrasons placé à l'avant du robot.
  • Le robot effectue une manœuvre lorsqu'il détecte un obstacle devant lui
  • Une fonction "contournement()" est appelée lorsqu'un obstacle est détecté, elle permet de faire un virage, d'avancer un peu puis de se remettre dans l'axe du déplacement initial
  • La détection se base sur une valeur de temps d'aller-retour de l'onde (~850µs) qui correspond à peu près à une distance de 15cm, à partir de laquelle l'obstacle est considéré comme trop près
  • Problèmes : installation et mise en fonctionnement du capteur, défectuosité des câbles
  • Voici le circuit imprimé pour l'utilisation du détecteur d'obstacle, à ultrasons
PCB capteur à ultrasons
PCB capteur à ultrasons

Détecteurs de ligne

  • 3ème étape : pouvoir détecter les lignes au sol afin d'orienter le robot vers sa position de départ, et éviter ses sorties du terrain
  • Nombre : 3 (imposé)
  • Problèmes: les détecteurs affiches des valeurs qui changent très vite, avec une grande amplitude
  • Compte tenu du fait que les détecteurs doivent être placés suffisamment près du sol, nous avons réalisé une pièce 3D qui leur sert de support, afin d'obtenir des valeurs correctes. La réalisation s'est faite sur le site de CAD Onshape.com.
Photo de la pièce 3D supportant les capteurs de lignes
Photo de la pièce 3D supportant les capteurs de lignes
Visuel 3D de la pièce
Visuel 3D de la pièce
  • Nous utiliserons ce circuit pour les mesures des détecteurs de lignes
PCB détecteurs de lignes
PCB détecteurs de lignes


Détecteurs IR

  • 4ème étape : pouvoir orienter le robot vers la balle
  • On utilisera 3 capteurs pour avoir un spectre assez large
  • Problèmes : Placer les détecteurs pour pouvoir fonctionner lorsque la balle est prise, régler la fréquence, adapter les valeurs selon les sources de courant (batterie, batterie + usb)
  • Le principe de détection est le suivant: lorsque qu'un détecteur IR capte une émission infrarouge, il se comporte comme une résistance, provoquant une discontinuité de tension. Notre Arduino est programmé pour détecter ces discontinuités, et réagir en conséquence
  • Ce circuit servira pour les mesures des détecteurs IR
PCB capteurs infrarouges
PCB capteurs infrarouges

Pince

  • 5ème étape : pouvoir attraper la balle pour ensuite aller marquer
  • Utilise un servo-moteur : besoin de place
  • La pièce crée en CAD aurait du être imprimée en 3D mais le cahier de réservation de l'imprimante étant très chargé, nous n'avons pu trouver un moment pour imprimer les pièces.
  • Afin de mettre en mouvement la balle, pour mettre un but, nous avons décidé d'utiliser un "percuteur", qui poussera la balle lorsque la pince s'ouvre et lui donnera suffisamment d'élan.
Visuel 3D de la pince
Visuel 3D de la pince

Programmation du robot

  • Pour réaliser notre robot, et faire fonctionner l'ensemble des systèmes cités ci-dessus, nous avons du utiliser de nombreuses fonctions et boucles.

Cependant il est évident que, lors de la présentation, notre robot ne se serait pas comporté comme souhaité, si nous n'avions pas hiérarchisé les fonctions. Afin d'obtenir un résultat valable, nous avons décidé de classer les différentes fonctions du robot selon deux catégories : actives et passives.

    • Les fonctions dites passives, sont celles qui sont directement liées aux règles du jeu: ne pas sortir du terrain, par exemple.

On pourrait les qualifier de conditionnelles: si les conditions auxquelles elles se rapportent ne sont pas respectées, le robot ne pourra pas appliquer les fonctions actives. Un exemple: pourquoi demander au robot d'attraper la balle, s'il est obliger de sortir du terrain?

    • Les fonctions actives sont celles qui sont en rapport avec la balle, que se soit la chercher, l'attraper ou la mettre dans le but. Ces fonctions ne seront appliquées qu'au moment où elles seront nécessaires, à l'inverse des passives qui sont appliquées en permanence.
  • Voici donc la logique (simplifiée) qui nous semble la plus adaptée au bon fonctionnement de notre robot:
  • Mettre le robot en jeu

Si capteur de ligne détecte vert (couleur du garage):

   Avancer jusqu'à ce que capteur de ligne détecte noir
   Se placer au point de départ des robots  
  • Jouer

Tant que 1) la balle est en jeu (l'adversaire ne l'a pas) et 2) la balle n'est pas dans le but :

   Tant que capteur de ligne ne détecte pas noir (=sortie de terrain):
      Trouver la balle
      Saisir la balle
      Chercher le but
      Mettre un but
   Remise en jeu du robot
  • Rentrer au garage

Si 1) balle dans un but ou 2) adversaire a la balle

   Retourner au garage 

Problèmes divers rencontrés

  • La valeurs renvoyées par le détecteur à ultrasons dépendent du nombre de composants installés sur le robot. Le programme de détection des obstacles, premier pas important du projet, fonctionnait parfaitement lors de sa création mais le nombre de composants ayant évolué ensuite, nous avons eu à le modifier plusieurs fois
  • Le stock de boucliers x-bee étant limité à 1 nous n'avons pas pu nous en procurer