Machine Sherbrooke, Jeux de Génie 2018

officiel.PNG

Green.png

Encore une fois, l'équipe machine de l'Université de Sherbrooke a travaillé durement pendant les 4 mois de la session d'automne pour préparer un robot capable de relever les différents défis de la compétition machine des Jeux de Génie 2018, présenté à l'Université Laval. Voici un article présentant dans les moindres détails les différents choix de conception fait par l'équipe cette année du côté de l'ingénierie électrique, mécanique et informatique du robot, en plus de présenter le parcours de compétition et le défi. Le tout s'est soldé par une 1e place pour la machine en plus de la victoire des Jeux de Génie 2018 au classement général pour la délégation de Sherbrooke!

Le défi Machine

Le défi machine 2018 est somme toute simple : ramasser des mâts au sol, bâtir des drapeaux avec des bannières disposés à l'intérieur du robot (conception propre à chaque équipe machine), puis déposer ces drapeaux fraîchement bâtis dans les socles disposés sur le parcours. L'extraction de la totalité des mâts ajoute un 4 points additionnels aux universités étant en mesure de le faire. Des points étaient aussi alloués sur la vitesse d'exécution en fonction du temps le plus rapide des autres universités. Finalement, le restant des points étaient alloués en fonction de la qualité du prototype présenté ainsi que l'ingénierie et l'innovation apportée par l'équipe sur le robot.

Les drapeaux sont constitués d'un mât (bâton de pop sicle standard) et d'une bannière dont la surface, une fois assemblé, doit recouvrir une pièce de 2 dollars canadien :

flag.PNG

L'assemblage doit être assez solide pour être manipulé par un des juges sans que la bannière ne tombe, sans quoi l'assemblage est considéré comme incomplet.

Les bannières de l'Université de Sherbrooke sont bâties avec des pailles McDonalds sur le principe d'insertion serré : la déformation de la paille sur le mât l'y attaches fermement.

flagplat.PNG

flagmonte.PNG

flagcoupe.PNG

Le parcours
1_Vue_iso_1.jpg

Le parcours comporte différents reliefs :

La complexité du défi reposait majoritairement sur le fait qu'aucun contact visuel direct n'était permis entre le pilote et le parcours : 3 personnes autres que le pilote pouvait être disposé aux alentours du parcours pour donner des directives orales. Les essais pendant la compétition étaient aussi limité à 10 minutes par équipe. Ceci nous à influencé dans le choix d'opter pour une approche basé par itérations afin d'avoir un prototype fonctionnel rapidement; le tout pour être sûr d'avoir assez de temps pour se pratiquer à piloter le robot avant la compétition.

