Binome2015-11 : Différence entre versions
De Wiki de bureau d'études PeiP
Ligne 24 : | Ligne 24 : | ||
* 1 arduino MEGA | * 1 arduino MEGA | ||
* 2 servos-moteurs | * 2 servos-moteurs | ||
+ | * 1 unité de contrôle des moteurs (motor shield) | ||
* 1 capteur ultrason | * 1 capteur ultrason | ||
− | * | + | * 1 plaque à essais |
* 3 capteurs de ligne | * 3 capteurs de ligne | ||
* 3 phototransistors | * 3 phototransistors | ||
Ligne 32 : | Ligne 33 : | ||
− | = | + | === La répartition des composants sur le robot === |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*Robot à trois étages: | *Robot à trois étages: | ||
**-1 : Moteurs et détecteurs de lignes | **-1 : Moteurs et détecteurs de lignes | ||
− | **0 : | + | **0 : Boîtiers à piles |
− | **1 : Arduino, | + | **1 : Arduino, plaque à essais, motor shield, détecteurs IR et détecteur ultrasons |
+ | |||
+ | == Actions du robot joueur == | ||
+ | === Se déplacer === | ||
+ | * Le robot est capable de se déplacer grâce aux roues entraînées par les servos-moteurs, eux-mêmes contrôlés par le motor shield. | ||
+ | * La roue folle sert à l'équilibre du robot. | ||
+ | * Il est capable de se déplacer en ligne droite et d'effectuer des virages, à vitesses variables. | ||
+ | * Problèmes rencontrés : | ||
+ | ** Faire tourner les roues dans le même sens (résolu) | ||
+ | ** Régler les vitesses de croisière et de manœuvre (résolu) | ||
− | |||
− | |||
− | |||
− | |||
[[Image:debuts.jpg|thumb|upright=2|center|alt=Photo des premiers branchements|Photo des premiers branchements]] | [[Image:debuts.jpg|thumb|upright=2|center|alt=Photo des premiers branchements|Photo des premiers branchements]] | ||
− | * | + | * Le PCB (circuit imprimé) servant aux communications entre l'Arduino et le motor shield : |
[[Image:Controle moteurs circuit imprimé.jpg|thumb|upright=2|center|alt=PCB contrôle des moteurs|PCB contrôle des moteurs]] | [[Image:Controle moteurs circuit imprimé.jpg|thumb|upright=2|center|alt=PCB contrôle des moteurs|PCB contrôle des moteurs]] | ||
− | == | + | === Détecter les obstacles === |
− | * | + | * Grâce à un détecteur à ultrasons placé à l'avant du robot, celui-ci est capable de détecter et d'éviter les obstacles. |
− | * | + | * Lorsqu'un obstacle est détecté, une fonction "contournement()" est appelée. Elle permet au robot d'effectuer une petite séquence de virages et déplacements afin d'éviter l'obstacle. |
− | + | * Le capteur à ultrasons envoie une onde, puis mesure le temps qu'elle prend pour revenir au robot. Avec un simple calcul nous avons pu déterminer quelle durée correspondait à une distance d'à peu près 15cm, suffisante pour éviter les obstacles. | |
− | * | + | * Problèmes rencontrés : |
− | * Problèmes : | + | ** Installation et mise en fonctionnement du capteur (résolu) |
+ | *** Les valeurs renvoyées par le capteur se basent sur une différence de courant, or lors des premiers essais tous les composants du robot n'étaient pas installés. Après en avoir ajouté, les valeurs renvoyées ne correspondaient plus et cela nous a pris beaucoup de temps pour comprendre l'origine du problème | ||
+ | ** Défectuosité des câbles (résolu) | ||
+ | *** Nous avons du changer plusieurs fois des câbles défectueux, présentant des faux-contacts notamment. | ||
− | * | + | * Le PCB très simple du détecteur à ultrasons |
[[Image:Detecteur ultasons circuit imprimé.jpg|thumb|upright=2|center|alt=PCB capteur à ultrasons|PCB capteur à ultrasons]] | [[Image:Detecteur ultasons circuit imprimé.jpg|thumb|upright=2|center|alt=PCB capteur à ultrasons|PCB capteur à ultrasons]] | ||
− | == | + | === Détecter les limites du terrain === |
* 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 | * 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é) | * Nombre : 3 (imposé) |
Version du 10 mai 2016 à 19:46
Sommaire
Robot joueur
Nous avons choisi de réaliser un robot joueur. Cette page le décrira et expliquera son fonctionnement. Élèves du groupe : BOENS Quentin et GIL Hugo.
Généralités sur le robot joueur
Ses tâches
- Actives (dans l'ordre) :
- sortir de son garage, se placer sur le terrain
- trouver la balle et la récupérer
- trouver le but et y lancer la balle
- Passives :
- ne pas sortir des limites du terrain
- communiquer avec les buts et les autres robots lors de différents évènements
- éviter les obstacles
Les composants utilisés
- 1 châssis deux roues + 1 roue folle
- 1 arduino MEGA
- 2 servos-moteurs
- 1 unité de contrôle des moteurs (motor shield)
- 1 capteur ultrason
- 1 plaque à essais
- 3 capteurs de ligne
- 3 phototransistors
- 1 boîtier à piles
- résistances, câbles
La répartition des composants sur le robot
- Robot à trois étages:
- -1 : Moteurs et détecteurs de lignes
- 0 : Boîtiers à piles
- 1 : Arduino, plaque à essais, motor shield, détecteurs IR et détecteur ultrasons
Actions du robot joueur
Se déplacer
- Le robot est capable de se déplacer grâce aux roues entraînées par les servos-moteurs, eux-mêmes contrôlés par le motor shield.
- La roue folle sert à l'équilibre du robot.
- Il est capable de se déplacer en ligne droite et d'effectuer des virages, à vitesses variables.
- Problèmes rencontrés :
- Faire tourner les roues dans le même sens (résolu)
- Régler les vitesses de croisière et de manœuvre (résolu)
- Le PCB (circuit imprimé) servant aux communications entre l'Arduino et le motor shield :
Détecter les obstacles
- Grâce à un détecteur à ultrasons placé à l'avant du robot, celui-ci est capable de détecter et d'éviter les obstacles.
- Lorsqu'un obstacle est détecté, une fonction "contournement()" est appelée. Elle permet au robot d'effectuer une petite séquence de virages et déplacements afin d'éviter l'obstacle.
- Le capteur à ultrasons envoie une onde, puis mesure le temps qu'elle prend pour revenir au robot. Avec un simple calcul nous avons pu déterminer quelle durée correspondait à une distance d'à peu près 15cm, suffisante pour éviter les obstacles.
- Problèmes rencontrés :
- Installation et mise en fonctionnement du capteur (résolu)
- Les valeurs renvoyées par le capteur se basent sur une différence de courant, or lors des premiers essais tous les composants du robot n'étaient pas installés. Après en avoir ajouté, les valeurs renvoyées ne correspondaient plus et cela nous a pris beaucoup de temps pour comprendre l'origine du problème
- Défectuosité des câbles (résolu)
- Nous avons du changer plusieurs fois des câbles défectueux, présentant des faux-contacts notamment.
- Installation et mise en fonctionnement du capteur (résolu)
- Le PCB très simple du détecteur à ultrasons
Détecter les limites du terrain
- 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.
- Nous utiliserons ce circuit pour les mesures des 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
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.
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
- La hiérarchie des fonctions pose un problème de conflit entre les différentes conditions à respecter, à savoir : rester dans le terrain (capteurs de ligne), ne pas rentrer dans des obstacles (capteur ultrasons) etc.