Binome2016-7
Sommaire
- 1 Introduction
- 2 Compte Rendu des séances
- 2.1 Séance 1
- 2.2 Séance 2
- 2.3 Séance 3
- 2.4 Séance 4
- 2.5 Séance Bonus
- 2.6 Séance 5
- 2.7 Séance 6
- 2.8 Séance 7
- 2.9 Séance 8
- 2.10 Séance 9 (13/02)
- 2.11 Séance 10 (16/02)
- 2.12 Séance 11 (27/02)
- 2.13 Séance 12 (02/03)
- 2.14 Séance 13 (06/03)
- 2.15 Séance 14 (09/03)
- 2.16 Séance 15 (13/03)
- 2.17 Séance 16 (16/03)
- 2.18 Séance 17 (20/03)
- 2.19 Séance 18 (27/03)
- 2.20 Séance 19 (03/04)
- 2.21 Séance 20 (27/04)
- 2.22 Séance 21 (04/05)
- 3 Conception : résumé
Introduction
Présentation
Pour ce projet, notre binôme formé par Rémi Foucault et Julie Claude, travaillera sur le robot compétiteur.
Le BE consiste à concevoir différents robots participant à un "match de foot". Il y a des robots compétiteurs, robots ramasseurs de balles ainsi que des buts à concevoir. Le robot compétiteur que nous souhaitons réaliser est tout d'abord actionné par un message reçu par le robot ramasseur. Il doit suivre les lignes colorées du terrain (après être sorti de son garage), à l'aide de capteurs, dans le but de se repérer dans l'espace dédié puis de trouver la balle qui émet un signal infrarouge. Une fois repérée, le robot doit se diriger vers la balle et à l'aide de pinces l'attraper ( ces pinces doivent cacher son signal). Une fois la balle attrapée, le robot envoie un message aux buts afin qu'ils enclenchent un signal infrarouge à leur tour, ce qui lui permettra de se placer devant le but adverse et de marquer. Une fois le but marqué, le robot compétiteur rentre dans son garage afin de ne pas gêner le robot ramasseur (qui est chargé de replacer la balle au centre après un but).
Objectif du robot compétiteur
Etapes d'une partie
1* Reçoit signal du robot ramasseur. 2* Se positionne sur le terrain. 3* Se déplace jusqu'à la balle. 4* Attrape la balle. 5* Demande d'activer le but. 6* Trouve le but et s'en rapproche. 7* Tir dans le but. 8* Reçoit message du but pour savoir s'il y a eu but. 9* Rentre au garage.
Cahier des charges par étape
1* Savoir recevoir message du robot ramasseur pour savoir quand sortir du garage. 2* Savoir détecter les lignes du terrain pour savoir vers où se diriger lors de la sortie du garage. 3* Etre capable de recevoir et trouver le signal infrarouge provenant de la balle et de se diriger vers elle. 4* Avoir un système de pinces permettant d'attraper la balle tout en cachant son signal. 5* Pouvoir envoyer un message demandant l'activation du signal infrarouge du but lorsque la balle est attrapée. 6* Etre capable de détecter le signal du but et de s'y diriger. 7* Avoir un système de tir afin de pouvoir marquer un but. 8* Pouvoir recevoir message du but pour savoir si fin du match. 9* Pouvoir se diriger grâce au lignes du terrain pour pouvoir rentrer dans son garage.
Autres fontions
10* Doit pouvoir détecter les obstacles afin de ne pas percuter l'autre joueur, but. 11* Doit savoir se déplacer pendant le début et la fin du match en détectant les lignes du terrain et en les suivant,et savoir distinguer les lignes extérieures du terrain à ne pas dépasser.
Compte Rendu des séances
Séance 1
Nous avons été introduit au projet via une présentation orale décrivant les objectifs du BE. Nous avons par la suite choisi d'orienter notre travail vers le robot compétiteur dont nous allons essayer de réaliser les fonctions suivantes :
- Détecter, attraper puis mettre la balle dans le but (nécessite la conception de pinces)
- Ne pas sortir des limites du terrain lors d'une partie
- Eviter les éventuels obstacles
- En fin de partie, quitter le terrain
Séance 2
Lors de cette séance nous avons précisé les composants dont nous avions besoin pour concevoir notre robot. Nous avons de plus choisi, afin d'augmenter la difficulté, d'ajouter un système de fourche optique à chacune des deux roues.
Ce système permettra aux roues de fonctionner à la même vitesse et d'éviter les incertitudes dues aux moteurs. En effet cette fourche est composée d'une led infrarouge et d'un phototransistor. Grâce à une roue trouée relié a chaque moteur et possédant donc la même vitesse de rotation que celui ci, nous allons pouvoir calculer la vitesse de rotation des deux moteurs (la roue trouée coupant la lumière reçue par le phototransistor). Ensuite nous pourrons récupérer avec l'arduino, les vitesses calculées, les comparer puis les ajuster au niveau des moteurs afin qu'elle soit les plus égales égales possibles, de façon à effectuer un asservissement de la vitesse.
Nous avons eu le châssis de notre robot que nous avons pu monter, puis nous avons aussi réfléchi a la disposition des éléments sur notre robot, et avons fait quelques schémas, à l'aide d'anciens robots créés par des élèves.
Pour la conception du robot nous avons besoin des composants suivants :
-
un bouclier XBee
-
un interrupteur pour démarrer et arrêter le robot
-
un châssis en kit comprenant la roue jockey
-
deux roues et leurs moteurs associées
-
un microcontrôleur Arduino Mega 2560
-
un contrôleur pour les moteurs
-
un capteur ultrason
-
trois détecteurs de lignes
-
cinq capteurs infrarouges
-
un servo moteur pour mouvoir les pinces
-
deux fourches optiques et deux engrenages à appliquer aux roues
Séance 3
Aujourd'hui nous avons obtenu les derniers composants qui nous manquaient. Nous avons donc pu appréhender le fonctionnement du contrôleur de moteurs (la connectique ainsi que la programmation) et avons réussi à faire rouler et tourner notre robot. Ensuite nous nous sommes fortement renseignés sur le capteur ultrason ainsi que sur la fourche optique afin de pouvoir, lors d'une prochaine séance, les connecter à notre Arduino et réaliser les programmes nécessaires.
Séance 4
Lors de cette séance nous avons relié le capteur ultrason à l'arduino. Après avoir compris le fonctionnement du capteur, nous avons réussi à programmer la détection d'obstacles puis l'arrêt des moteurs lorsque le robot se situe suffisamment proche d'un obstacle (nous pouvons choisir la distance que l'on souhaite). Ensuite nous avons programmé la rotation du robot face à un obstacle afin de l'esquiver. Nous avons donc un robot se déplaçant et évitant les obstacle face à lui.
- photo robot avec ultrason
Séance Bonus
Pour cette séance, nous nous sommes attaqués à Fritzing afin de schématiser le circuit électronique de notre robot. Malheureusement nous avons passé du temps à chercher des composants, le logiciel étant difficilement approchable. Nous avons donc commencé à créer le circuit que nous n'avons pas fini. Nous reviendrons plus tard sur cette partie. Ensuite nous avons pu commencé la conception des plaques qui nous aiderons à faire tenir les différents composants sur notre robot. Nous avons alors imaginé les différentes plaques dont nous avons fait des schémas précis sur papier à l'aide de nombreuses mesures effectuées sur le châssis de notre robot.
Séance 5
- Finition des mesures des plaques nécessaires pour fixer les composants sur le robot.
- Apprentissage du logiciel Inkscape : nous avons modélisé les premières plaques.
Séance 6
- Modélisation des plaques pour fixer les composants sur le châssis à l'aide d'Inkscape.
- screen Inkscape
Séance 7
- Finalisation de nos schémas sur Inkscape
- Direction Fabricarium pour découper nos plaques à la découpeuse laser. Nous avons pu découvrir le fonctionnement de cette machine que nous n'avions encore jamais utilisé.
- Plaques découpées (3mm épaisseur) :nous avons découvert que certaines pièces étaient trop fragiles où contenaient un défaut de conception de notre part et nous devrons donc en modifier quelques unes et les découper à nouveau.
- photo plaques
Séance 8
- Commencement de l'étude du fonctionnement de la fourche optique et réalisation de rapides programmes dans ce but.
Séance 9 (13/02)
- Continuation de la programmation de la fourche optique :nous avons eu quelques difficultés et avons donc décider d'étudier la programmation de la fourche optique chez nous, en dehors des cours afin de pouvoir se concentrer sur d'autres choses.
Séance 10 (16/02)
- Programmation mise de côté. Redesign de pièces sur Inkscape.
Séance 11 (27/02)
- Travail à la BU : Conception du schéma des pinces, du support des pinces, engrenages, système de tir etc..
Séance 12 (02/03)
- Apprivoisement du logiciel Freecad pour la conception 3D des pinces (ce qui prit beaucoup de temps).
- Mesures en plus pour la création des systèmes de tenue et de tir de la pince.
Séance 13 (06/03)
- Programmation du servomoteur.
Séance 14 (09/03)
- Suite de la conception des pinces sur Freecad, nous comprenons à présent mieux le logiciel. La partie la plus dure fût la création des quart de sphères creux pour cacher le signal infrarouge de la balle.
- Commencement du design des engrenages, barres, système de tir sur Inkscape.
Séance 15 (13/03)
- Finition de la pince sur Freecad et sur Inkscape. Redesign des pièces qui n'allaient pas au premier découpage.
- Commencement du PCB shield pour notre arduino.
Séance 16 (16/03)
- Suite shield PCB : Le shield s'avère être très compliqué à concevoir, il faut penser à tous les composants, et à adapter les liaisons des composants les unes aux autres (sans parler des composants qu'il a fallu télécharger).
Séance 17 (20/03)
- Finition du shield.
- Nous avons décidé de faire 2 PCB en plus : pour les phototransistors et pour les détecteurs de ligne
Séance 18 (27/03)
- Nos 3 PCB finis, nous avons demandé à nos professeurs de corriger nos erreurs. Nos liaisons n'étaient pas parfaites du tout et nous avions oublié quelques étapes importantes comme la création du schéma propre du circuit pour une meilleur compréhension de celui-ci par les concepteurs des PCB.
- Les 3 PCB étant corrigés et finis nous avons pu les envoyer à la conception. (Le shield a du être refait entièrement à cause de grosses erreurs que nous avions faites, nous avons donc du le finir à la maison).
- Impression des pinces remise à plus tard pour cause de panne de l'imprimante 3D.
Séance 19 (03/04)
- PCB non-reçus, soudage impossible (on aurait dû les recevoir, on a donc demandé aux professeurs de vérifier..)
- Découpage des pièces faites sur Inskape : Nous avons encore eu des problèmes de découpage sur certaines pièces nous serons donc obligés d'y retourner.
Séance 20 (27/04)
- On a reçu nos PCB mais n'avons pas pu souder pour plusieurs raisons. La première est que notre shield comportait plusieurs défauts, le contrôleur moteur n'était pas adapté (trous trop rapprochés), alors que les mesures sur fritzing étaient bonnes, nous ne savons toujours pas le problème. De plus les trous pour le capteur ultrason sont ressortis trop petits alors qu'encore une fois le composants sur fritzing correspondait.
Pour les autres plaques nous avons voulu souder mais aucun poste n'était disponible.
Séance 21 (04/05)
- Soudure des trois PCB. Nous n'avions jamais eu la chance de souder auparavant, nous avons donc observé les recommandations du professeur : - faire une soudure en cône pour pouvoir bien tenir les pattes des composants -vérifier avec un multimètre que la soudure est bien faite et non reliée à la masse quand il ne faut pas.
Nous avons pu régler les problèmes observés sur le shield grâce aux conseils du professeur : au lieu de brancher directement les pattes du contrôleur moteur sur le pcb (on aurait du plier les pattes) nous avons choisi de mettre deux headers dont un un que l'on a dû souder un peu de travers afin de palier à la distance trop grande entre les pattes. Pour les trous soris trop petits pour le capteur ultrason, nous avons pu trouver un header avec des petites pattes qui rentrait parfaitement dans la plaque et ainsi permettant de brancher le capteur.
Conception : résumé
Conception mécanique robot
Choix
Pour la conception de notre robot compétiteur, nous avions plusieurs choix à faire en premier lieu :
- prendre un kit châssis ou fabriquer notre propre châssis sur Inkscape en rajoutant les moteurs soi-même.
- utiliser un Arduino Mega2560 ou un circuit électronique maison à base de micro-contrôleur ATMega328p pour le fonctionnement de tous les composants.
- faire un robot télécommandé ou non.
Nous avons donc pesé le pour et le contre afin d'optimiser notre choix. Notre objectif premier était d'optimiser les programmes et de finir notre robot, nous nous sommes donc dit que le châssis à faire nous prendrait trop de temps. De plus, on souhaitait avoir plus de temps à la fin pour pouvoir soit préparer un terrain soit un but et avoir un robot fonctionnel. N'étant pas très forts avec l'électronique et la conception mécanique nous avons donc opté pour le châssis en kit simple et le robot manuel avec ArduinoMega (le plus simple possible).
Finalement pour compliquer un peu notre travail nous avons décidé d'ajouter un système de fourches optiques aux moteurs pour asservir la vitesse d'une roue à l'autre, l'avantage est que nos deux roues fonctionneront à la même vitesse exactement contrairement à des robots simples ou les deux moteurs de roues ne peuvent jamais être exactement à la même vitesse. Ce système à été assez compliqué à effectuer : en effet nous devions trouver comment attacher ces fourches en dessous du robot de façon optimisée pour avoir moins de fils. Nous avons donc conçu quelques plaques pour les faire tenir.
- photo fourches attachées
Conception plaques de support
Pour finir la conception mécanique de notre robot (hors pinces), nous avons, pendant plusieurs séances, dû réfléchir à la création de plusieurs plaques pour faire tenir les différents composants. Pour cela nous avons utilisé Inkscape, le logiciel n'est pas très dur à utiliser mais la version disponible n'était pas la plus récente et nous avons eu du mal à mesurer des distances. Les contraintes à respecter pour toutes les pièces étaient nombreuses :
- pièces pas trop grandes/ petites
- respecter les diamètres des différents trous du châssis
- et surtout respecter les dimensions des composants
Conception pinces
Nous avons choisi de faire la création de la pince sur freecad. Nous avons tout d'abord du faire plusieurs schémas et avons du réfléchir aux contraintes : cacher la lumière, pinces assez hautes et pas trop lourdes afin qu'elles ne tombent pas. Nous avons donc choisi un modèle de pinces qui cachent la lumière infrarouge (de la balle) des phototransistors avec deux quarts de sphère de ce côté et deux petites barres de l'autre pour retenir la balle. PHOTO SCHEMA PINCES
Freecad fût très difficile a comprendre, plus que certains logiciels comme solidworks que nous avions déjà pu utiliser. Mais après avoir parcouru le logiciel nous avons réussi a produire ce que nous voulions. Il a ensuite fallu faire les barres et les engrenages qui reliaient le tout, la conception nous avait paru simple au premier abord mais il fallait réfléchir a un système qui retienne les pinces de tomber et un système de tir de balle quand le robot se trouve devant un but. Nous avons donc trouvé un schéma concret de tout le système de pinces mais ne savions pas vraiment si ça fonctionnerait, nous avons quand même fait les pièces sur Inkscape pour tester le tout.
Programmation
Le plus gros problème à été la programmation qui nous a pris énormément de temps, nous arrivions a calculer la vitesse d'une roue mais n'arrivions pas à asservir cette vitesse.
Conception PCB
Pour avoir le moins de fils possibles, nous avons choisi de faire trois PCB. Un pour les détecteurs de lignes, pour les phototransistors et le shield (controleur moteur, capteur ultrason, servo-moteur, fourches optiques). La prise en main fût compliquée et longue
La conception des PCB fut compliquée : La prise en main de Fritzing fut difficile notamment pour le Shield qui regroupe de nombreux composants. Ce fut difficile de placer tous les composants sur le PCB de façon à ce que les liaisons puissent être optimisées. De plus il y a de nombreux détails dans la conception du PCB qui ont été compliqués : Modification de certains composants, création des plans de masses, ...