RobotRamasseur2014-1

De Wiki de bureau d'études PeiP


Introduction

A REMPLIR
  • Présentation rapide du BE et du jeu
  • Rôle de notre robot

Construction du robot

A REMPLIR
  • Les éléments dont on a besoin pour le robot (capteurs, pince...)
  • Autres spécifications : vitesse pas importante etc.

1ère et 2ème versions

Nous avons attaqué la construction du robot par le système moteur, constitué des roues et de servomoteurs.

Dans la première version, nous étions partis sur un servomoteur pour chaque paire de roues, avant et arrière, et de ce fait, le robot ne pouvait pas tourner. En effet, pour lui permettre de tourner, il est nécessaire de donner des vitesses différentes aux côtés gauche et droit du robot. Nous avons donc décidé de placer deux servomoteurs pour les deux roues avant et par la même occasion, un troisième moteur pour la pince. Cependant un autre problème se posait alors, celui de relier les deux roues d'un même côté entre elles. Le problème a facilement été résolu grâce à l’installation de chenilles, permettant à la force motrice appliquée à la roue avant d'entraîner la roue arrière .

Puis nous avons continué d'assembler le robot afin que la structure motrice soit stable et solide . Cette structure doit être capable de supporter le poids de la pince, de manière à ce que celle-ci ne fasse pas basculer vers l'avant le robot tout entier une fois qu'il est posé au sol.

3ème version

A REMPLIR ???

Fonctionnement et fabrication de la pince

La pince a été fabriquée à partir d'un mécanisme d’engrenage. Pour pouvoir mettre en place ce système, nous avons tout d'abord commencé par déplacer le servomoteur dédié à la pince, jusque-là pris entre les deux roues avant.

Un premier engrenage est lié au servomoteur de manière à ce que l'activation de celui-ci engendre une rotation de la roue. A cette roue sera attaché le premier côté de la pince. Cet engrenage est collé a un autre engrenage, lui même lié à l'autre côté de la pince. Il était particulièrement important d'avoir un nombre pair de roues dentées, de manière à ce que les rotations des roues situées aux extrémités s'effectuent dans le même sens. C'est ce qui permet la fermeture des pinces. En effet, avec un nombre impair de roues dentées une partie de la pince irait vers l’intérieur alors que l'autre la fuirait. Il serait alors impossible d’attraper la balle.

Une fois le mécanisme conçu, il a fallu construire la pince elle-même. Nous avions d'abord opté pour une version uniquement construite à partir de bâtonnets assemblés entre eux. Par manque de stabilité de la structure, nous avons donc

PARTIE DE LA PINCE AVEC JUSTE DES BÂTONNETS OU AVEC LES PIECES GRISES DURES ??? -> BESOIN DE PRECISONS
conclu par une version plus stable à base de bâtonnet pour donner la forme voulu à la pince auquel nous avons ajouté des terminaisons plus stable et rendant plus pratique la capture de la balle .

Les différents capteurs et leurs placements

Nous avions initialement prévu d'utiliser un capteur Touch afin de détecter si la balle se trouve entre les pinces, puis de fermer ces dernières. Malheureusement, le capteur s'est trouvé peu pratique et difficile à positionner par rapport à la façon dont la pince a été construite. L'idée a pour le moment été abandonnée, et nous travaillons actuellement sur une alternative.

Le capteur couleur

Ce capteur fixé à l'avant du robot et orienté vers le bas permet de distinguer les couleurs des marquages situés au sol. En effet, les marquages au sol, déterminés par concertation avec les autres équipes, sont les principales indications concernant les directions vers lesquelles notre robot doit se diriger. Notre robot devra suivre des lignes au sol afin de se repérer et de déposer la balle au milieu du terrain après l'avoir ramassé.

Le capteur infrarouge

Ce capteur est situé juste à coté du capteur couleur et dirigé vers l'avant. C'est ce capteur qui permettra de détecter la balle et les buts. C'est le capteur principal utilisé pour se diriger dans la première phase d'action.

Le capteur ultrason

En cours de placement - Phase de réflexion et de tests.

Version finale du Robot

à terminer à la rentrée
à faire : positionner/fixer capteur ultrason, stabiliser la partie inférieure de la pince 


Programmation du Robot

A FAIRE

Nous avons opté pour la programmation du robot par le langage C, plutôt que par l'éditeur graphique.

Structure du programme

Nous avons d'abord commencé par réfléchir au parcours effectué par notre robot lors de sa mission. Cela nous a permis de découper notre programme en fonctions. Chaque fonction réalise une action (attraper la balle, etc). Nous avons ainsi pu classer la première partie des actions effectuées dans la catégorie capteur "Infrarouge" et la seconde dans la catégorie "Déplacement en suivant les lignes".

Plus tard, une mise au point avec les autres équipes a été faite, permettant d'affiner le découpage. Le robot doit ainsi :

  • Aller vers la balle et la saisir (capteur infrarouge)
  • Se diriger vers le but le plus éloigné jusqu'à rencontrer une ligne médiane (capteurs couleur et ultrason)
  • Suivre la ligne médiane jusqu'à trouver son garage et retourner au centre du terrain (capteur couleur)
  • Déposer la balle au sol et repartir se garer. (capteur couleur)

Nous avons fait le choix d'exécuter les fonctions les unes après les autres, le rôle de ramasseur de balles du robot ne nécessitant pas d'effectuer des actions simultanément.

Infrarouge

A l'origine, deux parties concernant ce capteur étaient prévues. Cependant, au cours de la réalisation du robot, nous nous sommes aperçues que lorsque le robot se déplace vers les buts, il a déjà la balle entre ses pinces, ce qui rend impossible une autre mesure au vu de la position du capteur. Cette action se fera donc grâce au capteur couleur.