dsaf.png
source : (https://i.pinimg.com/originals/8a/07/e1/8a07e14951bd12bab0ccc54727258846.png)

La machine de Sherbrooke

À l'Université de Sherbrooke, les étudiants sont appelés à réaliser beaucoup de travaux pratiques pour perfectionner leurs méthodes de conception et de design : le résultat est une approche de résolution de problème beaucoup plus efficace, épaulés par des schémas et des plans de conception complets et professionnels. De plus, la gestion d'un projet de cette envergure nécessite une organisation soutenue, des réunions fréquentes et des revues de design. Partant de cette philosophie, l'équipe de Sherbrooke a pris la décision de réaliser l'entièreté de sa machine à partir de concepts provenant de ses membres en mettant aux point différents prototypes en plus de les qualifier, de les perfectionner et finalement d'en réaliser une version finale pour la compétition.

Prototypes des systèmes mécaniques

Vu le nombre différents de reliefs présents sur le parcours officiel, le choix de la traction s'est rapidement imposé comme étant crucial à l'élaboration du premier prototype. Partant du squelette de la machine de 2017, l'équipe a commencé à tester l'adhérence avec un système à 4 roues motrices conventionnel : les résultats furent décevants, la traction étant incapable de grimper la montagne ou encore de sortir facilement du bac de sable. Après avoir évalué différents scénarios, un membre a déniché des chenilles d'un ancien tank téléguidé, et est ensuite apparu notre système de traction :

6ROUES_10.PNG

Deux moteurs DC entraînent 2 sprockets imprimés 3D placés à l'avant de la machine. 6 roues en fibre molle montés sur des axes libres permettent aux chenilles de glisser facilement sur les pneus et d'ainsi réduire le stress mécanique sur les sprockets. La base du robot, initialement en bois, a été renforcée en acier pour le prototype de compétition.

6ROUES_12.PNG

Pour défoncer le mur et aller au-delà du nord vers l'espace, un treuil motorisé a été ajouté à l'arrière du robot : ceci a aidé à mieux répartir le poids pour ne pas glisser en grimpant la montagne, en plus d'être un élément essentiel pour traverser le trou de 8 pouces. Lors de l'approche, le pilote n'avait qu'à descendre le treuil, activer la traction des roues, et le robot pouvait ainsi facilement traverser le trou.

6ROUES_2.PNG

L'élément mécanique qui ressort le plus de la machine de Sherbrooke est sans doute la conception et la réalisation complète de 2 bras robotisés à 6 degrés de libertés chacun, disposés du côté gauche et droite du robot. Ces bras, composés de 6 servo moteurs, offrent une très grande liberté de mouvements permettant d'aller chercher les mâts et de les déposer dans n'importe lesquels des socles présents sur le parcours (lune, sable, montagne, etc.). Le choix d'en posséder 2 complets s'est avéré très utile : d'une part, la prise des mâts à gauche autant qu'à droite a permise à notre équipe d'être rapide lors de la compétition, d'une autre part un duo offre une redondance en cas de défaillance majeure d'un des bras.

6ROUES_1.PNG

Les bras ont été modélisés et asservis par des équations mathématiques pour contrôler simultanément le rayon, la hauteur ainsi que la portée du bras tout en conservant en tout temps la pince de contrôle à l'horizontale pour l'approche et la prise des mâts.
Les 6 axes de libertés de chacun des bras :

20180109_100608.jpg

L'ensemble des pièces de soutien ont été réalisés à l'impression 3D en plastique PLA biodégradable, et le matériel de composition des bras est du bois découpé au laser : Sherbrooke s'est donné comme mission de réduire au maximum l'utilisation de matériau non recyclable, et l'approche avec le bois permet d'atteindre cet objectif en plus de permettre de facilement retravailler les prototypes!

Prototypes des systèmes informatiques

La partie informatique de la machine repose sur la réalisation d'une interface de contrôle sur PC basé sur le framework Java FX. Cette interface permet de contrôler l'ensemble des systèmes du robot via un clavier, et permet de visionner le flux vidéo des 4 caméras disposés sur le robot :

PROTO_3--3.png

L'interface propose différentes fenêtres de contrôle :

reg.PNG

config.PNG

conque.PNG

La communication entre l'interface et les caméras fut réalisée avec OpenCV : les 4 récepteurs étaient branchés par USB sur l'ordinateur. Les caméras sont de type FPV, jasant sur la bande du 5.8GHz à 42 Channels configurables. La communication entre l'interface PC et le robot s'effectue à l'aide d'un port série sans-fil XBEE à 57 600bps. La totalité de la trame de communication a été explicité en différents octets de contrôles tel qui suit :

intface.PNG

L'interface a donc pu être développée en parallèle sur l'interface PC ainsi que sur la plateforme de développement électronique, réduisant le temps de développement et la modification du code d'un sens ou dans l'autre. L'interface compte environ 30 000 lignes de code.

Prototypes des systèmes électroniques

Machine-v1_00B-picture.png

La partie électronique de la machine repose en grande partie sur la réalisation d'un circuit imprimé 4 couches de contrôle robotique complètement custom imaginé, développé puis réalisé sur la suite logicielle OrCAD Capture et PCB Editor. La plateforme est basé sur un microcontrôleur PIC 16 bits de type dsPIC33EP 100 pins : il est le cœur de contrôle du robot et possède un vaste inventaire de périphériques internes permettant de réaliser à la fois le défi machine 2018 ainsi que servir de plateforme de développement pour les futures délégations machines de Sherbrooke. Voici l'explication en détail des sous-systèmes du circuit de contrôle.

Le microcontrôleur sélectionné (dsPIC33EP512GM310) fait partie de la famille haute gamme des dsPIC : il comporte un set de périphériques riche en intégration, en plus d'avoir suffisamment de mémoire ROM et RAM pour stocker plusieurs fenêtres d'interfaces tactiles ainsi qu'une quantité imposante de code. Particulièrement :

asdf.PNG

En plus de posséder tous ces périphériques, le microcontrôleur possède la capacité de “remapper” les entrées / sorties sur à peu près n'importe quelle pin physique : ceci a été très utile pour le routing de la carte ainsi que pour isoler des blocs de signaux ensembles sur des ports adjacents.

Les drives de moteurs sélectionnés sont des Pololu Simple Motor Controller, contrôlés par une tension analogue variant entre 0 et 3,3V. Une tension de 1.65V arrête le moteur, le fait avancé à pleine vitesse avant à 0V ou pleine vitesse arrière à 3,3V : il faut donc un mécanisme prévenant le départ des moteurs lors de la programmation du microcontrôleur (fréquent en phase de développement). Le circuit de conditionnement est donc basé sur un DAC 12bits SPI de type MCP4922, piloté par une tension référencé à 3.3V isolée de l'alimentation principale. La tension analogue passe ensuite dans une switch électronique SPDT relié de 1 à la sortie analogue du DAC et de 2 à une tension fixe de 1.65V : l'utilisateur doit activer la switch dans le code pour prendre le contrôle des moteurs, sinon ils sont par défaut à l'arrêt au démarrage. Le système est dupliqué pour le contrôle de 8 moteurs indépendants : il y a donc 4 DAC 12 bit partageant le port SPI2 à 15mbps ainsi que 2 switch électronique. On ferme la boucle de contrôle des moteurs avec des encodeurs QEI permettant de connaître la direction, position et vitesse du robot : il est donc possible d'asservir la direction et la position pour déplacer le robot dans le plan XY sans contrôle actif de l'utilisateur.

drives.PNG

L'alimentation principale de la carte est à 3.3V et les servo moteurs fonctionnent majoritairement à 5V. Le choix d'avoir un level shifterpour chacun des canaux PWM permet de soit le laisser à 3.3V en ne populant pas les pieces, ou encore de le shifter vers +5V pour le contrôle des servo. De plus, une alimentation séparée 5V_S permet de fournir plus de 1.5A à l'ensemble des 12 servo moteurs présents sur le robot.

PWM.PNG

Les capteurs de distance sont très utiles pour se repérer dans l'espace : dans le cas de notre plateforme robotique, il est possible d'en brancher jusqu'à 8 d’entre eux. Un convertisseur ADC 12 bit SPI MCP3208, placé sur le port SPI3, permet en premier lieu d'obtenir une représentation numérique de la distance. Ensuite, à l'aide d'un potentiomètre I2C (AD5254), on génère une référence analogue permettant de définir un seuil de distance minimal à atteindre avant de changer l'état de la sortie. La référence variable, ainsi que la sortie analogue du capteur de distance, entrent dans un comparateur (LP2901) à sorties collecteur ouvert. Ce système permet de définir un seuil en CM à atteindre avant que le PIC ne déclenche une interruption et permette, par exemple, de stopper d'urgence un mouvement ayant dépassé une limite en portée.

analog_shc.PNG

i2cpot.PNG

compa.PNG

Le microcontrôleur possède 100 pins, la majorité d'entre elles étant “remappeable” : un fichier détaillé des IO et de leurs connections a été élaboré pour assurer une compatibilité à 100% des placements et du routing des pins. L'alimentation de la carte est basé sur des alimentations switching pour générer le +5V, +5V_S et le +3,3V. Des LED, boutons et points de test ont été ajoutés pour permettre à l'usager de dépanner efficacement la plateforme. Les interfaces QEI sont branchés sur des entrées “Change Input Notification” pour permettre une saine gestion du calcul de la vitesse, de la position actuelle et de la direction de chacun des 8 moteurs par interruption à haute-priorité, alors qu'un IO expander 8bit I2C (MCP23008) permet de brancher 8 killswitch externes ou tout autre périphérique IO à 3.3V. Finalement, un connecteur pour un écran tactile capacitif embarquant le contrôleur de FTDIchip FT813 est disponible et a permis de créer des interfaces de debug graphiques pour l'affichage, la gestion et le dépannage de la plateforme de manière visuelle : boutons tactiles, sliders, affichage de registres, de compteurs d'état; son utilisation s'est avérée cruciale pour le développement rapide des sous-systèmes électroniques.

dspic.PNG

ioioio.PNG

aloim.PNG

qeiqei.PNG

FT.PNG

out.PNG

Ci-bas, les différentes couches du PCB:

TOP.PNG

bottom.PNG

SMTOP.PNG

SMBOT.PNG

IN1.PNG

IN2.PNG

SSTOP.PNG

SSBOT.PNG

20180114_110348-1.jpg

Code de la plateforme

La totalité du code de la plateforme fut écrit en C sur MPLab X avec le compilateur XC16. L'utilisation intensive de structures permet de réduire la complexité du code et d'instancier directement la quantité de modules utilisés sur la plateforme : la taille finale du code dépend donc de la quantité de ressources utilisés. Le robot ne répond qu'aux commandes qu'il considère comme valide après la réception des 6 octets de la trame d'interface et n'est qu'un vulgaire périphérique Read/Write aux yeux de l'ordinateur : il modifie son état lors de la réception d'une trame d'écriture ou renvoie son état lors de la réception d'une trame de lecture. La plateforme compte environ 12 000 lignes de code.

UART.PNG

uartdeouf.PNG

SPI.PNG

SPI.PNG

Conclusion et remerciements

La machine de Sherbrooke a remporté la 1ère place à la compétition grâce à l'innovation présente dans tous les aspects du robot : que ce soit du côté mécanique, électrique ou informatique, chacun des membres a trimé dur pour concevoir des systèmes à la hauteur de nos attentes. Le défi 2018 a permis a chacun d'entres-nous de travailler leurs aptitudes en design et en gestion, de réaliser une machine adapté au défi en plus de conserver une version fonctionnelle d'un robot capable de manipuler librement des objets dans l'espace grâce aux bras asservis. L'apprentissage réalisé lors de ces 4 mois de travail est un atout important à notre formation universitaire, et cette victoire permet de faire rayonner l'Université de Sherbrooke, la Faculté de Génie ainsi que les Jeux de Génie de Sherbrooke sur l'ensemble de la province #sherbylove.

Les différentes vues du prototype final :

20180107_165045.jpg

20180107_165106.jpg

20180107_165206.jpg

20180107_165501.jpg

L'équipe 2018 (de gauche à droite) :
Mathieu Gervais, Génie Mécanique, Promotion 60
Gabriel Charland, Génie Mécanique, Promotion 60
Jean-François Bilodeau, Génie Électrique, Promotion 61
Maxime Rodier, Génie Informatique, Promotion 61
Raphael Léandre, Génie Mécanique, Promotion 60
Simon Milhomme, Génie Électrique, Promotion 61 (VP machine)
Dominic Otis, Organisateur de la compétition machine 2018

winners.jpg

L'équipe voudrait remercier les commanditaires de la délégation de Sherbrooke ainsi que l'ensemble des délégations pour le support et le love, sans qui cette belle réalisation n'aurait pas été possible! #faiteslesjeux

Félicitation aussi à l'ensemble des équipes machines qui ont donnés corps et âmes pour offrir une compétition relevé encore une fois cette année! La diversité des machines et des solutions apportées fut grandiose et couronnée de succès lors de la présentation publique et de la compétition! Sherby vous envoie beaucoup de love! #faiteslamachine

Finalement, merci aux commanditaires qui supportent financièrement les jeux et félicitation au comité organisateur et au comité machine pour le défi de cette année et pour l'organisation exceptionnelle que représente les Jeux de Génie. Merci 1000 fois! #faitesleco

Pour voir et revoir la compétition :
https://www.facebook.com/jeuxdegenie/videos/1567765113316056/

Pour consulter le cahier machine remis en septembre aux équipes :
http://jeuxdegenie.qc.ca/jdg/2018/Assets/doc/Cahier_machine_jdg18.pdf

Pour en apprendre d'avantage sur les Jeux de Génie du Québec :
http://jeuxdegenie.qc.ca/jdg/2018/

Si vous avez aimé l'article, laissez votre souris quelques instants dans le cercle ci-bas et n'hésitez pas à partager!
Pour toutes questions, communiquer à l'adresse suivante :
Jean-Francois.Bilodeau2@usherbrooke.ca

 
17
Kudos
 
17
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 →