Binome2015-3 : Différence entre versions
(→Programmation des phototransistor afin d'attraper la Balle) |
(→Contrôler moteur arduino) |
||
Ligne 245 : | Ligne 245 : | ||
## l'algorithme du robot retourne à l'état 2 | ## l'algorithme du robot retourne à l'état 2 | ||
− | == | + | == Conclusion == |
− | |||
− | |||
− | + | Notre robot est capable suivre une ligne noire, de ne pas sortir du terrain défini par des lignes noires, de détecter la balle, de l'attraper et de tirer. Il ne manque qu'à notre robot la partie communication avec les buts et les autres robots à l'aide d'un bouclier xBee. | |
− | + | Ce bureau d'étude nous a permit de réaliser un premier projet s'étendant sur un laps de temps aussi important en équipe. Nous avons alors découvert les joies du travail en équipe (lolll) et nous avons pu avoir un aperçu important de ce que pourrai être la spécialité IMA à Polytech Lille. |
Version du 7 mai 2016 à 15:25
Sommaire
- 1 Introduction
- 2 Aptitudes du robot compétiteur
- 3 Journal de Bord
- 3.1 Séance 1
- 3.2 Séance 2
- 3.3 Séance 3
- 3.4 Séance 4
- 3.5 Séance 5
- 3.6 Séance 6
- 3.7 Séance 6
- 3.8 Séance 7
- 3.9 Séance 8
- 3.10 Séance 9
- 3.11 Séance 10
- 3.12 Séance 11
- 3.13 Séance 12
- 3.14 Séance 13
- 3.15 Séance 14
- 3.16 Séance 15
- 3.17 Séance 16
- 3.18 Séance 17
- 3.19 Séance 18 : 18/04/2016
- 3.20 Séance 19
- 3.21 Séances du 02/05 au 04/05
- 3.22 Séance 20 : 09/05/2016
- 4 Photos Chassis
- 5 Pince
- 6 PCB
- 7 Assemblage du robot
- 8 Programmation capteurs de ligne
- 9 Programmation des phototransistor afin d'attraper la Balle
- 10 Déroulement d'un match
Introduction
Dans le cadre de ce bureau d'étude, nous avons pour rôle la réalisation d'un robot capable de participer à un match de foot particulier.
Ce wiki relatera les tâches accomplies à chaque séance dans le journal de bord, le raisonnement suivit pour la réalisation des différents éléments du robot ainsi que les difficultés que nous avons rencontrées.
Aptitudes du robot compétiteur
- Le robot doit éviter des obstacles (autres robots,buts,...)
- Le robot doit repérer les lignes du terrain (les suivre pour sortir/rentrer dans le garage, ne pas sortir du terrain)
- Le robot doit reconnaître la balle
- Le robot doit savoir récupérer la balle
- Le robot doit savoir envoyer la balle
- Le robot doit savoir communiquer avec le ramasseur, les buts et le robot adverse.
Journal de Bord
Séance 1
- Présentation du projet
- Choix des composantes du robot joueur: châssis deux roues pour faciliter les rotations
- Début de l'assemblage du châssis.
Séance 2
- Finalisation montage moteur + boite piles + roue libre sur le chassis
- Découverte de la programmation arduino + fonctionnement moteur
Séance 3
- Première mise en marche des moteurs : direction + vitesse de rotation
Séance 4
- Imagination de la pince
Séance 5
- Prise en main du logiciel Free Cads pour modéliser la pince
Séance 6
- fin de la modélisation de la pince avec Free Cads
Séance 6
- Première utilisation des phototransistors et détermination de la résistance nécessaire (3000 ohm)
- Première utilisation du servo-moteur à l'aide d'Arduino
- réflexion sur le train d'engrenages à utiliser pour faire fonctionner la pince
Séance 7
- modélisation sur Free Cads du train d'engrenage
- modélisation sur Free Cads des supports nécessaire au maintien de la pince
Séance 8
- Début de la modélisation du PCB sur Fritzing
- Pince robot imprimée
- Création du programme de détection de la balle par les 5 capteurs infrarouges placés devant le robot.
Séance 9
- Modélisation du PCB moteur qui sera placé au dessus de la carte Arduino.
- Suite de la programmation du programme de détection de la balle
Séance 10
- Retour sur décision. il faut placer 2 capteurs de lignes sur le PCB, il est beaucoup plus difficile de faire suivre une ligne au robot avec un unique capteur de ligne.
- suite de la programmation du programme de détection de la balle
Séance 11
- fin de la programmation du programme de détection de la balle
Séance 12
- Fin de la modélisation du premier PCB, début de la modélisation du second PCB
- Tests du programme de détection de la balle peu concluant : problèmes de court-circuits entre les LED et la carte Arduino. Il faudra refaire des tests lorsqu'on aura les deux PCB
Séance 13
- Programme pour éviter les obstacles
Séance 14
- amélioration du programme de détection de la balle
Séance 15
- programmation du mouvement du servomoteur pour ouvrir, fermer et tirer avec la pince
Séance 16
- obtention du train d'engrenage : trop de frictions entre les engranges, ils ne tournent pas correctement ==> nouvelle impression du support des engrenages
Séance 17
- Bonne rotation des engrenages
- programmation du suivi d'une ligne par le robot à l'aide des deux capteurs de couleur
Séance 18 : 18/04/2016
- obtention du second PCB : soudure
- programmation du suivi d'une ligne par le robot à l'aide des deux capteurs de couleur
Séance 19
- obtention des supports de la pince
Séances du 02/05 au 04/05
- fin de l'assemblage du robot avec les PCB fonctionnels et la pince fixé
- rectification des programmes et tests sur le robot : capable de suivre la ligne, de ne pas sortir du terrain, de suivre la balle, de l'attraper et de tirer et d'éviter un obstacle
Séance 20 : 09/05/2016
Photos Chassis
Pince
Le système utilisé pour prendre et propulser la balle infrarouge est une pince qui éjecte la balle, lors de son ouverture.
La motorisation de cette pince est réalisé par un unique servomoteur. Un train d'engrenage servira à transmettre la rotation du servomoteur aux 2 parties de la pince.
Nous avons choisi un tel dispositif car cela ne nécessiterai qu'un seul servomoteur, ce qui nous permet d'économiser de l'espace à l'avant du robot, les servomoteurs étant plutôt volumineux. En effet les phototransistors, les capteurs de couleurs ainsi que le capteur ultrason se trouvent à l'avant du robot.
Pour réaliser la pince, nous avons d'abord dû effectuer des recherches afin de sonder les différents mécanismes que nous pourrions utiliser. Ayant quelques connaissances sur le fonctionnement des engrenages, nous nous sommes dis qu'un système peut être plus compliqué mais plus ergonomique serait préférable.
Pour réaliser la pince nous avons d'abord dû apprendre à prendre en main le logiciel de modélisation 3D Free Cads. C'est à ce moment que nous avons effectuer une première répartition des tâches au sein de notre groupe : l'un s'occupait des deux troncs principaux de la pince et des supports, l'autre des engrenages nécessitants plus de recherche.
Nous avons souvent dû effectuer des transformations, notamment sur la taille des éléments de la pince afin que tout les éléments du robot puissent fonctionner ensemble. En effet, nous avons choisis de tester tout le matériel mis à notre disposition le plus tôt possible afin d'estimer quel serait leur meilleur placement sur le robot, leur nombre nécessaire avant de finaliser la pince, que nous pouvions alors adapter à nos besoins.
Le principal soucis que nous avons rencontré fut le peu de disponibilité de l'imprimante 3D nécessaire à l'impression de le pince et de ses composantes. Il nous aura fallut parfois un mois avant de ppuvoir imprimer une pièce. C'est pourquoi nous avons commencé par réaliser la pince avant tout autre chose.
PCB
Oublie pas de causer des soudures biloute
Assemblage du robot
Nous avons commencés à assembler notre robot après l'obtention des PCB et après avoir soudé dessus toutes les composantes nécessaires. L'utilisation des PCB simplifiait les branchements sur le robot malgré que de nombreux fils étaient toujours nécessaires. Il fallait donc souvent se référer au schéma du PCB et être rigoureux. Après avoir assembler toutes les composantes, fils et PCB sur le robot, nous avons constatés un cour-circuit dans le PCB où sont reliés les différents capteurs (capteur ultrason, capteur de ligne, phototransistor, servomoteur). Nous avons donc réinstaller un à un sur le PCB les différents capteurs pour déterminer l'origine du court-circuit. Le capteur ultrason était en effet mal installé : le PCB avait été réalisé de telle sorte que le capteur ultrason soit dirigé vers l'arrière du robot alors que nous souhaitions qu'il soir dirigé vers l'avant.
Nous avons du ajoutés des fils pour le remettre dans le bon sens. Nous n'avions pas été suffisamment rigoureux lors de la réalisation du PCB.
Programmation capteurs de ligne
A l'aide des capteurs de ligne, notre robot peut suivre une ligne noire ou effectuer une rotation lorsqu'il capte une ligne et qu'il ne doit pas sortir du terrain. Afin de faciliter le suivit de ligne du robot ou d'éviter qu'il sorte du terrain, nous avons eu l'idée d'installer deux capteurs de lignes de chaque côté du robot, juste devant les roues. lors du suivit d'une ligne, le robot pouvait ainsi plus facilement se remettre dans le droit chemin dès qu'un capteur captait une ligne noire. De même, lorsqu'on voulait qu'il ne sorte pas du terrain, l'utilisation de deux capteurs nous permettait de savoir de quel côté tourner pour ne pas sortir du terrain.
Le problème rencontré fut que lorsque le robot allait trop vite, il passait trop rapidement au dessus des lignes, le robot n'avait pas le temps de réagir qu'il était soit déjà sorti du terrain, soit il ne suivait plus la ligne (lorsqu'il arrivait à un croisement).
Programmation des phototransistor afin d'attraper la Balle
Le premier problème rencontré fut de différencier les rayon infrarouges émis par l'environnement du robot de ceux émis par la balle. Comme la balle émet des rayons infrarouges qui varient avec le temps, nous avons réalisé un algorithme qui prend en compte les deux valeurs extrémales perçues par les phototransistors sur un intervalle de temps au moins égale à une période d'émission de la balle. On soustrait alors la valeur minimale à la valeur maximale et si le résultat est très faible c'est que la balle n'a pas été détectée. Sinon c'est que la balle se trouve en face d'un phototransistor.
Nous avons choisi d'utiliser 5 phototransistors placés à l'avant du robot afin de couvrir un angle important tout en permettant de définir avec précision la position de la balle par rapport au robot. En effet, si le robot ne perçoit pas le signal caractéristique de la balle, il effectue une rotation d'environ 40° jusqu’à percevoir la balle. Le phototransistor qui perçoit la balle est alors celui qui est en face de la balle. le robot n'a plus qu'à effectuer de faibles rotations jusqu’à ce que le phototransistor du milieu soit en face de la balle (c'est alors celui qui perçoit le signal le plus fort). Le robot doit alors avancer tout droit dans la direction de la balle.
Un autre problème fut de définir avec précision le distance séparant la balle du robot afin de définir quand fermer les pinces.
Déroulement d'un match
- le joueur sort de son garage
- il cherche la balle
- il prend la balle et demande l'activation de la balise du but
- il tire dans le but adverse et demande la désactivation de la balise du but
- il y a un but
- le robot joueur retourne dans son garage, l'algorithme du robot retourne à l'état 1
- il n'y a pas but
- l'algorithme du robot retourne à l'état 2
Conclusion
Notre robot est capable suivre une ligne noire, de ne pas sortir du terrain défini par des lignes noires, de détecter la balle, de l'attraper et de tirer. Il ne manque qu'à notre robot la partie communication avec les buts et les autres robots à l'aide d'un bouclier xBee. Ce bureau d'étude nous a permit de réaliser un premier projet s'étendant sur un laps de temps aussi important en équipe. Nous avons alors découvert les joies du travail en équipe (lolll) et nous avons pu avoir un aperçu important de ce que pourrai être la spécialité IMA à Polytech Lille.