{"id":4052,"date":"2023-05-31T17:46:38","date_gmt":"2023-05-31T16:46:38","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/?p=4052"},"modified":"2023-05-31T17:46:38","modified_gmt":"2023-05-31T16:46:38","slug":"robot-solveur-de-rubiks-cube","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/polytech_2A\/2023\/05\/31\/robot-solveur-de-rubiks-cube\/","title":{"rendered":"Robot solveur de Rubik\u2019s Cube"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bonjour \u00e0 toutes et \u00e0 tous,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous sommes Bilal, M\u00e9lissa et R\u00e9mi, 3 \u00e9tudiants en seconde ann\u00e9e de classe pr\u00e9paratoire \u00e0 Polytech Angers. Dans le cadre de notre cursus, nous avons choisi de r\u00e9aliser un <strong>solveur de Rubik&#8217;s Cube<\/strong>. Pour cela, nous \u00e9tions accompagn\u00e9s de notre tuteur M. Lagrange.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s un semestre de projet, voici le r\u00e9sultat final que nous avons obtenu :<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Rubik&#039;s Cube Solver\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/ca8RG-YmusM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Vid\u00e9o de notre projet final<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Pour fabriquer ce solveur, nous nous sommes r\u00e9partis le travail, et nous avons s\u00e9par\u00e9 notre projet en plusieurs parties : <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Capture6-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Capture6-4.png\" alt=\"\" class=\"wp-image-5064\" width=\"398\" height=\"238\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/Capture6-4.png 738w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/Capture6-4-300x180.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/Capture6-4-500x300.png 500w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Etude<\/li>\n\n\n\n<li>Conception CAO<\/li>\n\n\n\n<li>Programmation <\/li>\n\n\n\n<li>Montage<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">L&#8217;<strong>\u00c9tude<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour commencer, nous avons r\u00e9fl\u00e9chi \u00e0 la fa\u00e7on de concevoir le solveur et avons proc\u00e9d\u00e9 \u00e0 des recherches. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous n&#8217;avions pas de contrainte sp\u00e9cifique pour notre projet, le but n&#8217;\u00e9tant pas d&#8217;atteindre des performances de comp\u00e9tition, notamment en termes de vitesse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ainsi, nous avons choisi les fonctionnalit\u00e9s suivantes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>une <strong>interface graphique<\/strong> permettant de donner des instructions au robot.<\/li>\n\n\n\n<li>l&#8217;utilisation de la m\u00e9thode de<strong> r\u00e9solution classique<\/strong> pour le solveur.<\/li>\n\n\n\n<li>la possibilit\u00e9 pour le robot de m\u00e9langer le Rubik&#8217;s Cube tout seul.<\/li>\n\n\n\n<li>le fait de ne pas utiliser de capteur pour conna\u00eetre l\u2019\u00e9tat du cube : celui-ci est entr\u00e9 par l\u2019utilisateur au lancement du programme.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/20230501_162427-1-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/20230501_162427-1-768x1024.jpg\" alt=\"\" class=\"wp-image-4975\" width=\"326\" height=\"437\" \/><\/a><figcaption class=\"wp-element-caption\">Premier Sch\u00e9ma r\u00e9alis\u00e9 du solveur<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Afin de mettre ce cahier des charges en application, nous avons opt\u00e9 pour une structure cubique entourant le<strong> Rubik&#8217;s Cube<\/strong>, avec un moteur pour chaque face.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour cela, nous avons eu besoin de :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MakerBeams (\u00e9querre, profil\u00e9, cube coin)<\/li>\n\n\n\n<li>Un Rubik&#8217;s cube<\/li>\n\n\n\n<li>6 moteurs Dynamixel AX-12A<\/li>\n\n\n\n<li>un starter kit Dynamixel<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons choisi les moteurs <strong>Dynamixel <\/strong>que M. Lagrange nous avait recommand\u00e9 car ils correspondaient \u00e0 nos crit\u00e8res.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>La Conception CAO<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lors de la partie conception, nous avons r\u00e9alis\u00e9 \u00e0 l&#8217;aide de SolidWorks, un logiciel de CAO, les diff\u00e9rentes pi\u00e8ces n\u00e9cessaires pour la structure de notre projet. Cela nous a permis de nous assurer que le <strong>solveur <\/strong>\u00e9tait faisable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cet assemblage contient des pi\u00e8ces de notre cr\u00e9ation imprim\u00e9es en 3D, qui relient les moteurs et le<strong> Rubik&#8217;s Cube<\/strong>. Nous avons donc d\u00fb tester plusieurs prototypes diff\u00e9rents afin de voir lequel fonctionnerait le mieux.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Capture-1-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Capture-1-3.png\" alt=\"\" class=\"wp-image-5056\" width=\"248\" height=\"211\" \/><\/a><figcaption class=\"wp-element-caption\">Assemblage 3D repr\u00e9sentant la pi\u00e8ce reliant le Rubik&#8217;s Cube au moteur<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Assemblage-final-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Assemblage-final-1.png\" alt=\"\" class=\"wp-image-5022\" width=\"281\" height=\"216\" \/><\/a><figcaption class=\"wp-element-caption\">Assemblage final du solveur sur SolidWorks<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/20230524_170124-1-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/20230524_170124-1-edited-scaled.jpg\" alt=\"\" class=\"wp-image-5014\" width=\"472\" height=\"265\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-scaled.jpg 2560w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-300x169.jpg 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-1024x576.jpg 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-768x432.jpg 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-1536x864.jpg 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-2048x1152.jpg 2048w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/20230524_170124-1-edited-500x281.jpg 500w\" sizes=\"auto, (max-width: 472px) 100vw, 472px\" \/><\/a><figcaption class=\"wp-element-caption\">Diff\u00e9rents prototypes des pi\u00e8ces imprim\u00e9es en 3D<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>La Programmation<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Patron-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Patron-1.png\" alt=\"\" class=\"wp-image-5066\" width=\"248\" height=\"338\" \/><\/a><figcaption class=\"wp-element-caption\">Patron du cube<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Pour le programme, nous avons suivi la m\u00e9thode de<strong> r\u00e9solution classique <\/strong>d&#8217;un <strong>Rubik&#8217;s cube <\/strong>car c&#8217;est cette m\u00e9thode que nous connaissons le mieux. Pour ce faire, nous avons r\u00e9alis\u00e9 une simulation du Rubik&#8217;s Cube en <strong>Python <\/strong>\u00e0 l&#8217;aide d&#8217;un patron du cube. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La m\u00e9thode classique r\u00e9sout le cube \u00e9tage par \u00e9tage, nous avons donc divis\u00e9 le programme en plusieurs fonctions simples pour chaque partie de la r\u00e9solution. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le cube \u00e9tant bloqu\u00e9 dans la structure, nous avons ajout\u00e9 un programme qui permet de le m\u00e9langer al\u00e9atoirement pour qu&#8217;il puisse fonctionner en autonomie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Afin de lier les moteurs au programme, nous avons d\u00fb utiliser une biblioth\u00e8que python distribu\u00e9e par <strong>Dynamixel<\/strong>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour finir le programme, nous avons ajout\u00e9 une <strong>interface <\/strong>gr\u00e2ce \u00e0 pygame (biblioth\u00e8que graphique) permettant de donner des instructions au programme et de relier les diff\u00e9rentes parties.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/image1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/image1-1024x576.png\" alt=\"\" class=\"wp-image-5024\" width=\"646\" height=\"363\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/image1-1024x576.png 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/image1-300x169.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/image1-768x432.png 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/image1-1536x864.png 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/image1-500x281.png 500w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/image1.png 1920w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/a><figcaption class=\"wp-element-caption\">Version finale de l&#8217;interface de notre programme<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Le Montage<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;assemblage \u00e0 r\u00e9ellement commenc\u00e9 avec l&#8217;arriv\u00e9 des moteurs. Nous avons pu construire une structure en <strong>MakerBeams <\/strong>pour les tenir. Ensuite, nous avons reli\u00e9 les moteurs en s\u00e9rie, et l&#8217;un d&#8217;eux \u00e0 la carte, pour qu&#8217;ils puissent \u00eatre connect\u00e9s au programme. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Capture-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"656\" height=\"197\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Capture-9.png\" alt=\"\" class=\"wp-image-5045\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/Capture-9.png 656w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/Capture-9-300x90.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/05\/Capture-9-500x150.png 500w\" sizes=\"auto, (max-width: 656px) 100vw, 656px\" \/><\/a><figcaption class=\"wp-element-caption\">Branchement entre moteur et ordinateur<\/figcaption><\/figure>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/20230530_180707-1-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/20230530_180707-1-edited-scaled.jpg\" alt=\"\" class=\"wp-image-5048\" width=\"352\" height=\"355\" \/><\/a><figcaption class=\"wp-element-caption\">Solveur final<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Conclusion<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finalement, nous avons r\u00e9ussi \u00e0 construire un <strong>solveur de Rubik&#8217;s Cube<\/strong> capable de m\u00e9langer et r\u00e9soudre un <strong>Rubik\u2019s Cube<\/strong>. Cependant, nous avons pu remarquer que dans certaines situations, les faces ne tournaient pas en raison de l\u2019impr\u00e9cision de la pi\u00e8ce reliant le moteur et le cube. Il faudra donc l\u2019am\u00e9liorer pour \u00e9viter ce d\u00e9faut. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons trouv\u00e9 ce projet tr\u00e8s int\u00e9ressant car il nous a permis de nous am\u00e9liorer en programmation et en mod\u00e9lisation 3D. De plus, l\u2019aspect concret nous a permis de voir l&#8217;avancement de notre projet. Enfin, cela nous a permis de<strong> travailler en \u00e9quipe<\/strong> et en <strong>autonomie<\/strong> des comp\u00e9tences qui nous serons tr\u00e8s importantes dans notre futur professionnel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous souhaitez en savoir plus, vous trouverez notre rapport ci-dessous <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Merci \u00e0 tous d&#8217;avoir lu notre article !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bilal, M\u00e9lissa et R\u00e9mi<\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Rapport-Solveur-de-Rubiks-Cube-1.pdf\" type=\"application\/pdf\" style=\"width:100%;height:600px\" aria-label=\"Contenu embarqu\u00e9 Rapport-Solveur-de-Rubiks-Cube-1.\"><\/object><a id=\"wp-block-file--media-0f296486-28bf-4c31-b012-0061d604d28d\" href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Rapport-Solveur-de-Rubiks-Cube-1.pdf\">Rapport-Solveur-de-Rubiks-Cube-1<\/a><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/05\/Rapport-Solveur-de-Rubiks-Cube-1.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-0f296486-28bf-4c31-b012-0061d604d28d\">T\u00e9l\u00e9charger<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bonjour \u00e0 toutes et \u00e0 tous, Nous sommes Bilal, M\u00e9lissa et R\u00e9mi, 3 \u00e9tudiants en seconde ann\u00e9e de classe pr\u00e9paratoire \u00e0 Polytech Angers. Dans le cadre de notre cursus, nous avons choisi de r\u00e9aliser un solveur de Rubik&#8217;s Cube. Pour &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/2023\/05\/31\/robot-solveur-de-rubiks-cube\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":98253,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[567],"tags":[],"class_list":["post-4052","post","type-post","status-publish","format-standard","hentry","category-2022-2023"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/4052","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\/98253"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/comments?post=4052"}],"version-history":[{"count":22,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/4052\/revisions"}],"predecessor-version":[{"id":5134,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/4052\/revisions\/5134"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/media?parent=4052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/categories?post=4052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/tags?post=4052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}