RobotRamasseur2014-1 : Différence entre versions

De Wiki de bureau d'études PeiP
Ligne 74 : Ligne 74 :
 
*Suivre la ligne médiane jusqu'à trouver son garage et retourner au centre du terrain (capteur couleur)
 
*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)
 
*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 ==
 
== Infrarouge ==
Ligne 123 : Ligne 125 :
 
== Déplacement en suivant les lignes ==
 
== Déplacement en suivant les lignes ==
  
programme découpé en plusieurs parties (fonctions) pour effectuer différentes actions à la suite.<br/>
+
...
 
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 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.
 +
 +
Pour cela, nous avons décidé de prendre le problème
  
 
<br/>
 
<br/>
Ligne 132 : Ligne 136 :
  
 
= Conclusion =
 
= Conclusion =
 +
A FAIRE

Version du 5 mars 2015 à 21:23


Introduction

A FAIRE 
  • Présentation rapide du be et du jeu
  • Rôle de notre robot

Construction du robot

A FAIRE
  • 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 FAIRE ???

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 capteur Couleur.

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 (capteur couleur)
  • 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 tableau à 5 cases "tab" et entier "cpt"
Initialiser le tableau avec les valeurs des 5 signaux
Tant que cpt > 1
  cpt = 0
  Lecture du capteur infrarouge (récupération des nouvelles valeurs des signaux)
  Si tab[0] != 0 et signal1 = 0
    alors tab[0] = 0
  Si tab[1] != 0 et signal2 = 0
    alors tab[1] = 0
  Si tab[2] != 0 et signal3 = 0
    alors tab[2] = 0
  Si tab[3] != 0 et signal4 = 0
    alors tab[3] = 0
  Si tab[4] != 0 et signal5 = 0
    alors tab[4] = 0
  Pour un indice i allant de 0 à 5
    si tab[i] != 0
      cpt++
  Fin Pour
Fin Tant que
Si tab[0] != 0 ou tab[1] != 0
  alors tourner à gauche
Si tab[3] != 0 ou tab[4] != 0
  alors tourner à droite
sinon (tab[2] != 0)
  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.

Pour cela, nous avons décidé de prendre le problème


Conclusion

A FAIRE