{"id":4152,"date":"2023-06-01T10:35:54","date_gmt":"2023-06-01T09:35:54","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/?p=4152"},"modified":"2023-06-01T10:35:54","modified_gmt":"2023-06-01T09:35:54","slug":"dobotnet-arduino-reseau-de-robots-dobots-magician","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/polytech_2A\/2023\/06\/01\/dobotnet-arduino-reseau-de-robots-dobots-magician\/","title":{"rendered":"DobotNet Arduino &#8211; R\u00e9seau de robots Dobots Magician"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bienvenue \u00e0 toutes et \u00e0 tous !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet article, nous allons partager avec vous les d\u00e9couvertes que nous avons faites lors de notre projet de deuxi\u00e8me ann\u00e9e de classe pr\u00e9paratoire \u00e0 Polytech Angers ! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c7a, c&#8217;est ce qu&#8217;on a fait&#8230;<\/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=\"D\u00e9monstration de DobotNet pour Arduino - Projet 2022-2023 Polytech Angers\" width=\"584\" height=\"329\" src=\"https:\/\/www.youtube.com\/embed\/nW0Ex21HHuA?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 d\u00e9monstration du projet DobotCity, by <a href=\"https:\/\/github.com\/MisTurtle\/DobotNet\">DobotNet<\/a><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Oui oui, nos deux petits bras robotis\u00e9s essaient de construire une ville miniature&#8230; Vous voulez savoir comment ? Et bien c&#8217;est parti !<\/p>\n\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">1. Pr\u00e9sentation du mat\u00e9riel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notre objectif lors de ces six derniers mois \u00e9tait de cr\u00e9er une solution pour permettre la communication entre plusieurs Dobots Magician via une carte Arduino.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">Les <strong><span style=\"text-decoration: underline\">Dobots Magician<\/span><\/strong> sont des petits robots comme celui-ci, auxquels on peut ajouter une extension telle qu&#8217;une <em>ventouse <\/em>ou une <em>pince <\/em>pour attraper des objets, un <em>crayon <\/em>pour dessiner, ou m\u00eame un <em>laser <\/em>pour graver dans la mati\u00e8re !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ils ont une port\u00e9e allant de 15cm \u00e0 32cm par rapport \u00e0 leur base et une r\u00e9p\u00e9tabilit\u00e9 des mouvements de 0.2mm.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R1.2-1-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R1.2-1-576x1024.jpg\" alt=\"\" class=\"wp-image-5322\" width=\"191\" height=\"340\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.2-1-576x1024.jpg 576w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.2-1-169x300.jpg 169w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.2-1-768x1365.jpg 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.2-1-865x1536.jpg 865w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.2-1-1153x2048.jpg 1153w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.2-1-scaled.jpg 1441w\" sizes=\"auto, (max-width: 191px) 100vw, 191px\" \/><\/a><figcaption class=\"wp-element-caption\">Robot Dobot Magician<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R1.3-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"1024\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R1.3-576x1024.jpg\" alt=\"\" class=\"wp-image-5332\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.3-576x1024.jpg 576w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.3-169x300.jpg 169w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.3-768x1365.jpg 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.3-865x1536.jpg 865w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.3-1153x2048.jpg 1153w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R1.3-scaled.jpg 1441w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/a><figcaption class=\"wp-element-caption\">Carte Arduino MEGA<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">La carte <strong><span style=\"text-decoration: underline\">Arduino MEGA<\/span><\/strong> va agir comme le cerveau de notre projet. Elle se verra attribuer diverses lourdes t\u00e2ches comme relayer les informations entre les Dobots, m\u00e9moriser l&#8217;avancement de la construction de la ville, recevoir des commandes de la part de l&#8217;utilisateur&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au d\u00e9but, nous avions une carte Arduino UNO, mais elle n&#8217;avait pas assez de RAM pour assumer toutes ces responsabilit\u00e9s, nous n&#8217;avons donc pas eu d&#8217;autre choix que de la changer !<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">Source de beaucoup d&#8217;ennuis, certes, mais la construction de notre ville ne pourrait pas se faire sans <strong><span style=\"text-decoration: underline\">la cam\u00e9ra<\/span><\/strong>&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En effet, nous allons avoir besoin de rep\u00e9rer des cubes dans l&#8217;espace, elle sera donc utile  pour traiter le flux d&#8217;images qu&#8217;elle capture et r\u00e9cup\u00e9rer en temps r\u00e9el des informations pr\u00e9cieuses que nous allons aborder dans quelques instants. <\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R1.1.jpg\"><img decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R1.1.jpg\" alt=\"\" class=\"wp-image-5335\" \/><\/a><figcaption class=\"wp-element-caption\">La cam\u00e9ra<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">2. Choix du projet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Comme nous l&#8217;avons expliqu\u00e9, notre but lors de ces six derniers mois \u00e9tait de parvenir \u00e0 faire collaborer deux Dobots Magician connect\u00e9s \u00e0 une carte Arduino. Nous souhaitions profiter au maximum de ces 100 heures de projet pour d\u00e9couvrir de nouveaux domaines li\u00e9s \u00e0 l&#8217;informatique, il est donc \u00e9vident que le projet que nous vous pr\u00e9sentons aujourd&#8217;hui ait piqu\u00e9 notre curiosit\u00e9. Voici quelques raisons pour lesquelles nous avons choisi ce projet au-dessus des autres :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Satisfaction visuelle<\/strong> offerte par le travail en \u00e9quipe de deux robots lors de la r\u00e9alisation d&#8217;une t\u00e2che complexe<\/li>\n\n\n\n<li><strong>Publication en source libre<\/strong> pour apporter sa participation au d\u00e9veloppement de la communaut\u00e9 Dobot<\/li>\n\n\n\n<li>D\u00e9couverte de <strong>pratiques courantes en robotique<\/strong> qui seront n\u00e9cessairement utiles dans le futur<\/li>\n\n\n\n<li>Introduction et apprentissage autonome \u00e0 la <strong>vision par ordinateur<\/strong><\/li>\n\n\n\n<li>Familiarisation avec du <strong>mat\u00e9riel \u00e9lectronique<\/strong>  <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin bref, c&#8217;est finalement la libert\u00e9 offerte par ce projet, que ce soit dans sa finalit\u00e9 comme dans les proc\u00e9d\u00e9s pour l&#8217;atteindre, qui nous l&#8217;a fait remarquer au-dessus des autres. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que vous savez pourquoi on l&#8217;a choisi, voyons comment nous nous y sommes pris pour construire une petite ville.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">3. Premiers pas : D\u00e9couverte de DobotStudio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons pass\u00e9 les premi\u00e8res heures de projet \u00e0 exp\u00e9rimenter et \u00e0 nous familiariser avec les robots gr\u00e2ce \u00e0 l&#8217;interface de contr\u00f4le <strong>DobotStudio<\/strong>. Cette application propose de nombreux modes amusants et interactifs pour faire se mouvoir les Dobots. On retrouve notamment le <strong>Teach and Playback<\/strong>, o\u00f9 le robot ex\u00e9cute une s\u00e9rie de mouvements pr\u00e9d\u00e9finis, et le <strong>Write and Draw<\/strong>, qui laisse le robot dessiner un texte ou une image t\u00e9l\u00e9vers\u00e9e sur l&#8217;application.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">En revanche, le mode qui nous int\u00e9ressait r\u00e9ellement pour le d\u00e9but de ce projet \u00e9tait la programmation en <strong>Blockly<\/strong>, puisqu&#8217;il offre un acc\u00e8s simplifi\u00e9 aux commandes d&#8217;un Dobot gr\u00e2ce \u00e0 des blocs pr\u00e9programm\u00e9s. En seulement quelques minutes, nous pouvons cr\u00e9er le programme ci-dessous:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Blockly.png\"><img loading=\"lazy\" decoding=\"async\" width=\"517\" height=\"243\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Blockly.png\" alt=\"\" class=\"wp-image-5339\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Blockly.png 517w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Blockly-300x141.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Blockly-500x235.png 500w\" sizes=\"auto, (max-width: 517px) 100vw, 517px\" \/><\/a><figcaption class=\"wp-element-caption\">Illustration des mouvements d&#8217;un Dobot avec DobotStudio | Programme Blockly<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Le r\u00e9sultat obtenu lors de l&#8217;ex\u00e9cution de ce programme est le suivant :<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/ADobotBlockly1.mp4\"><\/video><figcaption class=\"wp-element-caption\">Illustration des mouvements d&#8217;un Dobot avec DobotStudio | Vid\u00e9o<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Avec quelques essais suppl\u00e9mentaires, nous avions une bonne appr\u00e9hension de la mani\u00e8re de se d\u00e9placer des Dobots. Il \u00e9tait donc temps de passer \u00e0 l&#8217;\u00e9tape suivante : leur <span style=\"text-decoration: underline\">interface de communication<\/span>. <\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">4. Communication en s\u00e9rie avec les Dobots<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous vous l&#8217;avions cach\u00e9 jusqu&#8217;\u00e0 maintenant, mais nos petits robots disposent de diverses interfaces de connexion. La <span style=\"text-decoration: underline\">zone 6<\/span> sur la photo ci-dessous permet l&#8217;alimentation et le contr\u00f4le des extensions telles que la ventouse ou la pince.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\">En revanche, celle qui nous int\u00e9resse actuellement est l&#8217;interface de communication en <span style=\"text-decoration: underline\">zone 3<\/span>. Parmi les 10 pins expos\u00e9s dans cette zone, 2 d&#8217;entre eux (nomm\u00e9s <strong>RX<\/strong> et <strong>TX<\/strong>) constituent une <strong>interface UART<\/strong>, qui permet le transfert bidirectionnel et asynchrone de donn\u00e9es en s\u00e9rie.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/dobot_ports.png\"><img loading=\"lazy\" decoding=\"async\" width=\"3919\" height=\"2207\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/dobot_ports-edited.png\" alt=\"\" class=\"wp-image-5342\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited.png 3919w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited-300x169.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited-1024x577.png 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited-768x433.png 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited-1536x865.png 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited-2048x1153.png 2048w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/dobot_ports-edited-500x282.png 500w\" sizes=\"auto, (max-width: 3919px) 100vw, 3919px\" \/><\/a><figcaption class=\"wp-element-caption\">Interface de contr\u00f4le d&#8217;un Dobot<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/SerialArduino.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/SerialArduino.png\" alt=\"\" class=\"wp-image-5345\" width=\"209\" height=\"227\" \/><\/a><figcaption class=\"wp-element-caption\">Ports UART Arduino MEGA<\/figcaption><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">Cette interface est d&#8217;autant plus int\u00e9ressante qu&#8217;elle peut \u00eatre associ\u00e9e \u00e0 l&#8217;une des <span style=\"text-decoration: underline\">quatre interfaces UART install\u00e9es par d\u00e9faut<\/span> sur une carte Arduino MEGA (entour\u00e9es en rouge). Pour ce faire, il suffit de connecter les pins <strong>RX<\/strong> et <strong>TX<\/strong> \u00e0 l&#8217;arri\u00e8re du Dobot respectivement aux pins <strong>TX1<\/strong> et <strong>RX1<\/strong> de la carte Arduino. Une troisi\u00e8me connexion n\u00e9cessaire est celle entre le <strong>GND<\/strong> de l&#8217;<span style=\"text-decoration: underline\">Arduino<\/span> et celui du <span style=\"text-decoration: underline\">Dobot<\/span>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois cette connexion r\u00e9alis\u00e9e, l&#8217;Arduino peut, avec le programme appropri\u00e9, envoyer des commandes au robot \u00e0 laquelle elle est li\u00e9e.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s quelques heures de recherche, nous sommes entr\u00e9s en possession de deux fichiers importants. Le premier d\u00e9taille le <span style=\"text-decoration: underline\">protocole de communication<\/span> des Dobots (format des paquets de donn\u00e9es) et contient une liste de leurs <span style=\"text-decoration: underline\">commandes enregistr\u00e9es<\/span>. Le second est un programme de d\u00e9monstration faisant bouger un Dobot en connectant ses pins <strong>RX <\/strong>et <strong>TX<\/strong> \u00e0 une carte Arduino MEGA. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\"><span style=\"text-decoration: underline\">Voici le r\u00e9sultat obtenu gr\u00e2ce au code de d\u00e9monstration<\/span> :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une tr\u00e8s bonne nouvelle pour nous fut que cette d\u00e9monstration contenait l&#8217;impl\u00e9mentation d&#8217;une dizaine de commandes et d&#8217;un syst\u00e8me assez modulaire (<em>bien que parsem\u00e9 de bugs emb\u00eatants<\/em>) pour \u00e9tablir une communication \u00e0 double sens avec un Dobot.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apr\u00e8s avoir pass\u00e9 plusieurs heures \u00e0 lire, comprendre et corriger le code de d\u00e9monstration, nous \u00e9tions fin pr\u00eats \u00e0 relever notre plus gros d\u00e9fi jusqu&#8217;\u00e0 pr\u00e9sent : la cr\u00e9ation d&#8217;une biblioth\u00e8que open-source pour permettre le contr\u00f4le de un ou plusieurs robots Dobot Magician depuis une unique carte Arduino Mega. <\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/DemoSimole-1.mp4\"><\/video><figcaption class=\"wp-element-caption\">D\u00e9monstration Arduino<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">5. Cr\u00e9ation de DobotNet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">C&#8217;est ici que naquit DobotNet. Avec un temps consid\u00e9rable pass\u00e9 \u00e0 d\u00e9couvrir et \u00e0 r\u00e9organiser la d\u00e9monstration, nous avons \u00e9t\u00e9 capables de marquer les parties du code n\u00e9cessitant une r\u00e9\u00e9criture compl\u00e8te et celles pouvant \u00eatre utilis\u00e9es sans grosse modification.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il s&#8217;agissait de notre premi\u00e8re exp\u00e9rience de cr\u00e9ation d&#8217;une biblioth\u00e8que open-source. Aussi, nous avons concentr\u00e9 nos efforts pour am\u00e9liorer au maximum la lisibilit\u00e9 du code gr\u00e2ce \u00e0 des fonctions document\u00e9es et simples \u00e0 utiliser.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici l&#8217;\u00e9volution de la syntaxe pour faire se d\u00e9placer un robot vers un point donn\u00e9, en commen\u00e7ant avec la m\u00e9thode initialement propos\u00e9e par la d\u00e9monstration :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ Long, peu pratique et sans support pour plusieurs Dobots\nPTPCmd gPTPCmd;\ngPTPCmd.x = 200;\ngPTPCmd.y = 0;\ngPTPCmd.z = 0;\nSetPTPCmd(&amp;gPTPCmd, true,  &amp;gQueuedCmdIndex);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Et maintenant, l&#8217;\u00e9quivalent du code pr\u00e9c\u00e9dent en utilisant <strong><span style=\"text-decoration: underline\">DobotNet<\/span><\/strong>, o\u00f9 &#8220;dobot&#8221; est une variable pouvant repr\u00e9senter n&#8217;importe lequel des robots connect\u00e9s \u00e0 la carte :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dobot.MoveTo(MOVL_XYZ, 200, 0, 0, 0);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En comparant ces deux extraits, on remarque que le <strong>gain de temps, de place <\/strong>et par cons\u00e9quent<strong> de lisibilit\u00e9 <\/strong>du code source <strong>n&#8217;est pas n\u00e9gligeable<\/strong>, surtout pour des proc\u00e9dures de mouvements plus longues et complexes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons \u00e9galement ajout\u00e9 des exemples \u00e0 notre biblioth\u00e8que DobotNet pour permettre une prise en main rapide et accompagn\u00e9e. Elles vont d&#8217;une simple reproduction de la d\u00e9monstration sur laquelle est bas\u00e9e notre biblioth\u00e8que, au code complet de la solution dont vous avez vu un extrait au d\u00e9but de cet article. On retrouve ci-dessous le r\u00e9sultat de l&#8217;ex\u00e9cution de l&#8217;exemple &#8220;<strong>NetworkDemo.ino<\/strong>&#8221; <\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/DemoDouble.mp4\"><\/video><figcaption class=\"wp-element-caption\">Ex\u00e9cution de l&#8217;exemple NetworkDemo.ino avec DobotNet<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">6. Cr\u00e9ation de la ville<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que nous pouvons facilement faire bouger nos Dobots, passons \u00e0 la cr\u00e9ation de notre ville. Pour ce faire, il nous faut dessiner un plan aux proportions suffisamment impressionnantes pour l&#8217;aspect visuel, tout en restant dans la port\u00e9e des robots. Il faut \u00e9galement faire attention \u00e0 ce que les structures dans la ville ne soient pas trop proches les unes des autres pour s&#8217;assurer que l&#8217;ouverture de la pince ne d\u00e9molisse pas des b\u00e2timents adjacents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plusieurs versions ont \u00e9t\u00e9 n\u00e9cessaires, mais nous sommes finalement parvenus \u00e0 un plan satisfaisant nos attentes :<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\">Chaque couleur repr\u00e9sente un type de b\u00e2timent :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Maison (<mark style=\"color:#ee0202\" class=\"has-inline-color\">rouge<\/mark>) [2&#215;1]<\/li>\n\n\n\n<li>Arbre (<mark style=\"color:#2bb41d\" class=\"has-inline-color\">vert<\/mark>) [2&#215;1]<\/li>\n\n\n\n<li>Immeuble (<mark style=\"color:#eca900\" class=\"has-inline-color\">jaune<\/mark>) [3&#215;2]<\/li>\n\n\n\n<li>Voiture (<mark style=\"color:#0e27e6\" class=\"has-inline-color\">bleu<\/mark>) [1&#215;2]<\/li>\n\n\n\n<li>Zone de transition (blanc)<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Page-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Page-1-edited.png\" alt=\"\" class=\"wp-image-5357\" width=\"366\" height=\"259\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Page-1-edited.png 1587w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Page-1-edited-300x212.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Page-1-edited-1024x725.png 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Page-1-edited-768x543.png 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Page-1-edited-1536x1087.png 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Page-1-edited-424x300.png 424w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/a><figcaption class=\"wp-element-caption\">Plan final de la ville DobotCity<\/figcaption><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">La zone de transition est un emplacement auquel les deux Dobots ont acc\u00e8s, permettant le transfert des blocs d&#8217;une zone \u00e0 l&#8217;autre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En pla\u00e7ant la t\u00eate du Dobot sur le point de calibration (rouge) au centre de l&#8217;image, nous pouvons r\u00e9cup\u00e9rer un point de r\u00e9f\u00e9rence dans le syst\u00e8me de coordonn\u00e9es du Dobot, ce qui permet de convertir les coordonn\u00e9es en millim\u00e8tres des b\u00e2timents. Il en est de m\u00eame pour le Dobot de la partie suivante.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. Cr\u00e9ation de la zone de stockage<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous entrons maintenant dans la partie qui s&#8217;est av\u00e9r\u00e9e \u00eatre la plus probl\u00e9matique de toutes pour notre projet : la zone de stockage. Il s&#8217;agit de l&#8217;endroit o\u00f9 les blocs sont d\u00e9pos\u00e9s par l&#8217;utilisateur, pour ensuite \u00eatre r\u00e9cup\u00e9r\u00e9s par un Dobot et plac\u00e9s sur la zone de transition. C&#8217;est maintenant que nous faisons appel \u00e0 la cam\u00e9ra, dont la capture sera trait\u00e9e pour essayer de d\u00e9terminer la position des blocs dans la zone de stockage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici ce \u00e0 quoi ressemble notre zone de stockage (Th\u00e9orique | Captur\u00e9e par la cam\u00e9ra) :<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Storage.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Storage-edited.png\" alt=\"\" class=\"wp-image-5367\" width=\"315\" height=\"223\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Storage-edited.png 1587w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Storage-edited-300x212.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Storage-edited-1024x725.png 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Storage-edited-768x543.png 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Storage-edited-1536x1087.png 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/Storage-edited-424x300.png 424w\" sizes=\"auto, (max-width: 315px) 100vw, 315px\" \/><\/a><figcaption class=\"wp-element-caption\">Repr\u00e9sentation de la zone de stockage<\/figcaption><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/TopDownScene.png\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/TopDownScene.png\" alt=\"\" class=\"wp-image-5369\" \/><\/a><figcaption class=\"wp-element-caption\">Capture r\u00e9elle de la zone de stockage<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Les quatre carr\u00e9s noirs \u00e9tranges autour de la zone de stockage sont appel\u00e9s des marqueurs Aruco. Ils sont parfois utilis\u00e9s en vision par ordinateur pour d\u00e9limiter une zone, d\u00e9terminer un rep\u00e8re ou traquer un objet mobile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En utilisant la biblioth\u00e8que de traitement d&#8217;image <strong>OpenCV<\/strong> (<strong>Open C<\/strong>omputer <strong>V<\/strong>ision) disponible sur Python, nous pouvons r\u00e9aliser les \u00e9tapes suivantes pour isoler la zone de stockage et d\u00e9tecter les cubes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1) Trouver le centre des marqueurs Aruco sur l&#8217;image avec <code>cv2.aruco.detectMarkers()<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2)  Transformer l&#8217;image de sorte que les centres trouv\u00e9s soient aux coins de l&#8217;image avec <code>cv2.getPerspectiveTransform(centres, coins)<\/code> et <code>cv2.warpPerspective()<\/code>. Le r\u00e9sultat est pr\u00e9sent\u00e9 ci-dessous :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/ZoneStraight.png\"><img loading=\"lazy\" decoding=\"async\" width=\"508\" height=\"181\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/ZoneStraight.png\" alt=\"\" class=\"wp-image-5372\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/ZoneStraight.png 508w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/ZoneStraight-300x107.png 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/ZoneStraight-500x178.png 500w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><\/a><figcaption class=\"wp-element-caption\">Image de la zone de stockage apr\u00e8s transformation de la capture<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">3)  Appliquer un flou gaussien pour r\u00e9duire le bruit<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4)  Appliquer un algorithme de d\u00e9tection des contours avec <code>cv2.Canny()<\/code> et deux param\u00e8tres s\u00e9lectionn\u00e9s par l&#8217;utilisateur. Nous avons cr\u00e9\u00e9 une interface qui permet de visualiser l&#8217;effet des deux param\u00e8tres (En vert sont les contours d\u00e9tect\u00e9s)<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"720\" style=\"aspect-ratio: 1280 \/ 720;\" width=\"1280\" controls src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/CamCalib.mp4\"><\/video><figcaption class=\"wp-element-caption\">Interface de calibration des param\u00e8tres de la cam\u00e9ra<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">5)  Validation des dimensions des contours, calcul des centres et de la couleur des blocs<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6)  Compilation des r\u00e9sultats dans l&#8217;interface de contr\u00f4le<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/ControlInterface.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/ControlInterface.png\" alt=\"\" class=\"wp-image-5373\" \/><\/a><figcaption class=\"wp-element-caption\">Interface de contr\u00f4le \u00e0 distance<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il nous aura fallu beaucoup de temps pour comprendre les fonctions propos\u00e9es par OpenCV et trouver une combinaison d&#8217;algorithmes donnant un r\u00e9sultat fiable. Nous avons cependant d\u00e9couvert de nombreux concepts en lien avec la manipulation d&#8217;image qui ont chang\u00e9 notre perception de ce domaine.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Interface Utilisateur Graphique (GUI)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Comme nous venons de le voir sur les deux captures pr\u00e9c\u00e9dentes, nous avons ajout\u00e9 \u00e0 notre projet des interfaces utilisateur pour faciliter le contr\u00f4le depuis un ordinateur. Ces interfaces ont \u00e9t\u00e9 r\u00e9alis\u00e9es avec Tkinter. Chaque bouton sur l&#8217;interface de contr\u00f4le communique une commande \u00e0 la carte Arduino via un module Bluetooth que nous avons ajout\u00e9. Un exemple simple est le bouton <strong>Construire <\/strong>qui permet de lancer \/ arr\u00eater la proc\u00e9dure de construction de la ville, ou le bouton <strong>Reset <\/strong>qui permet de recommencer la proc\u00e9dure de z\u00e9ro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons \u00e9galement ajout\u00e9 un \u00e9cran LCD 4&#215;20 connect\u00e9 \u00e0 l&#8217;Arduino pour afficher l&#8217;\u00e9tat actuel de la proc\u00e9dure. Le voici dans deux \u00e9tats diff\u00e9rents :<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R9-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R9-1024x577.jpg\" alt=\"\" class=\"wp-image-5376\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R9-1024x577.jpg 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R9-300x169.jpg 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R9-768x432.jpg 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R9-1536x865.jpg 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R9-2048x1153.jpg 2048w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R9-500x282.jpg 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ecran LCD &#8211; Mode inactif<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R10-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/R10-1024x577.jpg\" alt=\"\" class=\"wp-image-5377\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R10-1024x577.jpg 1024w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R10-300x169.jpg 300w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R10-768x432.jpg 768w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R10-1536x865.jpg 1536w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R10-2048x1153.jpg 2048w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/R10-500x282.jpg 500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ecran LCD &#8211; Mode construction<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">9. Perspectives d&#8217;am\u00e9lioration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Comme nous vous l&#8217;avons expliqu\u00e9 au d\u00e9but de cet article, l&#8217;une des raisons principales pour laquelle nous avons choisi ce projet est sa capacit\u00e9 \u00e0 constamment pouvoir \u00eatre am\u00e9lior\u00e9. Nous avions de nombreuses id\u00e9es pour compl\u00e9ter le travail que nous avons fait jusqu&#8217;\u00e0 pr\u00e9sent, mais le temps nous a manqu\u00e9 pour r\u00e9aliser certaines d&#8217;entre elles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous souhaitions par exemple imprimer une carte \u00e9lectronique pour r\u00e9duire le nombre de c\u00e2bles apparents qui d\u00e9gradent actuellement l&#8217;apparence ext\u00e9rieure de notre projet, mais par manque de temps, nous n&#8217;avons pas eu l&#8217;occasion d&#8217;aller au bout de cette id\u00e9e.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/EagleBrd.png\"><img loading=\"lazy\" decoding=\"async\" width=\"430\" height=\"268\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/EagleBrd.png\" alt=\"\" class=\"wp-image-5379\" srcset=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/EagleBrd.png 430w, https:\/\/blog.univ-angers.fr\/polytech_2A\/files\/2023\/06\/EagleBrd-300x187.png 300w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/a><figcaption class=\"wp-element-caption\">Prototype de carte \u00e9lectronique, r\u00e9alis\u00e9e sur EAGLE by AutoDesk<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Sans carte \u00e9lectronique et par cons\u00e9quent sans certitude des dimensions, nous ne pouvions pas prendre le risque d&#8217;imprimer une bo\u00eete de rangement pour la carte Arduino et les modules qui y sont connect\u00e9s.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Box_Inner.png\"><img loading=\"lazy\" decoding=\"async\" width=\"663\" height=\"490\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Box_Inner.png\" alt=\"\" class=\"wp-image-5380\" \/><\/a><figcaption class=\"wp-element-caption\">Vision int\u00e9rieure de la bo\u00eete<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Box_Outter.png\"><img loading=\"lazy\" decoding=\"async\" width=\"667\" height=\"490\" src=\"https:\/\/blog.univ-angers.fr\/istiaprojetsei2\/files\/2023\/06\/Box_Outter.png\" alt=\"\" class=\"wp-image-5381\" \/><\/a><figcaption class=\"wp-element-caption\">Vision ext\u00e9rieure de la bo\u00eete<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, une derni\u00e8re am\u00e9lioration que nous aurions r\u00e9ellement aim\u00e9 ajouter est celle laissant l&#8217;utilisateur dessiner sa propre ville. Elle correspond au bouton Dessiner sur l&#8217;interface de contr\u00f4le. Seul le temps pour cr\u00e9er une interface de dessin du plan nous manquait, puisque le code Arduino est d\u00e9j\u00e0 adapt\u00e9 pour accueillir ce genre de fonctionnalit\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Bilan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous \u00eates encore l\u00e0, merci beaucoup d&#8217;avoir pris le temps de lire cet article !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce projet a \u00e9t\u00e9 pour nous une exp\u00e9rience inoubliable. M\u00eame si, comme nous venons de le voir, nous n&#8217;avons pas eu le temps d&#8217;aller au bout de nos perspectives, nous sommes tout de m\u00eame tr\u00e8s heureux du travail accompli lors de ces six derniers mois. Nous n&#8217;\u00e9tions que deux pour r\u00e9aliser ce projet, et les d\u00e9fis que nous a caus\u00e9 notre ambition ont \u00e9t\u00e9 de taille. M\u00eame si notre technique pour aborder certains probl\u00e8mes n&#8217;\u00e9tait pas parfaite, nous sommes fiers d&#8217;avoir accompli ce qui est notre projet aujourd&#8217;hui. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vision par ordinateur, programmation sur Arduino, cr\u00e9ation d&#8217;une biblioth\u00e8que, design d&#8217;une carte \u00e9lectronique, mod\u00e9lisation 3D. Toutes ces comp\u00e9tences ne pourront que nous \u00eatre b\u00e9n\u00e9fiques pour le futur, et nous garderons un tr\u00e8s bon souvenir de ce travail d&#8217;\u00e9quipe pour surmonter les obstacles rencontr\u00e9s sur le chemin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Remerciements<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous remercions \u00e9videmment l&#8217;ensemble des enseignants qui ont pu nous aider durant ce projet, et plus particuli\u00e8rement :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mr. BOIMOND Jean-Louis, notre r\u00e9f\u00e9rent de projet<\/li>\n\n\n\n<li>Mr. LAGRANGE S\u00e9bastien<\/li>\n\n\n\n<li>Mr. VERRON Sylvain<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ce projet a demand\u00e9 beaucoup de rigueur, il aurait donc \u00e9t\u00e9 impossible sans leur aide pr\u00e9cieuse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">12. GitHub Repositories<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>DobotNet : <a href=\"https:\/\/github.com\/MisTurtle\/DobotNet\">https:\/\/github.com\/MisTurtle\/DobotNet<\/a><\/li>\n\n\n\n<li>DobotCity, by DobotNet : <a href=\"https:\/\/github.com\/MisTurtle\/DobotCityBuilding\">https:\/\/github.com\/MisTurtle\/DobotCityBuilding<\/a><\/li>\n\n\n\n<li>ArucoCrop : <a href=\"https:\/\/github.com\/MisTurtle\/ArucoCrop_Library\">https:\/\/github.com\/MisTurtle\/ArucoCrop_Library<\/a><\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-right is-layout-flex wp-container-core-group-is-layout-2b4002ad wp-block-group-is-layout-flex\">\n<p class=\"has-text-align-right wp-block-paragraph\"><span style=\"text-decoration: underline\">Kind Regards, us<\/span><\/p>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">by Paquereau&#8211;Gasnier Alexis, Cholet Byron<\/p>\n<\/div>\n\n\n\n<div style=\"height:46px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bienvenue \u00e0 toutes et \u00e0 tous ! Dans cet article, nous allons partager avec vous les d\u00e9couvertes que nous avons faites lors de notre projet de deuxi\u00e8me ann\u00e9e de classe pr\u00e9paratoire \u00e0 Polytech Angers ! \u00c7a, c&#8217;est ce qu&#8217;on a &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/polytech_2A\/2023\/06\/01\/dobotnet-arduino-reseau-de-robots-dobots-magician\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":96610,"featured_media":5477,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[567],"tags":[43,579,444,456,243,27,324,386],"class_list":["post-4152","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2022-2023","tag-arduino","tag-communication","tag-dobot","tag-opencv","tag-polytech-angers","tag-projet","tag-robotique","tag-tkinter"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/4152","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\/96610"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/comments?post=4152"}],"version-history":[{"count":76,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/4152\/revisions"}],"predecessor-version":[{"id":5480,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/posts\/4152\/revisions\/5480"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/media\/5477"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/media?parent=4152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/categories?post=4152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/polytech_2A\/wp-json\/wp\/v2\/tags?post=4152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}