Machine, Jeux de génie 2017

Voici l'explication des différents systèmes qui ont permis à la machine de Sherbrooke de remporter la 3è place à la compétition des Jeux de Génie 2017, compétition regroupant les différentes facultés de génie des universités québécoises.

Le défi de la machine 2017 consistait en le lancement de balles automatisés dans des anneaux situés au dessus du sol. Une période de temps complètement autonome de 15 secondes en début de partie permettait d'aller chercher des points si le robot allait se positionner en zone ennemie. À la fin de la partie, 1 minute était allouée pour que le robot puisse grimper sur les poteaux de coins, et y rester à l'équilibre sans tomber pendant 5 secondes.

L'allure du parcours :
Parcours.PNG

Le parcours était divisé en 2 sections : la zone ennemie et la zone de sûreté. La partie se jouait avec 4 robots sur le parcours, étant regroupés en équipe de 2. Il était possible de traverser les zones seulement dans les tunnels (chaque côté en milieu de parcours) ou sur les ponts-levis (milieu du parcours).

La stratégie adoptée par l'équipe fut de prioriser la montée du poteau en fin de partie , qui rapportait énormément de points, et de concentrer le reste de ses énergies au design et positionnement du robot pour lancer des balles dans les anneaux. La conception, détaillée dans les lignes suivantes, fut réalisée à 100% par des étudiants de la faculté de génie de l'Université de Sherbrooke. Les noms respectifs des 6 participants sont listés en fin d'article.

PARTIE MÉCANIQUE

La conception de la mécanique est passée par plusieurs design avant d'en arriver à la machine de compétition. Des contraintes de poids, de longueur et de largeur maximale, tant au repos qu'avec une extension, étaient présentes. De plus, il était primordial d'avoir en main un design solide pour la montée du robot sur les poteaux de coins.

20170524_215401.jpg

Le premier système mécanique est le canon à balle. Les pièces de plastique noir sont toutes des pièces imprimés 3D réalisés sur mesure, formant la structure du canon ainsi que l'espace de chargement des balles. Son intérieur est extrudé pour former une légère pente inclinée vers le centre, alignant automatiquement les balles devant les moteurs de lancée.

20170524_213605.jpg

Un servo-moteur sans-fin, accompagné d'un petit bras en plastique et contrôlé par la manette sans-fil, permet de pousser une balle à la fois vers les moteurs de lancée.

20170524_213644.jpg

Les moteurs de lancée sont des moteurs triphasés de drone à très haut RPM, eux aussi contrôlés par la manette sans-fil. Leurs vitesse de rotation pouvait être ajustée par PWM pour contrôler la trajectoire de la balle.

Pour avoir un contrôle optimal de la trajectoire, pour respecter les limites de hauteur imposés dans le cahier de charges et pour finalement hisser le robot sur le poteau, nous devions être en mesure de bouger le canon en Y. Ce système mécanique est présenté sur la photo suivante :

20170524_213556.jpg

Le système d'engrenage a suffit au contrôle du déplacement du canon. Ce système a permis de concevoir un canon qui, lorsque rabattu vers l'arrière, devenait le bras de levée pour hisser le robot sur le poteau de coin.

20170524_213657.jpg

PARTIE ÉLECTRIQUE / INFORMATIQUE

L'intelligence du robot a été divisé sous 2 plateformes distinctes : un Raspberry pi 3 ainsi qu'un Nucleo L432KC, embarquant un STM32.
L'interface entre les microcontrôleurs et les actuateurs du robot a été schématisé sous OrCAD Capture puis développé sous forme de circuit imprimé sous OrCAD PCB Editor. Ci-bas, les 2 itérations du circuit imprimé :

20170712_175942.jpg

Le circuit imprimé final (celui de droite) embarque une alimentation à découpage régulant la tension des batteries (LiPo) de 12V à 5V, pour un courant efficace total de 4A, amplement suffisant pour la logique de contrôle et l'alimentation du STM32. Le Raspberry PI s'installe directement sous le circuit imprimé à l'aide du connecteur 40 pins et communique avec le STM32 par un port i2c dédié, sur lequel une couche applicative a été développé en C++ pour gérer les commandes reçues du Raspberry PI. Le tout est divisé en 2 sections distinctes : le bas du PCB est alloué au circuit d'alimentation (en bas à gauche) et aux connexions vers les drives de moteurs Pololu. En haut, tous les connecteurs nécessaires pour :

Le gestionnaire de PWM :

 void PwmPeripheral :: read(char  angleGrinder[FRAME_SIZE])
 {
     for(int i = 0; i < FRAME_SIZE; i++)  data[i]= angleGrinder[i];
     switch(data[DEVICE_BYTE])
     {
         case SERVO1 :
             setPulse(pwmServo1);
             break;
         case SERVO2:
             setPulse(pwmServo2);
             break;
         case SERVO3:
             setPulse(pwmServo3);
             break;           
         case SERVO4 :
             setPulse(pwmServo4);
             break;
         case CLIMB_MOTOR1:
             setDutyCycle(pwmMotor1);
             break;
         case CLIMB_MOTOR2:
             setDutyCycle(pwmMotor2);
             break;           
     }
 }

Le Raspberry pi avait la tâche de gérer la manette sans fil, c'est à dire traduire les entrées, les transformer en trame, et les envoyer soit aux drives Pololu par UART ou au STM32 par i2c. La totalité de la couche applicative relative au Rapsberry Pi a été programmé en Python.

L'équipe :

Yann Lemay-Sévigny, étudiant en Génie informatique, promotion 59
Charles-Alexis Carrier, étudiant en Génie Informatique, promotion 59
Mathieu Gervais, étudiant en Génie Mécanique, promotion 60
Raphael Léandre, étudiant en Génie Mécanique, promotion 60
Simon Milhomme, étudiant en Génie Électrique, promotion 61
Jean-François Bilodeau, étudiant en Génie Électrique, promotion 61

La machine s'est méritée la 3è place lors de la compétition, et l'Université de Sherbrooke a remporté les Jeux de Génie 2017 au classement général! La conception de la machine de l'an prochain commencera en septembre 2017 et va fort probablement encore nous réserver d'innombrables surprises!

 
1
Kudos
 
1
Kudos

Now read this

LogiP : Analyseur logique portable (Portable logic analzer)

English version follows Lors de mon parcours collégial, j'ai eu à réaliser un projet de fin d'études. Lors de ce projet, mon équipier et moi avons jetés les bases d'une itération 1 d'une Analyseur logique portable, basé sur un coeur... Continue →