Les personnes en situation de handicap cherchent à s’intégrer dans le monde professionnel, en partie par le biais des ESAT. Ces organisations proposent des activités diverses pour développer aux mieux les compétences des travailleurs en leur sein, leur garantissant une meilleure intégration professionnelle et sociale pour qu’ils soient le plus autonomes possible. Il est très important pour ces travailleurs et travailleuses de se sentir utile et intégré dans la société malgré leur déficit quel qu’il soit.
Notre projet
Dans le cadre de notre projet nous avons visité un ESAT, dans le but de rencontrer deux des travailleuses, Anne et Sophie, qui ont une déficience visuelle importante, ainsi que David Lemoal, le commanditaire de notre projet. La mission qui nous a été confiée fût de récupérer le matériel défaillant de l’ESAT et de concevoir un système permettant à un travailleur malvoyant de pouvoir distinguer un poids affiché par une balance avec une taille de police adaptée.
Ce projet n’était pas clairement défini avant notre visite à l’ESAT. Nous avions une idée générale de ce que nous devrions faire mais la rencontre de nos clients nous a donné des détails dont nous ne disposions pas.
Nous savions tous les trois que nous allions travailler pour des personnes en situation de handicap. L’idée de pouvoir nous rendre utiles nous a emballés et nous avons été très motivés et engagés dans ce projet, surtout après avoir pu discuter avec Anne et Sophie. Ce sujet nous a également attiré car nous connaissons des personnes aillant des troubles de la vision importants, donc cela nous touchait directement.
Nous avons récupéré plusieurs appareils à l’ESAT, à savoir :
Un bol vibrant
Un régulateur
La balance
La Raspberry est un petit ordinateur qui consomme très peu d’énergie. Il nous a été utile pour transmettre et recevoir des données, celles de la balance par exemple. Il fonctionne avec le processeur Raspbian.
Pour le bol vibrant, le défi était de d’abord de le faire vibrer (logique), avant d’en réguler la force. Le problème venait également du régulateur qui ne régulait pas (logique aussi). Il a fallu étudier de fond en comble ces deux systèmes en demandant la datasheet au fournisseur, à savoir Sinex. Notre projet a vraiment été centré sur l’étude au cas par cas de nos problèmes car d’autres se créaient à leur résolution.
Au final nous avons réussi à faire vibrer notre bol vibrant et à faire réguler notre régulateur en mode manuel. Le but était cependant d’automatiser le système car l’ancien automate de l’ESAT ne fonctionnait plus. Il fallait, avant cela récupérer les données de la balance pour programmer, plus tard l’automatisation de notre bol vibrant, qui passe par le mode automatique du régulateur.
Après nos longues recherches nous avons découvert qu’une solution très simple existait pour récupérer le signal de la balance qui est du RS232. Le fait est qu’il existe un convertisseur de RS232 à USB. Nous avons donc utilisé cela et avons récupéré toutes les données de la balance après avoir peaufiné notre programme Python. Nous avons donc enfin réussi à récupérer, environ 2 fois par seconde, le poids en direct affiché sur la balance, sur notre mini-ordinateur.
Les heures de travail sur le code informatique se sont multipliées :
Tout d’abord nous avons dû apprendre à utiliser TKinter , qui est utile pour l’affichage et la présentation visuelle de l’application. Le Tkinter nous a permis de mettre en place deux applications. Une première qui affiche, sur un écran d’environ 18 pouces, le poids, instantanément, sur la balance et un deuxième qui demande un poids de consigne.
En même temps nous devions développer le programme principal. Ce dernier regroupe tout le traitement des données de la balance. Il nous permet de diriger l’intensité des vibrations de notre bol vibrant en fonction du poids sur la balance, plus l’on approche du poids de consigne (demandé au préalable) et moins les vibrations sont intenses, pour optimiser la précision de la pesée
Une fois que les applications ont été opérationnelles, il a enfin fallu mettre en boîte tout notre matériel, souder les composants, solidariser les appareils à la boîte et gérer la position des câbles de manière à ce qu’ils ne soient pas encombrants.
Conclusion
Nous sommes tous très fiers du travail que nous avons réalisé. En effet lors de ce projet, nous nous sommes très bien entendus que ce soit entre chaque membre du groupe mais aussi entre les tuteurs. Nous avons réussi à bien répartir les tâches entre chaque membre du groupe en fonction des qualités de chacun. De plus, nous avons réussi à rendre un produit final qui est esthétique, et simple à utiliser. Il respecte bien le cahier des charges que Mr.Lemoal nous avais fixé au début du projet. Ce projet nous a fait apprendre beaucoup de choses et nous a fait acquérir de expérience dans plusieurs domaines.
Dans cet article, nous allons partager avec vous les découvertes que nous avons faites lors de notre projet de deuxième année de classe préparatoire à Polytech Angers !
Ça, c’est ce qu’on a fait…
Oui oui, nos deux petits bras robotisés essaient de construire une ville miniature… Vous voulez savoir comment ? Et bien c’est parti !
1. Présentation du matériel
Notre objectif lors de ces six derniers mois était de créer une solution pour permettre la communication entre plusieurs Dobots Magician via une carte Arduino.
Les Dobots Magician sont des petits robots comme celui-ci, auxquels on peut ajouter une extension telle qu’une ventouse ou une pince pour attraper des objets, un crayon pour dessiner, ou même un laser pour graver dans la matière !
Ils ont une portée allant de 15cm à 32cm par rapport à leur base et une répétabilité des mouvements de 0.2mm.
La carte Arduino MEGA va agir comme le cerveau de notre projet. Elle se verra attribuer diverses lourdes tâches comme relayer les informations entre les Dobots, mémoriser l’avancement de la construction de la ville, recevoir des commandes de la part de l’utilisateur…
Au début, nous avions une carte Arduino UNO, mais elle n’avait pas assez de RAM pour assumer toutes ces responsabilités, nous n’avons donc pas eu d’autre choix que de la changer !
Source de beaucoup d’ennuis, certes, mais la construction de notre ville ne pourrait pas se faire sans la caméra…
En effet, nous allons avoir besoin de repérer des cubes dans l’espace, elle sera donc utile pour traiter le flux d’images qu’elle capture et récupérer en temps réel des informations précieuses que nous allons aborder dans quelques instants.
2. Choix du projet
Comme nous l’avons expliqué, notre but lors de ces six derniers mois était de parvenir à faire collaborer deux Dobots Magician connectés à une carte Arduino. Nous souhaitions profiter au maximum de ces 100 heures de projet pour découvrir de nouveaux domaines liés à l’informatique, il est donc évident que le projet que nous vous présentons aujourd’hui ait piqué notre curiosité. Voici quelques raisons pour lesquelles nous avons choisi ce projet au-dessus des autres :
Satisfaction visuelle offerte par le travail en équipe de deux robots lors de la réalisation d’une tâche complexe
Publication en source libre pour apporter sa participation au développement de la communauté Dobot
Découverte de pratiques courantes en robotique qui seront nécessairement utiles dans le futur
Introduction et apprentissage autonome à la vision par ordinateur
Familiarisation avec du matériel électronique
Enfin bref, c’est finalement la liberté offerte par ce projet, que ce soit dans sa finalité comme dans les procédés pour l’atteindre, qui nous l’a fait remarquer au-dessus des autres.
Maintenant que vous savez pourquoi on l’a choisi, voyons comment nous nous y sommes pris pour construire une petite ville.
3. Premiers pas : Découverte de DobotStudio
Nous avons passé les premières heures de projet à expérimenter et à nous familiariser avec les robots grâce à l’interface de contrôle DobotStudio. Cette application propose de nombreux modes amusants et interactifs pour faire se mouvoir les Dobots. On retrouve notamment le Teach and Playback, où le robot exécute une série de mouvements prédéfinis, et le Write and Draw, qui laisse le robot dessiner un texte ou une image téléversée sur l’application.
En revanche, le mode qui nous intéressait réellement pour le début de ce projet était la programmation en Blockly, puisqu’il offre un accès simplifié aux commandes d’un Dobot grâce à des blocs préprogrammés. En seulement quelques minutes, nous pouvons créer le programme ci-dessous:
Le résultat obtenu lors de l’exécution de ce programme est le suivant :
Avec quelques essais supplémentaires, nous avions une bonne appréhension de la manière de se déplacer des Dobots. Il était donc temps de passer à l’étape suivante : leur interface de communication.
4. Communication en série avec les Dobots
Nous vous l’avions caché jusqu’à maintenant, mais nos petits robots disposent de diverses interfaces de connexion. La zone 6 sur la photo ci-dessous permet l’alimentation et le contrôle des extensions telles que la ventouse ou la pince.
En revanche, celle qui nous intéresse actuellement est l’interface de communication en zone 3. Parmi les 10 pins exposés dans cette zone, 2 d’entre eux (nommés RX et TX) constituent une interface UART, qui permet le transfert bidirectionnel et asynchrone de données en série.
Cette interface est d’autant plus intéressante qu’elle peut être associée à l’une des quatre interfaces UART installées par défaut sur une carte Arduino MEGA (entourées en rouge). Pour ce faire, il suffit de connecter les pins RX et TX à l’arrière du Dobot respectivement aux pins TX1 et RX1 de la carte Arduino. Une troisième connexion nécessaire est celle entre le GND de l’Arduino et celui du Dobot.
Une fois cette connexion réalisée, l’Arduino peut, avec le programme approprié, envoyer des commandes au robot à laquelle elle est liée.
Après quelques heures de recherche, nous sommes entrés en possession de deux fichiers importants. Le premier détaille le protocole de communication des Dobots (format des paquets de données) et contient une liste de leurs commandes enregistrées. Le second est un programme de démonstration faisant bouger un Dobot en connectant ses pins RX et TX à une carte Arduino MEGA.
Voici le résultat obtenu grâce au code de démonstration :
Une très bonne nouvelle pour nous fut que cette démonstration contenait l’implémentation d’une dizaine de commandes et d’un système assez modulaire (bien que parsemé de bugs embêtants) pour établir une communication à double sens avec un Dobot.
Après avoir passé plusieurs heures à lire, comprendre et corriger le code de démonstration, nous étions fin prêts à relever notre plus gros défi jusqu’à présent : la création d’une bibliothèque open-source pour permettre le contrôle de un ou plusieurs robots Dobot Magician depuis une unique carte Arduino Mega.
5. Création de DobotNet
C’est ici que naquit DobotNet. Avec un temps considérable passé à découvrir et à réorganiser la démonstration, nous avons été capables de marquer les parties du code nécessitant une réécriture complète et celles pouvant être utilisées sans grosse modification.
Il s’agissait de notre première expérience de création d’une bibliothèque open-source. Aussi, nous avons concentré nos efforts pour améliorer au maximum la lisibilité du code grâce à des fonctions documentées et simples à utiliser.
Voici l’évolution de la syntaxe pour faire se déplacer un robot vers un point donné, en commençant avec la méthode initialement proposée par la démonstration :
// Long, peu pratique et sans support pour plusieurs Dobots
PTPCmd gPTPCmd;
gPTPCmd.x = 200;
gPTPCmd.y = 0;
gPTPCmd.z = 0;
SetPTPCmd(&gPTPCmd, true, &gQueuedCmdIndex);
Et maintenant, l’équivalent du code précédent en utilisant DobotNet, où “dobot” est une variable pouvant représenter n’importe lequel des robots connectés à la carte :
dobot.MoveTo(MOVL_XYZ, 200, 0, 0, 0);
En comparant ces deux extraits, on remarque que le gain de temps, de place et par conséquent de lisibilité du code source n’est pas négligeable, surtout pour des procédures de mouvements plus longues et complexes.
Nous avons également ajouté des exemples à notre bibliothèque DobotNet pour permettre une prise en main rapide et accompagnée. Elles vont d’une simple reproduction de la démonstration sur laquelle est basée notre bibliothèque, au code complet de la solution dont vous avez vu un extrait au début de cet article. On retrouve ci-dessous le résultat de l’exécution de l’exemple “NetworkDemo.ino”
6. Création de la ville
Maintenant que nous pouvons facilement faire bouger nos Dobots, passons à la création de notre ville. Pour ce faire, il nous faut dessiner un plan aux proportions suffisamment impressionnantes pour l’aspect visuel, tout en restant dans la portée des robots. Il faut également faire attention à ce que les structures dans la ville ne soient pas trop proches les unes des autres pour s’assurer que l’ouverture de la pince ne démolisse pas des bâtiments adjacents.
Plusieurs versions ont été nécessaires, mais nous sommes finalement parvenus à un plan satisfaisant nos attentes :
Chaque couleur représente un type de bâtiment :
Maison (rouge) [2×1]
Arbre (vert) [2×1]
Immeuble (jaune) [3×2]
Voiture (bleu) [1×2]
Zone de transition (blanc)
La zone de transition est un emplacement auquel les deux Dobots ont accès, permettant le transfert des blocs d’une zone à l’autre.
En plaçant la tête du Dobot sur le point de calibration (rouge) au centre de l’image, nous pouvons récupérer un point de référence dans le système de coordonnées du Dobot, ce qui permet de convertir les coordonnées en millimètres des bâtiments. Il en est de même pour le Dobot de la partie suivante.
7. Création de la zone de stockage
Nous entrons maintenant dans la partie qui s’est avérée être la plus problématique de toutes pour notre projet : la zone de stockage. Il s’agit de l’endroit où les blocs sont déposés par l’utilisateur, pour ensuite être récupérés par un Dobot et placés sur la zone de transition. C’est maintenant que nous faisons appel à la caméra, dont la capture sera traitée pour essayer de déterminer la position des blocs dans la zone de stockage.
Voici ce à quoi ressemble notre zone de stockage (Théorique | Capturée par la caméra) :
Les quatre carrés noirs étranges autour de la zone de stockage sont appelés des marqueurs Aruco. Ils sont parfois utilisés en vision par ordinateur pour délimiter une zone, déterminer un repère ou traquer un objet mobile.
En utilisant la bibliothèque de traitement d’image OpenCV (Open Computer Vision) disponible sur Python, nous pouvons réaliser les étapes suivantes pour isoler la zone de stockage et détecter les cubes.
1) Trouver le centre des marqueurs Aruco sur l’image avec cv2.aruco.detectMarkers()
2) Transformer l’image de sorte que les centres trouvés soient aux coins de l’image avec cv2.getPerspectiveTransform(centres, coins) et cv2.warpPerspective(). Le résultat est présenté ci-dessous :
3) Appliquer un flou gaussien pour réduire le bruit
4) Appliquer un algorithme de détection des contours avec cv2.Canny() et deux paramètres sélectionnés par l’utilisateur. Nous avons créé une interface qui permet de visualiser l’effet des deux paramètres (En vert sont les contours détectés)
5) Validation des dimensions des contours, calcul des centres et de la couleur des blocs
6) Compilation des résultats dans l’interface de contrôle
Il nous aura fallu beaucoup de temps pour comprendre les fonctions proposées par OpenCV et trouver une combinaison d’algorithmes donnant un résultat fiable. Nous avons cependant découvert de nombreux concepts en lien avec la manipulation d’image qui ont changé notre perception de ce domaine.
8. Interface Utilisateur Graphique (GUI)
Comme nous venons de le voir sur les deux captures précédentes, nous avons ajouté à notre projet des interfaces utilisateur pour faciliter le contrôle depuis un ordinateur. Ces interfaces ont été réalisées avec Tkinter. Chaque bouton sur l’interface de contrôle communique une commande à la carte Arduino via un module Bluetooth que nous avons ajouté. Un exemple simple est le bouton Construire qui permet de lancer / arrêter la procédure de construction de la ville, ou le bouton Reset qui permet de recommencer la procédure de zéro.
Nous avons également ajouté un écran LCD 4×20 connecté à l’Arduino pour afficher l’état actuel de la procédure. Le voici dans deux états différents :
9. Perspectives d’amélioration
Comme nous vous l’avons expliqué au début de cet article, l’une des raisons principales pour laquelle nous avons choisi ce projet est sa capacité à constamment pouvoir être amélioré. Nous avions de nombreuses idées pour compléter le travail que nous avons fait jusqu’à présent, mais le temps nous a manqué pour réaliser certaines d’entre elles.
Nous souhaitions par exemple imprimer une carte électronique pour réduire le nombre de câbles apparents qui dégradent actuellement l’apparence extérieure de notre projet, mais par manque de temps, nous n’avons pas eu l’occasion d’aller au bout de cette idée.
Sans carte électronique et par conséquent sans certitude des dimensions, nous ne pouvions pas prendre le risque d’imprimer une boîte de rangement pour la carte Arduino et les modules qui y sont connectés.
Enfin, une dernière amélioration que nous aurions réellement aimé ajouter est celle laissant l’utilisateur dessiner sa propre ville. Elle correspond au bouton Dessiner sur l’interface de contrôle. Seul le temps pour créer une interface de dessin du plan nous manquait, puisque le code Arduino est déjà adapté pour accueillir ce genre de fonctionnalité.
10. Bilan
Si vous êtes encore là, merci beaucoup d’avoir pris le temps de lire cet article !
Ce projet a été pour nous une expérience inoubliable. Même si, comme nous venons de le voir, nous n’avons pas eu le temps d’aller au bout de nos perspectives, nous sommes tout de même très heureux du travail accompli lors de ces six derniers mois. Nous n’étions que deux pour réaliser ce projet, et les défis que nous a causé notre ambition ont été de taille. Même si notre technique pour aborder certains problèmes n’était pas parfaite, nous sommes fiers d’avoir accompli ce qui est notre projet aujourd’hui.
Vision par ordinateur, programmation sur Arduino, création d’une bibliothèque, design d’une carte électronique, modélisation 3D. Toutes ces compétences ne pourront que nous être bénéfiques pour le futur, et nous garderons un très bon souvenir de ce travail d’équipe pour surmonter les obstacles rencontrés sur le chemin.
11. Remerciements
Nous remercions évidemment l’ensemble des enseignants qui ont pu nous aider durant ce projet, et plus particulièrement :
Mr. BOIMOND Jean-Louis, notre référent de projet
Mr. LAGRANGE Sébastien
Mr. VERRON Sylvain
Ce projet a demandé beaucoup de rigueur, il aurait donc été impossible sans leur aide précieuse.
Et si l’on facilitait la vie des gens en un clic ?
C’est l’objectif de notre projet : Proposer un site internet à une ludo-crèche qui leur permettrait de gérer toutes leurs demandes d’emprunt de jeux, en un clic. Il nous faut pour cela :
Apprendre à coder en PHP.
Trouver un moyen d’attribuer un ensemble de jeu à un ensemble de personnes de manière automatique.
Gérer tout ce qui est relatif à un site internet : mise en ligne, hébergement…
Objectif : Un site web qui satisfait les utilisateurs comme les responsables et qui fait gagner du temps a tout le monde
Première étape : Apprendre à coder
C’est parti pour apprendre à coder. Entre les bases de HTML et CSS nécessaires pour comprendre PHP, la syntaxe de PHP, la structure du code… On y a passé plus d’une vingtaine d’heures.
En plus d’apprendre à coder en PHP pour réaliser l’affichage et le fonctionnement du site, on devait aussi utiliser MySQL qui est une base de données avec son propre langage ainsi qu’un solveur : un langage de programmation visant à résoudre des problèmes mathématiques.
L’apparence d’une table d’une base de donnée MySQL
Commençons la programmation du site
La phase d’apprentissage étant terminée, nous avons pu commencer à réaliser une première version du site, un peu vide puisque nous avions très peu d’informations sur le contenu et l’aspect qu’il devait avoir. C’est là qu’on se heurte à nos premiers problèmes :
Le travail en coopération : étant donné le temps que l’on avait pour créer ce site, il y allait avoir beaucoup de code réparti sur beaucoup de pages. Au bout d’un moment, on s’est rendu compte que l’on n’avait pas tous la même manière de coder et la structure du code s’est vite dégradée. Il a fallu imposer des règles strictes pour s’assurer qu’on puisse garder l’ensemble des pages de codes claires tout au long du projet.
La fonction d’attribution : sans rentrer dans les détails, pour attribuer les jeux aux emprunteurs, il faut représenter cette tâche par un problème mathématique que l’on va ensuite résoudre grâce à un solveur. Ce solveur nommé GLPK sert à résoudre des programmes linéaires, cependant, il faut apprendre à coder dans ce langage. Le problème étant que quasiment personne n’utilise GLPK, et cela se ressent dans l’absence de documentation sur ce langage. Notre seule manière d’apprendre était d’utiliser un simple PDF de quelques pages sur GLPK et de faire des essais et des erreurs.
Une quantité de travail inattendue
Ce site devait simplement permettre à des utilisateurs de faire des demandes de prêt de certains jeux et permettre aux responsables du site d’attribuer ces jeux automatiquement, mais il y avait bien plus de travail derrière que ce que l’on imaginait.
Voici une liste non exhaustive de ce qu’il faut faire pour qu’un site comme celui-là fonctionne :
Faire un système de connexion/inscription.
Créer différentes interfaces en fonction de qui est connecté (Simple utilisateur ou responsable).
Stocker les données des utilisateurs et des responsables à l’aide d’une base de données.
Gérer les flux d’information entre les pages.
Lier plusieurs langages, PHP pour l’affichage et la gestion du site, GLPK pour le système d’attribution des jeux et MySQL pour le stockage de données.
Créer un ensemble de fonctionnalités qui font le contenu du site (Faire et supprimer des vœux, voir les jeux disponibles et demandés, voir les informations de son compte…)
Le résultat final
Malgré les quelques problèmes mentionnés plus tôt et les nombreuses heures passées à débugger le site, nous sommes finalement parvenus à la version définitive qui répondait aux attentes du client. Ce site permet aux adhérents de la ludo-crèche de demander d’emprunter des jeux, de consulter toutes les informations dont ils ont besoin (infos personnelles, infos sur les jeux, consulter leurs vœux et leurs jeux attribués…). Ce site est surtout utile aux responsables de la ludo-crèche, car ils peuvent désormais obtenir directement une liste à jour des demandes d’emprunt, attribuer les jeux d’une manière presque optimale, bien meilleure que ce qu’ils auraient fait à la main et surtout bien plus rapidement. En plus du projet initial, nos clients nous ont demandé des fonctionnalités supplémentaires afin que ce site seul permette la gestion totale des prêts de jeu. Ainsi il leur permet aussi de gérer leurs stocks et de savoir où sont les jeux plus simplement. Notre site leur offre une archive de toutes les attributions précédentes, une liste de leurs membres et la possibilité d’avoir différents modes d’emprunts.
Conclusion
Ce projet était une expérience vraiment différente du genre de travaux que l’on a fait jusqu’à maintenant dans nos études. Ce qui nous a motivé à nous investir autant, c’est le fait de savoir qu’il serait vraiment utile et qu’il aiderait des personnes au quotidien. Ce projet a été l’occasion de se mettre dans la peau d’un professionnel et de concevoir un produit pour un client, d’autant plus que même après la date limite de réalisation du projet, nous accompagnerons nos clients pour s’assurer que tout fonctionne correctement. C’était aussi un bon entraînement à la programmation pour deux d’entre nous qui allons poursuivre nos études dans le domaine de l’informatique.
Bonjour à tous, ce blog a pour but de vous présenter l’avancement de notre projet réalisé durant notre 4ème semestre du cycle préparatoire Peip à Polytech Angers. Nous sommes 4 acteurs sur ce projet, 3 étudiants ainsi qu’un professeur référent. L’objectif de ce projet est, comme son nom l’indique, de réaliser un automate animé. Celui-ci aura pour but de réaliser un mouvement naturel automatisé, et sans assistance extérieure.
1 – Le choix de notre automate
Tout d’abord, il a fallu choisir l’animal, l’objet à animer. L’idée d’un animal quadrupède nous est directement venue à l’esprit. N’étant pas le premier groupe à travailler sur ce projet, nous avons eu quelques sources d’inspiration. Je vous invite à aller regarder leur blog ainsi que leur compte-rendu, car certaines idées y sont reprises tandis que certaines erreurs y ont aussi été comprises. Chaque groupe s’est inspiré de l’ancien pour faire évoluer la qualité de ce projet. Pour revenir sur le choix de notre automate, Disney a aussi été une source d’inspiration étant donné que l’idée de ce projet vient de leur vidéo sur le sujet.
Nous avons donc eu l’idée de partir vers le chien ou le chat, mais cela nous a paru trop classique. Nous avons donc pensé au dragon. Il a exactement les mêmes articulations que le chat. Cette démarche s’en rapproche donc énormément. Il sera donc facile de pouvoir modéliser son mouvement.
2 – Modélisation du premier prototype
Pour commencer, nous avons dû modéliser le premier prototype de notre automate. Cela était une des parties les plus complexes de ce projet. Nous avons donc commencé par modéliser la patte arrière de notre automate, en s’inspirant d’un prototype de Disney.
Le plus difficile a été de trouver les bonnes dimensions de chaque bielle ainsi que le placement des différentes roues pour trouver le mouvement de la patte voulue.
3 – Découpe et Assemblage du 1er prototype
Nous sommes ensuite passés à nos premiers tests, pour imprimer notre prototype nous avons utilisé la découpeuse laser présente au FABLAB. Pour l’utiliser, nous avons mis sur plan toutes nos pièces puis ajuster les bons paramètres de matériaux.
4 – Modélisation fonctionnelle de l’automate
Notre premier prototype étant fonctionnel, nous sommes passés à la modélisation de notre automate entier sur CAO sans nous soucier de son apparence.
5 – Amélioration du design
Après avoir modélisé notre automate fonctionnel, nous avons essayé de le rendre plus esthétique et de donner une forme plus réaliste aux différentes pièces.
Avant / Après :
Nous avons également testé différentes manières pour graver des écailles sur nos pattes.
6 – Modélisation et ajout des ailes
Pour ajouter un côté plus réaliste, l’ajout d’ailes au dragon était nécessaire. Pour ce faire, nous avons directement imaginé le mécanisme pouvant animer ses ailes pour le biais d’une roue engendrant une bielle qui elle-même met en mouvement l’aile. L’aile est quant à elle fixée par un support au corps de l’automate. Cette fixation permet de laisser pivoter l’aile sur l’axe voulu.
Nous avons ensuite donné un design à l’aile pour la rendre plus jolie.
7 – Découpage et gravure de l’entièreté des pièces
La prochaine étape pour nous était l’impression et la gravure de toutes nos pièces qui nous prit tout de même plusieurs heures.
8 – Assemblage final de l’automate
La dernière partie de ce projet aura été l’assemblage de l’automate en entier. Il nous a d’abord fallu assembler les 6 parties constituant le corps.
Pour ensuite y ajouter les pâtes et les ailes. Entre temps, nous avons dû assembler l’ensemble des pattes avant et arrière avant de les lier au corps et aux engrenages. La partie la plus dure de l’assemblage a été de lier le mouvement des engrenages avec le mouvement des roues comme vous pouvez le voir sur la photo ci-dessous.
Par la suite, il a fallu rajouter le mécanisme des ailes ainsi que les ailes elles-mêmes. L’assemblage des ailes était la partie la plus simple, elle est la seule à ne pas nous avoir causé de soucis.
Enfin, pour finir, il suffit de coller la tête sur le corps de notre dragon pour qu’il en soit vraiment un !
9 – Conclusion
Pour conclure, ce projet a été très intéressant et complet pour nous, en découvrant l’avancement de celui-ci, de sa création à sa réalisation. Il nous a permis d’utiliser une multitude de technologies de la CAO au simple tournevis en passant par la découpeuse laser. Malheureusement, nous n’avons pas réussi à le motoriser comme voulu au départ. Cela est dû au matériau choisi pour le corps de l’automate. Le bois utilisé étant trop souple, il ne nous a pas permis de fixer suffisamment la roue des pattes à leur engrenage, résultat de pattes non entraînées par le mouvement des engrenages. Cependant, nous sommes quand même fiers d’avoir pu créer un automate fonctionnel même si très fragile.
Le projet « Art Cinétique » nous a permis de penser et réaliser plusieurs œuvres dynamiques en Lego. Pour chaque création, nous avons effectué des recherches en amont afin de rendre possible l’animation du mobile à l’aide du mécanisme adapté. Pour permettre cette mise en mouvement, nous avions à notre disposition différents types de moteurs Lego permettant de faire varier rotation et puissance. Nous avons aussi créé un boitier de type « brique intelligente » sur le modèle de celles créées par Lego en programmant différentes fonctionnalités comme le sens de rotation.
Nous allons donc vous présentez les principaux axes de notre projets…
Reproduction d’une structure
Création d’un boîtier d’alimentation-commande
Réflexion sur la motorisation des structures
Création de structures différemment motorisées
Reproduction d’une structure
Nous avons tenté de mettre en mouvement un petit mobile pour comprendre à quel types de problématiques nous aurions à faire face. Cela nous a permis de nous faire une idée de la puissance dont nous aurions besoin et des différentes fonctionnalités qui pourraient être intéressantes à intégrer aux œuvres finales. Ainsi, nous avons décidé de faire un avion sur lequel se trouvait un personnage et qui tournait autour d’un arbre. Nous avons utilisé une vis sans fin reliée à une roue afin de changer l’orientation initiale de la rotation du moteur. Une fois la base permettant à la structure de tenir droite créée, nous avons lancé le moteur pour s’assurer que le mouvement correspondait bien à nos attentes. La réalisation de cette première structure nous a donné une idée des différentes parties à intégrer aux prochaines créations : une tige permettant d’assembler le moteur, des engrenages et des vis pour changer les caractéristiques de la rotation et enfin la figure que nous souhaitons mettre en mouvement.
Première structure ” l’Avion”
Création d’un boîtier d’alimentation-commandé
Cette partie du projet fût sans doute la partie qui se rapproche le plus du milieu de l’ingénierie, car nous avons dû créer un boitier qui permet d’alimenter un moteur en 9 volts ainsi que de changer sa direction et sa vitesse. Pour ce faire nous étions épaulé par M. Verron, qui nous a lancé sur plusieurs pistes. L’une de ces pistes a été notre point de départ ; l’obtention d’une plaque Arduino Uno qui permet de contrôler des composants électroniques. Nous avons donc ensuite acheté et trouvé les autres pièces nécessaires (potentiomètre, bouton, câble, boitier 6 piles) et nous avons pu commencer le montage. Avant de tester notre circuit électronique et d’estimer sa taille pour de construire la structure du boitier, nous avons utilisé une breadboard où nous avons pu tester tous ces branchements ainsi que notre code. Cette plaque Arduino permet de contrôler des composants électroniques mais pour ce faire il faut bien sûr écrire un code qui lui dise quoi faire !
Montage avec bread boardArduino Uno
Lorsque nous avons fini tous ces tests nous nous sommes lancés dans la création de la structure du boitier, pour ce faire nous avons décidé de modéliser notre pièce sur SolidWorks, un logiciel de CAO. Une fois les pièces définies sur ce logiciel nous les avons imprimées grâce à une imprimante 3D. Cela à pris environ 15 h !
Imprimante 3DLogiciel SolidWorks
A ce stade il ne nous restait plus qu’une étape, mettre le circuit électronique dans le boitier vide et assembler tout le circuit de manière définitive en soudant fils et composants avec de l’étain. Cette méthode de soudage à l’étain est très pratique et très répandue, elle nous a permis de souder tout nos composants ente eux par l’intérim de fils conducteurs.
Soudage à l’étainIntérieur du boitier
Le boitier est donc maintenant fini et nous allons pouvoir l’utiliser pour alimenter le moteur qui animera nos figures.
Boitier terminé
Réflexion sur la motorisation des structures
En ce qui concerne la motorisation, nous avons réaliser différentes structures animées par un moteur électrique, qui s’est révélé être le plus pratique en raison de sa rotation régulière et constante. De plus, ce type de moteur offre une puissance suffisante mais aussi variable, grâce au boitier que nous avons réalisé, pour faire fonctionner une grande diversité de figures.
En ce qui concerne un nouveau mode de motorisation, nous avons trouvé la solution du moteur à friction. Ce moteur est alimenté manuellement en compressant un ressort pour le charger. Cette action comprime donc un ressort qui, une fois relâché, produit un mouvement de rotation. Ce mouvement généré par ce moteur est similaire à celui du moteur électrique, mais il est beaucoup moins pratique en raison de son manque de puissance. De plus ce mouvement n’est pas fluide, au contraire il est explosif et rapide car le ressort se décompresse rapidement et brusquement.
Ensuite, nous avons envisagé une troisième solution de motorisation, mais après plusieurs recherches infructueuses, nous avons conclu que la solution résidait dans l’énergie manuelle. Nous avons donc simplement ajouté une poignée à la figure “Hoberman Mechanism 2” que nous n’arrivions pas à faire tourner avec un moteur. Nous avons adapté la figure en lui ajoutant une poignée pour la tenir à la main et la faire tourner manuellement.
Figure “Hoberman Mechanism 2”
Création de structures différemment motorisées
Nous avons abouti à trois structures différemment motorisées.
La première figure est “Slithy Toves“. Elle consiste en plusieurs branches qui se tiennent sur une base munie d’engrenages. Cette figure est assez impressionnante car les branches s’entrecroisent constamment mais ne se bloquent jamais dans leur rotation. Pour mettre en mouvement cette structure, nous avons utilisé le “Servomoteur moyen EV3 LEGO Mindstorm” qui est un moteur avec une puissance moyenne permettant de faire une rotation de manière simple.
Figure “Slithy Toves”
La seconde figure réalisée est le “Regular Isocahedron“. Nous avons choisi de faire une figure de plus grande ampleur afin d’utiliser le “Grand servomoteur EV3 LEGO Mindstorms” qui fournit une puissance plus importante et permet donc de soutenir une plus grosse structure. Cette figure est composée de deux éléments : la base et la balle. La base nous a demandé beaucoup de réflexion car il fallait mettre en mouvement six roues à l’aide d’engrenages et faire en sorte que la balle puisse tenir dessus sans s’échapper. Une fois cette étape et la balle finie, nous avons pu mettre en mouvement le moteur ce qui a permit à la balle de tourner sur elle-même tout en restant en place sur la base.
Figure “Regular Isocahedron”
Enfin, la dernière figure que nous avons réalisé est le “Hoberman Mechanism 2“. Après avoir tenté de la mettre en mouvement avec différents moteurs, nous avons décidé d’utiliser l’énergie manuelle. Ainsi, nous avons placé une manivelle en dessous pour permettre aux engrenages de faire s’ouvrir et se fermer la rosasse.
Figure “Hoberman Mechanism 2“
Le +
Un atelier a été organisé pour les élèves de maternelle. Ils ont pu expérimenter avec nos différents moyens de motorisation, apprendre en s’amusant avec les roues et voir les structures que nous avions réalisées. Notre projet ayant pour finalité une création artistique et donc voué au partage, cela était plaisant et plein de sens de leur présenter. Le côté ludique de ce projet était un lien idéal entre une entreprise de futurs ingénieurs et un regard d’enfant !
Bilan
Ce projet a été pour nous une occasion d’exprimer notre créativité tout en apprenant de nouveaux savoirs. Notamment de mieux comprendre les enjeux derrière l’animation de structures et les problèmes qui en découlent (masse, frottement, contrainte physique…). Il nous a aussi permis d’apprendre à travailler en groupe et de nous organiser en nous répartissant les tâches en fonction des envies et des qualités des personnes. Pour conclure, ce projet riche en créativité nous a grandi intellectuellement et humainement.
Nous avons réalisé une vidéo afin que vous puissiez voir nos figures en mouvement :
Merci d’avoir lu cet article ! Nous espérons que votre projet vous a plu !
L’objectif de ce projet était de réaliser une fausse bombe à désamorcer, un genre d’escape game, c’est à dire qu’une suite d’étapes doit être réalisée dans un certain ordre avec deux erreurs maximum pour finir le jeu. Pour cela, nous étions 3, avions 100 heures et une totale liberté des énigmes.
Mais pourquoi avons nous choisi ce projet?
Tout d’abord, nous recherchions un projet qui nous permettait de créer quelque chose de concret. Ensuite nous avions un attrait particulier pour la programmation et nous aimions manipuler les composants électroniques. C’est pour cette raison que lorsqu’on nous a proposé le projet de bombe factice, nous avons tout de suite adhéré à l’idée. Mais pour concrétiser notre projet, il nous a fallu passer par différentes étapes et surmonter quelques difficultés.
Intérieur de la version finale du projet
Brainstorming
La première étape était le brainstorming. Durant les trois premières heures, nous avons d’abord discuté et débattu en groupe pour nous mettre d’accord sur la trame à suivre pour désamorcer la bombe ainsi que sur son apparence.
Trame à suivre pour désamorcer la bombe
Recherche et commande
Ensuite, après cette étape de mise en commun des idées, nous avons créé une liste avec tous les composants nécessaires à la décoration ainsi qu’au bon fonctionnement de la bombe. On a donc commencé nos recherches pour trouver les composants. On s’est vite rendu compte qu’une modélisation 3D était primordiale. En effet, il existe des composants ayant la même fonction mais avec des tailles bien différentes. Or nous avions comme contrainte la taille de notre mallette. Donc, il fallait trouver les composants appropriés pour pouvoir garder une mallette de taille abordable. Une fois cette étape finie, nous avons envoyé notre liste à notre responsable de projet (Mr. Sébastien Lagrange). Il s’est occupé d’effectuer la commande. Après la réception des produits, nous devions entamer notre partie préférée : la manipulation.
Plan 3D de la mallette
Programmation de chaque élément
Nous avons alors commencé à créer un programme pour réaliser la trame de désamorçage de la bombe. Pour cela, il nous a fallu prendre chaque élément indépendamment pour comprendre comment il fonctionne et ainsi pouvoir mieux le contrôler après. Durant cette étape, nous avons rencontré plusieurs défis à relever car nous avions seulement de petites bases sur le langage que nous utilisions (Arduino). Mais, à chaque fois grâce à nos recherches et à l’aide de nos professeurs, nous avons pu résoudre nos problèmes et finaliser ce code.
Exemple de code, ici, une partie du code du jeu du Simon
Création de l’intérieur de la mallette
Pour la création de l’intérieur de la mallette, nous avons utilisé plusieurs machines et plusieurs procédés de fabrication (par exemple l’impression 3D , le découpage par laser et l’impression de stickers). Le but premier était de maintenir les composants et de rendre l’intérieur de la mallette esthétique pour qu’ elle ressemble à une bombe à désamorcer. Nous avons donc par exemple rajouté une fiole contenant un liquide fluorescent. Ensuite, nous avons découpé une tablette pour fixer tous les composants et cacher la partie électronique. Nous avons réalisé le montage , et nous avons fait les soudures sur la carte électronique. Nous avons bien sûr aussi peint.
Impression d’un des bouchons pour la gourdeDécoupe laser de la tablette
Création de la carte électronique
La création d’une carte électronique était obligatoire pour éviter de garder les breadboards (plaquettes permettant de connecter facilement des fils), qui sont uniquement destinés aux prototypes. Nous avons donc dessiné le schéma d’une carte électronique. Cependant, des camarades sont venus nous prévenir que nous ne respections pas des règles obligatoires (la taille des pistes par exemple) pour que la machine puisse la découper. Une nouvelle version a donc dû être faite. Or cette fois ci, c’est un professeur qui nous a indiqué encore d’autres problèmes, comme des pistes trop proches. La troisième et dernière version fut la bonne. Après un bon moment de soudage des connecteurs, nous avons pu passer à l’assemblage.
Schéma de carte électroniqueCarte électronique qui vient de sortir de la machine
Assemblage
L’assemblage a été une étape plus longue que prévue. En effet, nous nous imaginions que nous allions simplement mettre tous les modules d’épreuve dans la mallette et que cela allait fonctionner au premier essai. En réalité, nous avons eu un certain nombre de problèmes, comme les boutons lumineux qui ne fonctionnaient plus, l’écran qui n’affichait plus rien et a donc dû être changé ou encore des fils qui s’arrachaient lors de la fermeture de la mallette. Ces derniers problèmes ont pu être résolus, rendant ainsi notre projet fonctionnel.
Dernières soudures avant de tout faire rentrer dans la mallette
Bilan
Nous sommes tous très fiers du travail que nous avons réalisé ainsi que du produit fini. En effet, pendant toute la durée du projet, nous nous sommes bien entendus et nous avons plutôt bien réparti les tâches entre chaque membre du groupe. De plus, le produit final est esthétique, aéré et agréable à manipuler. Il respecte le cahier des charges que nous nous sommes fixé au début du projet, à l’exception de l’énigme qui devait permettre d’ouvrir la mallette. Nous avons décidé de ne pas la mettre en place en cours de création car cela ne nous paraissait plus intéressant. En effet, cela nous aurait obligé à afficher quelque chose au-dessus de la mallette et nous avons pensé que cela serait plus judicieux de laisser la mallette comme nous l’avions reçue.
Nous sommes 4 étudiants en deuxième année de prépa intégrée à Polytech Angers : Benoit, Julius, Liam et Tristan. Nous nous sommes lancés dans un projet qui consistait à concevoir un trieur de Lego. Une passion commune pour les LEGO nous liait, ce qui s’est avéré être un atout considérable pour nous motiver tout au long de la réalisation de ce trieur. Nous étions ravis de pouvoir combiner nos compétences, et notre créativité afin de concevoir un trieur de Lego qui pourrait être pratique pour les étudiants du Fablab.
Notre équipe avec respectivement de gauche à droite : Liam, Tristan, Benoît et Julius
De plus, notre attrait pour l’informatique et la pour la mécanique était un plus pour ce projet. Cela nous a permis de nous intéresser pleinement à la programmation et à la conception de ce trieur de lego.
Durant les 100 heures de projets, nous avons découvert le monde de l’électronique, de la mécanique. Puis, nous avons pu faire de la soudure, de la programmation, de la recherche d’information sur différents composants, et de l’approfondissement sur le logiciel Python.
Nous espérons que ce blog vous plaira !
Déroulement du projet
Le projet s’est déroulé en plusieurs étapes pour aboutir à la conception finale de notre trieur de Lego. Durant toutes nos heures de travail, nous nous sommes séparés en 2 groupes distincts : l’un pour la partie conception LEGO et l’autre pour la partie informatique afin de multiplier notre efficacité sur les différentes tâches à effectuer.
Nos premières recherches
Partie conception
Tout d’abord, nous avons découvert un youtubeur américain Daniel West qui a conçu un trieur de LEGO capable de trier une multitude de pièces de LEGO à une vitesse considérable. Cela nous a permis d’avoir une idée générale de ce que l’on pourrait créer.
Voici une petite vidéo de son trieur de Lego :
Tout au long du projet, nous avons donc organisé notre travail en plusieurs étapes :
Compréhension des moteurs EV3 LEGO
Construction du premier et du second convoyeur en LEGO (à plus grande dimension)
Entonnoir pour canaliser les pièces à l’aide de moteurs-vibreurs
Construction du troisième et dernier convoyeur faisant office de tapis de réception
Construction d’une porte ayant pour rôle de diriger les pièces dans une autre direction
Recherche approfondie pour faire tourner le premier et dernier convoyeur avec le même moteur
Ces étapes seront davantage détaillées dans la suite de notre blog.
partie informatique
En premier lieux, nous avons commencé à regarder sur internet s’il existait des projets de détection d’objet en flux vidéo. Nous sommes tombés sur différentes vidéos, mais également sur des blogs de l’ingénieur Australien, Daniel West :
Toutes ces informations nous ont donné de bonnes bases de travail. Elles nous ont permis par exemple de découvrir OpenCV, une bibliothèque libre spécialisée dans le traitement d’images en temps réel. Ainsi, nous avons organisé nos travaux de la manière suivante :
Phase de recherche sur les Raspberry,
Installation de l’OS de Raspberry sur une carte SD,
Mise en route de la caméra pi et installation d’OpenCV,
Création d’un programme de détection d’un visage,
Pilotage automatique des convoyeurs via le Raspberry
Création d’un programme capable de détecter des objets et des visages,
Recherche pour la création d’une base de données spécifique à une pièce de lego,
Mise en marche du programme de détection d’objets et des convoyeurs en simultanée.
Prototype d’un convoyeur
Comme vous avez pu le voir dans les différentes étapes de notre projet en partie conception, nous avons voulu comprendre et observer le potentiel d’un moteur EV3. Ainsi nous avons fabriquer un prototype d’un convoyeur à taille réduite.
Ce prototype fonctionnait à l’aide d’un bloc EV3 à partir duquel nous avons fait différents tests pour évaluer une vitesse qui pourrait être adapté à nos futurs convoyeurs.
Cependant, nous avons observé que la construction d’un convoyeur plus grand et plus large était plus compliquée à mettre en place puisque cela nécessitait des axes plus grands et plus solides afin que la structure tourne convenablement.
Conception de notre système avec les 3 convoyeurs
Nous avions maintenant une idée précise sur la conception d’un convoyeur en Lego et pouvions enfin commencer notre trieur. Nous avions besoin d’un système composé de 3 convoyeurs pour assurer l’acheminement des pièces et maîtriser leur flux. En effet, la maîtrise de flux de pièces était essentiel pour que la caméra installée sur le 3ème convoyeur analyse les pièces de façon efficace et sans erreurs.
L’idée de base était la suivante : le premier convoyeur devait être plus large pour accueillir notre bac de pièces à trier, le second devait avoir un mouvement saccadé pour entamer la régulation du flux et le troisième devait être très lent pour laisser le temps à notre caméra d’analyser les pièces une par une.
Vue de notre trieur de lego avec le troisième convoyeur en premier plan
Création de programmes de détections d’objets et de pilotages
Dès lors que le Raspberry et la caméra PI étaient en place, nous pouvions commencer la création de nos programmes à la fois pour piloter les convoyeurs, mais aussi pour détecter une pièce de lego parmi d’autres. Pour ce faire, nous avons décidé d’utiliser python car il existe de beaucoup de documentation sur Internet.
Après cette première étape, nous sommes concentrés sur les convoyeurs. À l’aide, d’une carte d’extension HAT pour moteur et de fils de connexion, nous avons connecté les moteurs au Raspberry. Et grâce à un programme, nous étions désormais capables de contrôler les moteurs Lego (vitesse, sens…) :
Carte d’extension HAT pour moteur à courant continu
Ensuite, nous avons travaillé sur un programme capable de détecter une cinquantaine d’objets (table, chaise, porte, fenêtre…), mais aussi des visages via le flux vidéo de la caméra pi. Il fonctionnait grâce à la base de données d’OpenCV, et ses milliers de photos d’objets qu’elle contient :
Programme qui nous permet de reconnaître une personne à l’aide d’une base de donnée précédemment enregistrée
Cependant, dans la base de données d’OpenCV, il n’y pas les pièces de LEGO que l’on souhaiterait détecter. Il faudrait donc arriver à créer notre propre base de données. Mais, pour l’heure, nous n’avons pas réussi.
Ajout d’un entonnoir pour régler le flux des pièces
Après de nombreux tests de vitesse et de disposition des tapis nous avions réguler considérablement notre flux de pièces mais les pièces étaient encore trop proches les unes les autres pour que la caméra les analyse efficacement et il arrivait que certaines pièces finissent empilées entres elles.
Nous avons donc décidé d’ajouter un entonnoir vibrant entre les deux premiers convoyeurs pour accentuer la régulation.
Concernant cet entonnoir, nous avions initialement envisagé de le construire en bois. Cependant, nous avons constaté que les vibrations ne se propageaient pas efficacement dans ce matériau, entravant ainsi le glissement des Lego jusqu’au dernier tapis.
Nous l’avons donc fabriqué en pièces de LEGO.
Nous avons fixé des vibreurs sur cet entonnoir et les avons reliés par des fils de connexion sur une plaque d’essai électronique. Le branchement a été effectué en dérivation et les fils de connexion ont été reliés au moteur vibreur par une simple soudure.
Notre entonnoir et ses vibreurs ainsi que la breadboard pour gérer la connectique
Conception d’une porte sur le 3e convoyeur
Nous avons également conçu une porte sur le troisième convoyeur qui a pour objectif de s’ouvrir lorsque les pièces non conformes sont détectées par la caméra HD. Celle-ci fonctionne à l’aide d’un moteur LEGO comme vous pouvez le voir ci-dessous.
Vue de dessus de notre porte et de son moteur
Comment faire tourner 2 convoyeurs de vitesse différente sur le même moteur LEGO?
Ce problème que nous avons rencontré était complexe à résoudre. En effet, nous étions limités au niveau du nombre de ports sur le Raspberry PI. Il nous manquait un port pour le dernier moteur du troisième convoyeur qui devait avoir une vitesse plus lente que le premier. Nous avons donc pensé à créer deux chaînes de transmission distincte et en utilisant un unique moteur pour le premier tapis et pour le dernier.
Ce processus était très délicat, car la transmission exigeait beaucoup d’efforts notamment au niveau des axes. Ainsi, après de multiples séances, de constructions et de déconstructions, cette tentative de solution au problème était un simple échec.
Premier essai de transpmission de puissance entre le premier et le dernier convoyeur
Nous avons donc, tout simplement branché sur le même port du Raspberry PI, le premier et le dernier moteur LEGO associé à leurs convoyeurs respectifs (c’est à dire le premier et le troisième). Par la même occasion, nous avons rajouter un réducteur sur le dernier convoyeur afin de réduire sa vitesse. Ainsi, la contrainte de vitesse était respectée.
Réducteur installé entre le moteur et le troisième convoyeur
Bilan de notre projet
Voici notre version finale de notre trieur de lego (nous n’avons malheureusement pas pu faire fonctionner les vibreurs au moment de la vidéo 😢)
Nous avons pris beaucoup de plaisir sur ce projet. Nous avons amélioré grandement nos compétences dans les domaines de la programmation, de l’électronique et de la gestion de projet. Cependant, nous sommes à la fois déçus de ne pas avoir abouti le projet mais ravi de transmettre celui-ci aux futurs deuxième de l’année prochaine. En effet, nous espérions détecter les différentes pièces Lego du fablab à l’aide de la caméra pi. Nous remercions Sylvain Verron pour sa bienveillance et son encadrement.
Nous espérons que ce blog vous aura plu. On vous remercie de l’avoir lu. 😉
Bonjour nous sommes Ewan BUDOR et Antoine HOMMETTE deux étudiants en deuxième année à Polytech Angers. Et aujourd’hui nous allons vous présenter Le projet Double Pendule – Balancing Bot.
Notre projet consiste à concevoir et fabriquer la partie mécanique d’un robot basé sur le principe de fonctionnement d’un segway pour maintenir son équilibre. En ajoutant une extension pour en faire un double pendule.
Vidéo de présentation du robot
Intro
Nous avons choisie de diviser notre travail en 6 étapes. Et aujourd’hui nous allons vous les expliquer :
Schéma fonctionnel
Recherche des composants
Choix du design général
Conception des pièces
Fabrication des pièces
Montage du robot
Schéma fonctionnel
La première étape a été de créer un schéma fonctionnel du robot. Nous avons identifié les composants nécessaires pour le fonctionnement du robot. Ensuite, nous avons relié ces composants pour représenter le fonctionnement du robot avec les flux d’informations et d’énergie. Ce schéma a été soigneusement élaboré pour éviter les erreurs et gagner du temps. Nous avons présenté plusieurs versions de ce schéma à M. Mercier, qui nous a donné des conseils pour l’améliorer.
Recherche des composants
La deuxième étape était la recherche des composants nécessaires pour notre robot. Nous avons trouvé la plupart des éléments à Polytech, grâce à M. Mercier qui nous a fourni les composants électroniques essentiels. Étant donné que le niveau en électronique et codage était trop élevé pour nous. Et aussi car nous ne nous occupions pas de la partie programmation du robot.
Ensuite, nous avons recherché les modèles 3D dans des bibliothèques en ligne telles que GrabCAD et Pololu pour planifier les dimensions et l’assemblage des pièces. Cependant, cette étape s’est révélée difficile et a pris beaucoup de temps en raison de la complexité à trouver les modèles 3D appropriés.
Choix du design général
La troisième étape a été de réfléchir à l’esthétique générale que nous souhaitions donner au robot, avec l’objectif qu’il soit attrayant pour le grand public. Nous avons recherché des idées sur Internet en examinant des robots déjà existants, mais nous n’avons pas trouvé ce que nous recherchions. Nous avons donc élargi notre recherche à d’autres supports tels que les films et les jeux vidéo, où l’esthétique est plus importante. Finalement, nous avons trouvé notre principale source d’inspiration dans le jeu Borderland.
Nous avons apporté quelques modifications pour adapter le design aux composants que nous avions. Par exemple, nous avons remplacé le modèle à une roue par un modèle à deux roues et utilisé l’antenne comme second pendule. Ensuite, nous avons simplifié le design avant de commencer la conception assistée par ordinateur (CAO).
Conception des pièces
La quatrième étape est la conception des pièces, nous avons créé chaque pièce en 3D pour relier la conception à la réalité. Nous avons utilisé SOLIDWORKS, un logiciel de CAO, pour créer les pièces en tenant compte des dimensions et des contraintes de fabrication. Nous avons importé les pièces existantes dans un assemblage pour visualiser notre travail.
En partant de la base des pièces existantes, nous avons conceptualisé la structure du robot en utilisant des poutres profilées en aluminium pour soutenir la partie supérieure. Nous avons ajouté des plaques en dibond pour renforcer la structure et fournir de l’espace pour les composants. Nous avons laissé plus d’espace que nécessaire pour permettre d’éventuelles modifications ou ajouts futurs.
Ensuite, nous avons créé les pièces qui constituaient la majeure partie de l’esthétique extérieure du robot. Nous avons utilisé du dibond pour les plaques du carénage et des équerres en plastique imprimées en 3D pour les fixer, en donnant à notre robot la forme d’une pyramide inversée. Nous avons conçu un carénage qui englobe la majorité du robot.
Enfin, nous avons réalisé les finitions. Nous avons créé des supports pour le pendule, avec des roulements à billes pour l’axe de rotation. Nous avons fixé une partie du pendule à l’aide de plaques métalliques et ajouté une centrale à inertie. Nous avons également créé un cache pour l’écran, en veillant à ce que l’accès aux boutons soit facilité. Des supports ont été prévus pour les capteurs à ultrasons, avec des designs différenciés pour l’avant et l’arrière du robot. Nous avons fixé la batterie en bas de la coque avec des attaches en plastique.
Ces étapes de conception nous ont permis de concrétiser notre robot en prenant en compte à la fois l’aspect esthétique et fonctionnel.
Fabrication des pièces
La cinquième étape est la fabrication des pièces du robot, pour cela nous avons utilisé plusieurs machines mises à notre disposition, notamment une machine de découpe CNC pour usiner les plaques en dibond. De plus, nous avons eu recours à des imprimantes 3D afin de créer des pièces plus complexes, telles que les supports de carénage et de pendule. En plus, nous avons utilisé plusieurs outils du fablab tels qu’une perceuse, une scie à métaux, des étaux, des pinces et un étau.
Montage du robot
La dernière étape est le montage du robot. Pour pouvoir monter le robot plus rapidement pendant la création des pièces, nous assemblions le robot. Nous avons commencé par la partie inférieure, en utilisant les pièces du châssis pour former une base solide. Nous avons rencontré quelques différences entre la conception et la réalité, mais nous avons pu apporter rapidement des ajustements. Ensuite, nous avons monté la structure, les premiers composants internes et les carénages, malgré quelques problèmes de conception. Nous avons réussi à assembler toute la partie inférieure du robot.
Nous avons également monté le pendule et son support, en testant différentes pièces jusqu’à trouver un assemblage qui permettait au pendule de se déplacer librement tout en restant aligné.
Enfin, nous avons fixé le pendule sur le sommet du robot et installé les derniers composants tels que le cache d’écran avec la carte et le cache, ainsi que les capteurs à ultrasons.
Nos avis sur le projet.
« Malgré une légère frustration de ne pas pouvoir voir notre robot en fonctionnement pour l’instant, j’ai réellement pris plaisir a effectuer ce projet. Je suis devenu plus autonome et j’ai appris énormément. »
Ewan BudoR
« Ce projet a été une expérience incroyablement enrichissante et stimulante, malgré mes réticences initiales. J’ai développé un réel engouement pour la conception et la réalisation du robot. »
Antoine HOMMETTE
Si cet article vous a plu je vous invite à venir lire notre rapport de projet qui vous permettra d’en apprendre plus sur le projet Double Pendule.
Chaque année, une centaine d’objets sont imprimés par les deux imprimantes 3D présentes dans le FabLab de Polytech Angers, chaque impression génère une quantité importante de rebus qui sera perdue ce qui constitue une perte d’argent non négligeable sur le long terme. C’est comme ça que le projet “Faut que ça file” est né.
Mais d’abord, nous tenons à remercier M. Laurent SAINTIS et M. Adel HADDAD qui ont encadré ce projet. De plus, nous tenons à remercier M. Nizar CHATTI et M. Hassan BOULJROUFI pour les aides apportées concernant la partie électronique.
Le but de ce projet est d’améliorer le système de recyclage de matériau pour impression 3D déjà existant, notre projet fait suite à de nombreux autres projets comme la conception d’une broyeuse et la conception d’un système de bobinage.
Notre rôle à jouer dans ce projet est donc la mise en marche d’un nouvel extrudeur et de pouvoir créer de nouveaux fils qui pourront être utilisés par l’école et ainsi créer des économies.
Notre objectif est donc de concevoir un processus fonctionnel utilisant extrudeur, broyeur et système de bobinage. Voici les différentes problématiques rencontrées.
1- Evaluer les différents extrudeurs du marché pour effectuer un achat.
2- Concevoir un système de refroidissement.
3- Adapter l’automatisme de tirage en fonction du diamètre mesuré, avec le nouvel extrudeur.
4- Effectuer des tests avec les éléments du broyeur.
Le projet commence alors par une phase de recherche.
Nous avons étudié les archives des groupes précédents afin de nous familiariser avec le projet et de comprendre avec davantage de détails les problèmes qu’on allait rencontrer.
Le projet étant vieux de 4 ans, nous avions énormément de documents à lire pour comprendre les tenants et aboutissants du projet et ainsi dresser un cahier des charges pour notre extrudeur. Nous devions également prendre connaissance du montage du groupe précédent afin de nous approprier les différentes problématiques liées au montage telles que l’esthétique, le cable management ou bien le système de refroidissement.
Après avoir dressé le cahier des charges en étudiant les différentes qualités que notre extrudeur devait comporter, nous nous sommes élancés à la recherche d’extrudeurs répondant à notre cahier des charges et nous en avons trouvés quelques-uns :
Nous avons décidé de commander le FelFil Evo Complète Kit afin d’avoir l’ensemble des éléments de l’extrudeur (partie mécanique et électronique).
Quand il est fonctionnel, l’extrudeur peut atteindre des températures aux alentours de 200°C, il est donc important de concevoir un système de refroidissement afin d’éviter une panne due à la chaleur. Le groupe précédent à opté pour un système de refroidissement à eau afin de refroidir l’ensemble mais ce système est très difficile à mettre en place. De ce fait on a décidé de nous orienter vers un système efficace mais simple : un système de refroidissement à air.
On a voulu faire un système très efficace en utilisant le moins de ressources possible c’est pour cela qu’on a décidé de s’inspirer des sèche-cheveux et qu’on a un boîtier de ventilateur en bec de canard.
Finalement après quelques tests, on s’est rendu compte que le ventilateur n’était pas nécessaire car le fil était à température ambiante.
Le système de recyclage dispose d’un système de tirage et d’un système de bobinage, afin de coordonner le système de tirage et le système de bobinage, on utilise deux cartes Arduino reliés entre elles par une autre carte.
Les programmes Arduino faisant fonctionner le système de bobinage et de tirage ont été écrits par le groupe précédent. Cependant leurs programmes n’étaient pas fonctionnels donc nous avons dû apprendre à programmer sur le tas afin de pouvoir faire fonctionner l’entièreté du système de recyclage.
Nous en venons donc avec le programme Arduino suivant :
const int E1 = 3;
const int E2 = 11;
const int M1 = 4;
const int M2 = 12;
void M1_advance(char Speed) ///<Moteur1
{
digitalWrite(M1,LOW);
analogWrite(E1,Speed);
}
void M2_advance(char Speed) ///<Motor2
{
digitalWrite(M2,HIGH);
analogWrite(E2,Speed);
}
void setup() {
for(int i=3;i<9;i++)
pinMode(i,OUTPUT);
for(int i=11;i<13;i++)
pinMode(i,OUTPUT);
}
void loop() {
M1_advance(180); /// Configuration de la vitesse du moteur (max 255)
M2_advance(255); /// Configuration de la vitesse du moteur (max 255)
}
Malgré la difficulté de la tâche, on a apprécié travailler sur projet car c’est avant tout un sujet qui nous intéresse et qui nous permet de toucher à différents domaines tels que la programmation, la thermodynamique ou bien la gestionbudgétaire.
Enfin, avoir pu créer du fil à partir de déchets a pour nous été une réussite à nos yeux et une grande satisfaction.
Le projet se termine alors en faisant en sorte que les câbles soient discrets.
Pour finaliser cet article, voici une vidéo montrant le fonctionnement de l’extrudeur.
vidéo montrant le fonctionnement du projet
Merci à vous d’avoir pris le temps de lire cet article et d’avoir pris connaissance de notre projet !
Quentin HESNAUX / Emilien ROUILLARD / Elyes BEN GHACHEM
Bonjour, nous nous présentons : Anthony De Sa et Antoine Quémerais. Nous sommes deux étudiants en deuxième année de classe préparatoire à Polytech Angers. Cette année, nous avons eu l’occasion de choisir un projet de fin d’études. Étant tous les deux passionnés de mécanique, de sport automobile et d’innovation en général, nous nous sommes dirigés vers celui d’une caisse à savon autonome. L’objectif de ce projet était de créer une caisse à savon sans aucune base existante et de la rendre autonome pour qu’elle puisse participer à une course sans pilote.
Photo de la Firm-1 exposé devant Polyetch
Monsieur Lagrange est le professeur qui nous a encadrés tout au long de notre projet et qui nous a apporté des conseils. Les exigences qu’il attendait sur ce projet étaient :
avoir une caisse à savon compacte et assez légère pour la déplacer et la stocker
avoir la possibilité qu’un humain puisse la conduire
avoir un système automatisé afin que la voiture puisse se diriger et freiner par elle-même
Pour se repérer dans l’espace, Anthony a fait le choix d’un capteur laser aussi appelé capteur lidar. Un capteur lidar permet de savoir à quelle distance se trouve un objet par rapport à ce dernier. De plus, celui-ci est placé sur un servomoteur permettant une vision à 360 degrés. Sur les conseils de monsieur Lagrange, nous avons choisi le capteur lidar le plus adapté à notre utilisation. Les données du capteur lidar devaient être récupérées par un Raspberry (type de micro-ordinateur), qui devait les analyser, puis aurait calculé la meilleure trajectoire à prendre. Une fois la meilleure trajectoire calculée, le Raspberry devait donner les instructions à l’Arduino pour qu’il puisse réorienter la direction ou freiner. Cependant, cette étape a été fortement ralentie, car la livraison du capteur lidar prit plus d’un mois. Il nous était donc impossible d’avancer sur la partie électronique.
Aimant les défis, nous nous sommes rajouté une grosse difficulté : celle d’avoir des suspensions indépendantes sur chaque roue. Nous avons trouvé cette difficulté challengeant et plus amusante dans la réalisation de la caisse à savon.
À partir du moment où nous avions toutes les exigences attendues, nous étions prêts à pouvoir commencer la modélisation.
Nous nous sommes d’abord réunis autour d’une feuille et d’un ordinateur pour concevoir le châssis et la structure globale de la caisse à savon. Nous avons longuement échangé sur les différentes possibilités que l’on pouvait mettre en œuvre, mais aussi adapté notre conception en fonction du matériel mis à notre disposition. Après de longues heures de discussion, nous nous étions mis d’accord sur une idée de conception et une allure globale.
Nous pouvions maintenant passer à la modélisation 3D de cette caisse à savon sur le logiciel SolidWorks. Cette étape était indispensable et essentielle pour la suite de notre projet. La modélisation 3D permettait de voir si tous les mécanismes mis en œuvre fonctionnaient et étaient réalisables. Mais également de constater la taille de la caisse à savon et ses limites de résistance mécanique. Après de nombreux essais, nous avions notre version finale. Cette version a été validée par notre tuteur. Nous étions prêts à passer à la construction du châssis.
modélisation de la Firm-1 sur SolidWorksTest des suspensions sur SolidWorks
La mécanique
Pour la construction du châssis, nous avons récupéré des profilés en aluminium que nous avons assemblés avec des équerres en aluminium. Cela nous permettait de profiter d’une grande légèreté tout en gardant une bonne rigidité et une bonne résistance mécanique.
Pour la direction, le freinage et les suspensions, aucun matériel n’était mis à notre disposition. Nous devions donc nous débrouiller pour les trouver sur des sites marchands partenaires de l’école. Cette étape d’apparence simple était très fastidieuse. Nous n’avions accès qu’à une certaine gamme de produits, ce qui était très handicapant et nous limitait dans la conception. Après de nombreux compromis, nous avons passé notre commande pour la construction du système de suspensions. Nous avions décidé de partir sur un système de suspension en triangulation avec des paliers lisses en bronze comme roulement, des tubes en acier comme structure, et des suspensions de fourches de vélo découpées comme amortisseurs, récupérées dans un vieux local à vélos.
photo des suspensionsphoto de la directionvue d’ensemble du projet sans la carrosserie
Malheureusement pour nous, les délais de livraison étaient assez importants. Nous devions aller chercher certaines pièces sur place dans les magasins et d’autres arrivaient par livraison. Nous étions alors fortement freinés dans notre avancement à raison de plusieurs semaines (3-4 semaines). Nous avions compris que le temps nous était compté et qu’il fallait être très efficace si nous voulions finir dans le temps impartis. Pour optimiser notre temps, nous nous étions alors réparti le travail selon nos points forts respectifs : Anthony devait se charger de la partie électronique et Antoine de la partie mécanique.
L’électronique
Anthony a décidé de contrôler la direction et le freinage à partir de moteurs pas à pas récupérés sur une vieille CNC (machine de découpe numérique). Les moteurs pas à pas ont la particularité de pouvoir se contrôler avec une grande précision et ainsi pouvoir choisir précisément l’angle de rotation de la direction et du freinage. C’était la solution la plus adaptée à notre projet. Chaque moteur est piloté à partir de drivers récupérés également sur la CNC. L’ensemble des drivers est contrôlé par un Arduino qui nous permet de transmettre toutes les instructions aux moteurs. L’Arduino est la solution la plus adaptée, car c’est un microcontrôleur très simple à programmer et à connecter.
Nous pouvions maintenant passer à la modélisation 3D de cette caisse à savon sur le logiciel SolidWorks. Cette étape était indispensable et essentielle pour la suite de notre projet. La modélisation 3D permettait de voir si tous les mécanismes mis en œuvre fonctionnaient et étaient réalisables. Mais également de constater la taille de la caisse à savon et ses limites de résistance mécanique. Après de nombreux essais, nous avions notre version finale. Cette version a été validée par notre tuteur. Nous étions prêts à passer à la construction du châssis.
L’assemblage
Dans le même temps, toutes les pièces du système de suspension étaient arrivées. Pour assembler le tout, il était indispensable de faire de nombreuses soudures, cependant l’établissement n’était pas équipé de ce matériel. Antoine a alors décidé de ramener entièrement la caisse à savon chez lui, dans le but de se faire aider par son père qui avait des connaissances en soudure et possédait l’équipement nécessaire chez lui. Antoine et son Père ont passé les vacances d’avril à assembler, à souder et à construire la caisse à savon. Il serait fastidieux de rentrer dans les détails de chaque soudure et mécanisme créés. Cependant, vous pouvez voir ci-dessous les photos de l’ensemble du travail effectué. Cette partie de la construction a mobilisé beaucoup de temps de travail et nécessité beaucoup de débrouille, car l’approche théorique et la modélisation 3D ne fonctionnaient pas exactement de la même façon dans la réalité. Cela a demandé beaucoup d’adaptation et de patience.
Il a fallu un peu d’ingéniosité pour adapter la partie existante du tracteur tondeuse sur la caisse à savon.
usinage…assemblage…test !
Une fois cette partie mécanique et électronique faite, il s’était écoulé environ 1 mois. Il était temps de fusionner les deux parties. Antoine a ramené la caisse à savon à Angers et Anthony a adapté l’électronique et les moteurs dessus. Plusieurs problèmes ont été rencontrés :
Problème d’accouplement entre le moteur et le volant
Les suspensions de vélo récupérées étaient un peu trop faibles pour la caisse à savon
Le frein était très dur à mettre en œuvre. On ne pouvait pas tirer le câble jusqu’à la pédale de frein, trop de frottement. Il fallait également jumeler les 2 roues avec un système de cardan pour que les 2 roues freinent
Il fallait donc que nous trouvions des solutions à ces problèmes majeurs. Le problème d’accouplement a été rapidement réglé grâce à une pièce achetée, qui permettait de relier le moteur et l’axe du volant. Pour les suspensions, malheureusement nous ne pouvions pas les changer pour en avoir de plus performantes, du fait du manque de temps et de problème de temps de livraison. Pour le système de freinage, nous avons opté pour un système de levier plus simple et plus rapide à mettre en place. Pour jumeler les 2 roues, nous avons acheté des joints de cardans, cependant les délais de livraison restaient importants et il nous restait peu de temps pour finir le projet.
Lors de la livraison du fameux capteur lidar, nous avons été confrontés à un nouveau problème. L’utilisation du capteur lidar était très complexe, voire incompréhensible pour notre niveau de connaissance. Nous avons dû faire appel à notre tuteur, mais également à monsieur Guyonneau, enseignant spécialisé en informatique, pour parvenir à faire fonctionner ce capteur et le comprendre. Malheureusement, la tâche était ardue et longue pour eux également. Face à une telle complexité pour programmer ce capteur, qui dépassait totalement nos compétences, et le temps restant, monsieur Lagrange a trouvé plus raisonnable de supprimer cette partie du projet.
Nous nous sommes alors plus concentrés sur la partie mécanique de la voiture. Pour lui rajouter un aspect esthétique, nous avons commencé à ajouter un plancher et de la carrosserie, mais également des autocollants et un logo.
Logo de la Firm-1
Malheureusement, le temps qui nous était imparti a été rapidement écoulé. Nous sommes à la fin du projet. Voici l’état du projet final :
Le châssis est fini, rigide et fiable
Les 4 suspensions sont opérationnelles
La direction et les frein fonctionnent
Le plancher est fixé
Tous les moteurs et l’électronique ont été intégrés dans la caisse à savon
Malgré tout le travail que nous avons fait, nous n’avons pas pu aller au bout de tous nos objectifs. Les points qui nous restaient à faire étaient :
Intégrer le capteur lidar,
Jumeler les 2 roues avec les cardans qui sont arrivés la veille de la fin du projet
Faire toute la programmation pour rendre la voiture autonome
Malgré le fait que nous n’ayons pas eu le temps d’aboutir pleinement le projet, nous sommes très fiers du travail accompli. Il s’agissait d’un projet ambitieux que nous avons aimé faire et dans lequel nous nous sommes épanouis. Nous avons donné notre maximum pour qu’il voie le jour.
Nous avons pu tester la caisse à savon à plusieurs reprises, et également donner ce privilège à d’autres étudiants. L’expérience de conduite est très satisfaisante et le regard admiratif des professeurs et des élèves à la vue de la caisse à savon nous réjouit énormément. Nous sommes heureux d’avoir pu construire un véhicule qui fait parler de lui et qui partage des émotions. Au-delà d’être une simple caisse à savon, c’est un projet qui nous aura appris beaucoup de choses, et ce dans de nombreux domaines.
Nous espérons que le récit de cette aventure vous donnera également l’envie d’entreprendre des projets encore plus fous et ambitieux que le nôtre. Nous espérons que les futurs étudiants pourront reprendre notre travail et arriver à la concrétisation de notre projet.
Nous tenons à remercier toutes les personnes qui ont permis la réalisation de ce projet. Nous pensons en premier à Boris pour son aide au FabLab, au père d’Antoine pour son investissement dans le projet, à Motoculture Dol Service pour sa contribution, à Monsieur Guyonneau pour son aide en informatique et à Monsieur Lagrange pour son implication dans le projet.