Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
projets:acheves:coupe2017 [2017/05/28 21:00] – hackens | projets:acheves:coupe2017 [2022/05/05 07:40] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Coupe de robotique | + | Coupe de Robotique |
======================= | ======================= | ||
Ligne 14: | Ligne 14: | ||
Tous les fichiers (blender, circuits, code du GUI et des robots) sont sur [[https:// | Tous les fichiers (blender, circuits, code du GUI et des robots) sont sur [[https:// | ||
- | Petit robot | + | ====== |
- | ----------- | + | |
- | ====== Structure ====== | + | |
+ | ===== Structure ===== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | [[https:// | ||
Mission : récupérer les cylindres de diamètre 63mm et hauteur 100mm. | Mission : récupérer les cylindres de diamètre 63mm et hauteur 100mm. | ||
Ligne 25: | Ligne 29: | ||
Support en MDF, deux plaques de MDF 6mm horizontales quasi-identiques séparées de 10cm, et plaques de MDF 3mm verticales comme support. | Support en MDF, deux plaques de MDF 6mm horizontales quasi-identiques séparées de 10cm, et plaques de MDF 3mm verticales comme support. | ||
- | ====== Fonctions | + | Coque faire de panneaux transparents, |
+ | ===== Fonctions ===== | ||
La partie antérieure du couloir inférieur (niveau sol) est entourée par une chenille d'un côté, et une pushbar sur ressorts de l' | La partie antérieure du couloir inférieur (niveau sol) est entourée par une chenille d'un côté, et une pushbar sur ressorts de l' | ||
Ligne 31: | Ligne 36: | ||
La partie postérieure du couloir inférieur est entourée par une plaque de MDF 3mm d'un côté, et d'un ascenseur de l' | La partie postérieure du couloir inférieur est entourée par une plaque de MDF 3mm d'un côté, et d'un ascenseur de l' | ||
- | ====== Actionneurs ====== | + | ===== Actionneurs ===== |
+ | |||
+ | Tous les actionneurs se situent à l' | ||
+ | |||
+ | ==== Pince avant ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Une servo à l' | ||
+ | |||
+ | La transmission du servo à la barre se fait via une bielle en mecano. Ça a très bien fonctionné. | ||
+ | |||
+ | |||
+ | ==== Chenille de préhension des cylindres ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | La roue postérieure de la chenille entraîne la chenille. Penser à vérifier que toutes les roues tournent librement, même si elles ne sont pas forcément montées sur roulements. Quelques rondelles permettent de séparer les roues des montants. Les chenilles LEGO sont élastiques : l' | ||
+ | |||
+ | Pour garder le couloir à cylindres libre de tout obstacle, on a dû déporter l' | ||
+ | |||
+ | ==== Ascenseur à cylindres ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Les cylindres arrivés au bout du couloir et basculés par une butée supérieure sont ensuite soulevés par une pièce mobile (en bleu) fixée par deux pièces fixes (en jaune), et entraînée par un élastique tendu entre une roue (en jaune) actionnée par un servo, et un roulement à bille fixé sur l'axe rouge visible en bas de l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Un microrupteur détecte la position haute de l' | ||
+ | |||
+ | ==== Goupille de maintien des cylindres en hauteur ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Une fois soulevés, les cylindres sont maintenus en place par un mécanisme de verrouillage. | ||
+ | |||
+ | En rétrospective, | ||
+ | |||
+ | La pièce bleue mobile est fixée aux deux vis grises, et poussée par les deux servos. Le tout est fixé aux pièces jaunes. La longueur des vis est réglable grâce à des écrous prisonniers de la pièce bleue. Des ressorts autour des vis maintiennent la normalement non verrouillée. | ||
+ | |||
+ | Problème : les servos consomment en permanence une fois verrouillés. Solution : faire en sorte que les bras des servos se bloquent dans les coins de la pièce une fois verrouillés. | ||
+ | |||
+ | ==== Base mobile ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Comme d' | ||
+ | |||
+ | Les supports de fixation avaient l'air un peu fragiles, et les roues avaient tendance à pencher un peu parfois, mais ça a tenu jusqu' | ||
+ | |||
+ | On a aussi placé deux billes folles sous le robot (non représentées ici). Malheureusement le design permettait très peu de possibilités, | ||
+ | |||
+ | ==== Système de lancement de l'" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Magnifique pièces imprimées en 3D, qui a bien marché à tous les coups même si on a eu un peu peur de la solidité de l'axe du servo. Propulsion à l'aide d' | ||
+ | |||
+ | |||
+ | ===== Capteurs ===== | ||
+ | |||
+ | ==== Barrières IR pour localiser les cylindres ==== | ||
+ | |||
+ | Une à l' | ||
+ | |||
+ | ==== Microrupteur de bout de course de en haut de l' | ||
+ | |||
+ | On a collé un petit microrupteur, | ||
+ | |||
+ | ==== Microrupteur " | ||
+ | |||
+ | Un bout de fil de fer plié en " | ||
+ | |||
+ | ==== Radar de proximité ==== | ||
+ | |||
+ | On a utilisé un radar avec des pins VCC, GND, TRIG, ECHO, qu'on a branché directement au FPGA. C'est beaucoup plus pratique que l' | ||
+ | |||
+ | ===== Contrôle ===== | ||
+ | |||
+ | On a utilisé plusieurs systèmes pour contrôler le petit robot | ||
+ | |||
+ | ==== Raspberry pi 3.0 ==== | ||
+ | |||
+ | C'est génial parce que ça se connecte au wifi, on peut se ssh dessus, on peut lancer/ | ||
+ | |||
+ | Il ne faut juste pas oublier de prendre le routeur de la cave, ou de lui apprendre à se connecter au wifi d'un portable, sinon c'est compliqué le jour J. Même si on prend le routeur, c'est pratique qu'il se connecte au wifi d'un portable, pour s'y connecter sur les tables de test. | ||
+ | |||
+ | On a également fixé un petit écran tactile directement sur le rpi, ça a pris un peu de temps pour coder un GUI correct (en SDL) mais c'est bien pratique pour debugger (on l' | ||
+ | |||
+ | Architecture : | ||
+ | * Le programme qui contrôle le robot en match (./raspi) est indépendant, | ||
+ | * ./raspi donne son log en output. On a utilisé un flux custom qui affiche l' | ||
+ | * ./raspi essaye de se connecter avec un FIFO unix au GUI, et s'il y arrive, il envoie sa position à chaque fois qu' | ||
+ | * ./gui est lancé automatiquement au démarrage de la raspi, et s' | ||
+ | * Une fois ./raspi lancé, ./gui ouvre une FIFO pour afficher en temps réel la position du robot, et affiche l' | ||
+ | |||
+ | ==== Arduino de contrôle des servos ==== | ||
+ | |||
+ | Une Arduino nano est branchée sur le raspi avec un cable usb court. Cette arduino est branchée à une carte contrôlant les servos, et une carte contrôlant les capteurs. Le raspberry envoie des instructions en serial à l' | ||
+ | |||
+ | Cette arduino est également responsable de lancer la fusée au bout de 90 secondes. Pour cela, nous avons implémenté une fonction delay2 et modifié toutes les boucles bloquantes pour vérifier un timer. On aurait peut-être dû utiliser un timer interrupt mais on ne savait pas comment faire et il n'y avait pas internet dans le hall des expos. | ||
+ | |||
+ | ==== FPGA/ | ||
+ | |||
+ | Voir le howto sur le papilio duo. En gros c'est une carte avec un fpga d'un côté, et un arduino de l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Dans l' | ||
+ | |||
+ | On a eu plein de problèmes parce que le registre à décalage se... décalait. Prévoir un code correcteur d' | ||
+ | |||
+ | Le fpga est également responsable de vérifier l' | ||
+ | |||
+ | Bref avec tout ça on est assez précis, et on peut aller assez vite. | ||
+ | |||
+ | ===== Alimentation | ||
- | Tous les actionneurs se situent à l' | + | TODO |