{"id":5556,"date":"2024-06-06T21:56:32","date_gmt":"2024-06-06T20:56:32","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/?p=5556"},"modified":"2024-06-06T21:56:32","modified_gmt":"2024-06-06T20:56:32","slug":"projet-de-trieur-de-lego-2","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/polytech_2A\/2024\/06\/06\/projet-de-trieur-de-lego-2\/","title":{"rendered":"Projet de trieur de Lego"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bonjour \u00e0 tous,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous sommes quatre \u00e9tudiants en deuxi\u00e8me ann\u00e9e de l&#8217;\u00e9cole Polytech Angers. Dans le cadre de notre formation, nous avons r\u00e9aliser un projet, celui de cr\u00e9er un trieur de Lego en Lego. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tous d&#8217;abord, il faut savoir que nous avons tous jouer avec des Lego pendant notre enfance et cela a \u00e9t\u00e9 un r\u00e9el plaisir de pouvoir mettre nos connaissances et notre cr\u00e9ativit\u00e9 en application pour la conception de la partie m\u00e9canique du projet. Nous avons aussi utilis\u00e9 nos comp\u00e9tences et connaissances acquises pendant nos deux ann\u00e9es de classe pr\u00e9paratoire int\u00e9gr\u00e9es pour la partie \u00e9lectronique et programmation. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:25px\"><strong>Organisation de notre travail<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans un premiers temps il nous fallait savoir dans quelle direction aller pour cr\u00e9\u00e9 ce trieur Lego c&#8217;est pourquoi on a d&#8217;abord brainstormer et fait des recherche sur des syst\u00e8mes d\u00e9j\u00e0 existants. On a fini par conclure que le projet pouvait se diviser en deux parties distinctes. La premi\u00e8re est la partie m\u00e9canique du trieur et la deuxi\u00e8me est la partie informatique. On a donc fait le choix de nous diviser pour gagn\u00e9 en efficacit\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:25px\">Objectifs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notre objectif \u00e9tait simple, trier diff\u00e9rentes pi\u00e8ces Lego \u00e0 partir d&#8217;un type de pi\u00e8ces pr\u00e9cis. Pour cela, il nous fallait cr\u00e9er un syst\u00e8me de stockage capable de contenir l&#8217;ensemble de pi\u00e8ce que l&#8217;on voulait trier. Ensuite il fallait que l&#8217;on trouve un moyen de cr\u00e9er un espacement entre les pi\u00e8ce pour pouvoir les traiter une par une. Apr\u00e8s quoi nous devions trouver un moyen de les identifier pour ensuite les trier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:30px\">La partie m\u00e9canique :<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:17px\"><strong>Le r\u00e9servoir&nbsp;:<\/strong> <\/h2>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:37% auto\"><figure class=\"wp-block-media-text__media\"><video controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/VID_20240606191837.mp4\"><\/video><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"font-size:15px\">Pour pouvoir fabriquer un trieur Lego fonctionnel, il nous a fallu commencer par concevoir un \u00e9tage pour le r\u00e9servoir de pi\u00e8ces. Cela permet au trieur d\u2019avoir un afflux constant de pi\u00e8ces et de fonctionner sans interruption. Le volume assez important de ce r\u00e9servoir lui permet de n\u2019\u00eatre approvisionn\u00e9 que de temps en temps. De plus, il tourne par \u00e0-coup gr\u00e2ce \u00e0 un moteur Lego EV3 et peut ainsi r\u00e9guler la quantit\u00e9 de pi\u00e8ces dans le circuit. Il peut facilement \u00eatre d\u00e9monter s\u2019il faut lui le transporter ou le modifier en cas de probl\u00e8me.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:17px\">Le <strong>tapis vibrant :<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:36% auto\"><figure class=\"wp-block-media-text__media\"><video controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/VID_20240606192026.mp4\"><\/video><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"font-size:15px\">Pour l\u2019\u00e9tage du milieu, nous avons r\u00e9cup\u00e9r\u00e9 le tapis vibrant utilis\u00e9 l\u2019an pass\u00e9 car celui-ci pr\u00e9sente plusieurs avantages. Il permet de faire descendre les pi\u00e8ces \u00e0 un rythme r\u00e9gulier tout en les s\u00e9parant s\u2019il jamais elles se chevauchent. Pour permettre \u00e0 ce tapis de vibrer correctement, nous avons fabriqu\u00e9 une roue dent\u00e9e qui tourne rapidement et, \u00e9tant en contact avec la barre de fixation du tapis, cr\u00e9er une vibration dans tout le tapis. Les fortes contraintes appliqu\u00e9es sur la roue nous ont oblig\u00e9s \u00e0 limer la pointe des dents.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:17px\">Le c<strong>onvoyeur :<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:37% auto\"><figure class=\"wp-block-media-text__media\"><video controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/VID20240418120133.mp4\"><\/video><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"has-text-align-left wp-block-paragraph\">Pour le premier \u00e9tage, la solution qui nous est venue directement \u00e0 l\u2019esprit \u00e9tait de construire un convoyeur. Tout d\u2019abord, il permet de facilement s\u00e9parer les pi\u00e8ces gr\u00e2ce \u00e0 des barres positionn\u00e9es de biais. Ces barres permettent aux pi\u00e8ces de s\u2019alignent dans l\u2019axe et d\u2019\u00eatre plus facilement reconnues par la cam\u00e9ra. Le second avantage est qu\u2019il permet de trier simplement les pi\u00e8ces une fois quelles sont reconnues gr\u00e2ce \u00e0 une porte de triage. Il tourne ainsi de fa\u00e7on continue \u00e0 une vitesse \u00e9lev\u00e9e ce qui permet une fois de plus de s\u00e9parer les pi\u00e8ces qui auraient r\u00e9ussi \u00e0 rester coll\u00e9es jusqu\u2019\u00e0 pr\u00e9sent.<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:17px\">La porte de triage :<\/h2>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:36% auto\"><figure class=\"wp-block-media-text__media\"><video controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/VID_20240606192112.mp4\"><\/video><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Nous arrivons maintenant \u00e0 la partie m\u00e9canique qui nous a fait le plus r\u00e9fl\u00e9chir : comment s\u00e9parer les pi\u00e8ces une fois que la Raspberry les a reconnus ? Pour cela, nous avons opt\u00e9 pour une porte de triage. Elle s\u2019ouvre si la pi\u00e8ce correspond \u00e0 la r\u00e9f\u00e9rence demand\u00e9e au lancement du programme ou rester ferm\u00e9e si ce n\u2019est pas le cas. Une fois ouverte, la porte se referme au bout de quelques secondes.<\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Cependant, il arrive de temps en temps que deux pi\u00e8ces arrivent trop proches l\u2019une de l\u2019autre devant la cam\u00e9ra, ce qui entraine une erreur dans le triage. Le programme, reconnaissant une pi\u00e8ce conforme suivie d\u2019une non-conforme, va activer la porte pour la premi\u00e8re et rester passif pour la deuxi\u00e8me ce qui entraine les deux pi\u00e8ces dans le bac de pi\u00e8ces conformes. Heureusement, ce ph\u00e9nom\u00e8ne arrive rarement car les \u00e9tages du dessus quasiment tout le temps \u00e0 les s\u00e9parer. Pour que la porte se referme lorsque la pi\u00e8ce d\u00e9tect\u00e9e \u00e9tait mauvaise, il nous aurait fallu installer un capteur de pr\u00e9sence de pi\u00e8ce juste avant la porte et modifier tout notre programme pour prendre cette information en compte, ce qui n\u2019\u00e9tait pas r\u00e9alisable avec nos moyens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:16px\"><strong>Pour r\u00e9sum\u00e9 son fonctionnement, le trieur se compose de trois \u00e9tages diff\u00e9rents superpos\u00e9s, le rendant ainsi compact et facile \u00e0 d\u00e9placer. L\u2019\u00e9tage du dessus est compos\u00e9 d\u2019un r\u00e9servoir avec un escalator \u00e0 l\u2019int\u00e9rieur. C\u2019est l\u00e0 que l\u2019on d\u00e9poser les Lego \u00e0 trier. Une fois le trieur lanc\u00e9, les pi\u00e8ces vont tomber dans le tapis vibrant de l\u2019\u00e9tage du milieu. Celui-ci va permettre aux pi\u00e8ces de se s\u00e9parer. Enfin, lorsque les pi\u00e8ces arrivent sur le convoyeur du bas, les Lego vont rapidement pass\u00e9es devant la cam\u00e9ra qui va retransmettre l\u2019information \u00e0 la Raspberry Pi. Celle-ci va, \u00e0 partir de sa base de donn\u00e9es, d\u00e9terminer si la pi\u00e8ce est conforme \u00e0 la r\u00e9f\u00e9rence demand\u00e9e. Une fois la pi\u00e8ce identifi\u00e9e, la porte de triage va s\u2019ouvrir ou non si la pi\u00e8ce est bonne ou mauvaise.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:30px\">La partie informatique :<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cette partie a deux objectifs a remplir, le premier est de cr\u00e9er le code fonctionnel pour l&#8217;ensemble du trieur et le second objectif est de programmer l&#8217;IA qui reconnaitra les pi\u00e8ces, permettant ainsi de les trier. Pour ce faire, nous avons \u00e0 notre disposition deux cartes \u00e9lectronique : une Raspberry Pi 4 et une DC &amp; Stepper Motor HAT. La Raspberry est un micro-ordinateur con\u00e7u par la Fondation Raspberry Pi. Elle sera en charge de l&#8217;ex\u00e9cution de nos programme et nous permet d&#8217;avoir une interface gr\u00e2ce \u00e0 l&#8217;\u00e9cran d&#8217;ordinateur connect\u00e9 dessus. La DC &amp; Stepper Motor HAT est une carte d&#8217;extension relier \u00e0 la Raspberry Pi 4. C&#8217;est via cette carte que la Raspberry peut contr\u00f4ler des moteurs Lego EV3 que nous avons utilis\u00e9.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/image-14.png\"><img loading=\"lazy\" decoding=\"async\" width=\"535\" height=\"321\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/image-14.png\" alt=\"\" class=\"wp-image-6611\" style=\"width:377px;height:auto\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2024\/06\/image-14.png 535w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2024\/06\/image-14-300x180.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2024\/06\/image-14-500x300.png 500w\" sizes=\"auto, (max-width: 535px) 100vw, 535px\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" style=\"font-size:17px\">Sch\u00e9ma de la Raspberry Pi 4<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:17px\">Programmation de l&#8217;IA<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour reconnaitre les pi\u00e8ce, nous avons utilis\u00e9 une camera. Notre IA devait donc \u00eatre capable de diff\u00e9rencier les pi\u00e8ces en analysant un flux vid\u00e9o. Pour ce faire, une base de donn\u00e9e d&#8217;environ 300 images de chacune des pi\u00e8ces . Puis, il a fallu entrainer l&#8217;IA pour que notre mod\u00e8le soit exploitable par la Raspberry Pi 4. C&#8217;est dans cette optique l\u00e0 que nous avons utilis\u00e9 un site internet, Teachable Machine, capable de r\u00e9pondre \u00e0 notre demande. Une fois le mod\u00e8le fait on avait plus qu&#8217;a l&#8217;exploiter sur la Raspberry Pi 4 pour que les pi\u00e8ce qui passe devant la camera soit identifier.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/image-16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"301\" height=\"265\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2024\/06\/image-16.png\" alt=\"\" class=\"wp-image-6613\" \/><\/a><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" style=\"font-size:17px\">Carte d&#8217;extension DC &amp; Stepper Motor HAT<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:17px\">Programme Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tout d&#8217;abord nous avons choisit d&#8217;utiliser le langage python car c&#8217;est un langage que l&#8217;on maitrisait d\u00e9j\u00e0 et qui est assez simple d&#8217;utilisation. Nous avions deux objectif \u00e0 remplir pour que notre code fonctionne. Le premier \u00e9tait de pouvoir contr\u00f4ler les moteur \u00e0 notre guise et le second consistait \u00e0 r\u00e9cup\u00e9rer le flux vid\u00e9o de la cam\u00e9ra afin de pouvoir l&#8217;exploiter avec notre IA. Une fois que la pi\u00e8ce est passer, l&#8217;IA active la porte de triage si besoin et le tour est jou\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour conclure, ce projet nous a montr\u00e9 en quoi consiste le travail d\u2019un ing\u00e9nieur. Ce projet \u00e9tait concret, ce qui contraste beaucoup avec les deux ans que nous avons fait en cycle pr\u00e9paratoire. Gr\u00e2ce \u00e0 cela, nous avons appris \u00e0 travailler en \u00e9quipe, \u00e0 \u00eatre plus autonome, \u00e0 r\u00e9soudre des probl\u00e8mes et \u00e0 se r\u00e9partir les t\u00e2ches pour \u00eatre le plus efficace possible. On a chacun pu apprendre des choses, aussi bien en programmation qu\u2019en comp\u00e9tences techniques. C\u2019\u00e9tait un plaisir d\u2019avoir pu particip\u00e9 au projet de trieur Lego et de partag\u00e9 avec vous ce travail, en esp\u00e9rant que cela puisse inspirer des \u00e9tudiants des ann\u00e9es \u00e0 venir dans leur projet \u00e0 eux. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour \u00e0 tous, Nous sommes quatre \u00e9tudiants en deuxi\u00e8me ann\u00e9e de l&#8217;\u00e9cole Polytech Angers. Dans le cadre de notre formation, nous avons r\u00e9aliser un projet, celui de cr\u00e9er un trieur de Lego en Lego. Tous d&#8217;abord, il faut savoir que &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/2024\/06\/06\/projet-de-trieur-de-lego-2\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":108164,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[613],"tags":[],"class_list":["post-5556","post","type-post","status-publish","format-standard","hentry","category-2023-2024"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/5556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/users\/108164"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/comments?post=5556"}],"version-history":[{"count":16,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/5556\/revisions"}],"predecessor-version":[{"id":6615,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/5556\/revisions\/6615"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/media?parent=5556"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/categories?post=5556"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/tags?post=5556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}