Pour permettre au robot d'aller vers la balle, nous avons commencé par le faire suivre sa direction. Cela s'est cependant avéré être un mauvais choix : en effet, la direction du signal est donnée par la somme des signaux infrarouges, or sur le terrain il y a également deux buts émettant eux aussi dans l'infrarouge. Le robot se serait ainsi dirigé vers ce signal, c'est-à-dire là où il n'y a ni balle, ni buts. Une seconde approche de ce problème est de considérer la continuité des signaux : la balle émet en continu, contrairement aux buts qui, en boucle, émettent pendant plusieurs secondes puis s'interrompent une seconde. Il a donc fallu réussir à isoler le signal continu.

Pour cela, nous avions à disposition 5 signaux reçus par le capteur, chacun correspondant à une direction :

  • A gauche vers l'arrière
  • A gauche vers l'avant
  • En face
  • A droite vers l'avant
  • A droite vers l'arrière

Les signaux varient entre 0 et 255.

Notre solution a été d'utiliser un tableau du langage C à cinq cases, initialisé aux valeurs des cinq signaux, et un entier retenant le nombre de signaux qui ne se sont jamais éteints (le tableau permet de savoir quelle direction prendre une fois le signal continu trouvé). Ensuite, dans une boucle, on lit les signaux et on met à jour les valeurs du tableau dès qu'un signal est égal à 0. Cela nous permet ainsi d'éliminer les signaux dès qu'ils arrêtent de transmettre, jusqu'à ce qu'il n'en reste plus qu'un (le signal continu). Enfin, on tourne ou on avance en fonction de la direction du signal.

Ci-dessous, l'algorithme correspondant :

Déclaration du tableau à 5 cases "tab" et de l'entier "cpt"
Initialiser le tableau avec les valeurs des 5 signaux
Tant que cpt plus grand que 1
  initialiser cpt à 0
  Lecture du capteur infrarouge (récupération des nouvelles valeurs des signaux)
  (Pour chaque signal) Si le signal est égal à 0 et que la case de tab correspondante est différente de 0
    alors mettre 0 dans la case de tab
  Pour un indice i allant de 0 à 5
    si le tab à l'indice i est différent de 0
      incrémenter cpt
  Fin Pour
Fin Tant que
Si une case de tab correspondante à la gauche est différente de 0
  alors tourner à gauche
Si une case de tab correspondante à la droite est différente de 0
  alors tourner à droite
sinon
  avancer tout droit
  

Déplacement en suivant les lignes

Le robot est capable d'avancer jusqu'à détecter une ligne médiane, puis de la suivre jusqu'à rencontrer : ou un contour du terrain, auquel cas le robot fait demi-tour et suit la ligne médiane dans l'autre sens; ou le point au centre du terrain, et alors il s'arrête et passe le relais à la pince.

///

Le robot doit commencer par se diriger vers le but le plus éloigné jusqu'à rencontrer une ligne médiane. Pour cela, nous avons décidé de le faire avancer tout droit jusqu'à, ou rencontrer un obstacle repéré par le capteur ultrasons (mur, but, ...), ou croiser une ligne médiane. S'il croise cette ligne, de couleur bleue, le relais est passé à la fonction suivante.

Le robot se déplace alors en suivant cette ligne jusqu'à détecter une autre ligne. Suivant sa couleur, l'action effectuée est différente :

  • Si c'est le contour du terrain (couleur rouge) ou un ligne devant un but (couleur verte), alors il fait demi-tour et continue de suivre la ligne médiane.
  • Si c'est le centre du terrain (couleur jaune), alors il fait un quart de tour et suit de nouveau la ligne médiane.
  • Si c'est un garage (couleur noire), alors c'est forcément le sien; Les garages des joueurs se trouvent à l'intersection d'une ligne devant un but et du contour du terrain, alors que celui du ramasseur se trouve au bout d'une ligne médiane. Il est nécessaire pour le robot de trouver son garage avant de déposer sa balle, car sinon celui-ci ne sait pas où aller se garer et ne peut plus chercher le long des lignes médianes, la balle étant au centre du terrain.

Après avoir trouvé le garage, le robot fait demi-tour et suit la ligne médiane jusqu'au centre du terrain, puis il y dépose la balle. Après cela, il recule un peu, fait demi-tour et suit la ligne médiane jusqu'à son garage.

SeGarer() à faire

Nous avons également donné au robot la capacité de corriger légèrement sa trajectoire s'il suit déjà une ligne médiane et que son capteur couleur voit du blanc, c'est-à-dire le terrain lui-même. Cela lui sera utile s'il croise perpendiculairement la ligne médiane : sans cela, il continuerait d'avancer tout droit et n'arriverait pas à la suivre.

Capteur Ultrason et vérification des obstacles à faire

Ramassage de la balle

Un problème s'est posé lors de l'étape du ramassage de balle. En effet, lorsque le robot avance vers la balle en suivant son signal infrarouge, il lui faut savoir quand s'arrêter et fermer sa pince. Nous avons d'abord pensé à placer un capteur tactile, que la balle enfoncera lorsqu'elle se trouve entre les pinces. Cependant, il nous était impossible de placer ce capteur à la bonne hauteur avec la façon dont nous avons construit notre pince. Nous avons ensuite essayé de détecter la distance entre la balle et le robot à l'aide du capteur infrarouge. Malheureusement, la distance détectée était à chaque fois différente. Nous avons donc décidé d'utiliser le capteur ultrason pour trouver la distance de la balle par rapport au robot.

EN COURS


Conclusion

A FAIRE