DobotNet Arduino – Réseau de robots Dobots Magician

Bienvenue à toutes et à tous !

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…

Vidéo de démonstration du projet DobotCity, by DobotNet

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.

Robot Dobot Magician
Carte Arduino MEGA

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.

La caméra

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:

Illustration des mouvements d’un Dobot avec DobotStudio | Programme Blockly

Le résultat obtenu lors de l’exécution de ce programme est le suivant :

Illustration des mouvements d’un Dobot avec DobotStudio | Vidéo

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.

Interface de contrôle d’un Dobot
Ports UART Arduino MEGA

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.

Démonstration Arduino

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

Exécution de l’exemple NetworkDemo.ino avec DobotNet

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)
Plan final de la ville DobotCity

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) :

Représentation de la zone de stockage
Capture réelle de la zone de stockage

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 :

Image de la zone de stockage après transformation de la capture

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)

Interface de calibration des paramètres de la caméra

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

Interface de contrôle à distance

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 :

Ecran LCD – Mode inactif
Ecran LCD – Mode construction

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.

Prototype de carte électronique, réalisée sur EAGLE by AutoDesk

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.

Vision intérieure de la boîte
Vision extérieure de la boîte

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.

12. GitHub Repositories

Kind Regards, us

by Paquereau–Gasnier Alexis, Cholet Byron

Tri de pièces automatisé par détection photo par le Dobot Magician

Bonjour la poly-communauté !

Bienvenue sur cet article qui parle de notre projet, 100 heures dédiées à ce projet, 100 heures de réflexion, d’enthousiasme, de discorde mais surtout 100 heures d’un travail collectif abouti. L’idée de commencer ce projet nous excitait beaucoup et les premières discussions avec notre professeur encadrant : Monsieur BOIMOND, nous ont directement mis dans le bain et nous avions hâte de commencer. Notre professeur encadrant nous a directement donné sa confiance en nous prêtant un robot Dobot Magician.

Attendez !!

On vous parle de notre robot mais dans l’euphorie on ne vous a pas encore présenté notre objectif.

En effet, notre projet consiste à trier des pièces selon leur couleur, une caméra dont le repère sera fixe à celui du robot devra visualiser les pièces à trier ainsi que les zones de décharges. Ensuite le robot devra donc emmener chaque pièce au bon endroit. Pour réussir cela, il nous fallait quelques bases et prérequis. La robotique et la programmation qui y est associée nous étais complètement étrangère, pour rectifier cela, notre encadrant nous a donné des travaux pratiques de robotique ainsi que son cours afin de nous aider à découvrir le domaine, le sujet et le robot ainsi que ses utilisations. Ensuite nous devions inventer un moyen de fixer notre caméra à notre robot et enfin nous devions passer à l’étape la plus primordiale : la programmation finale.

Nos pièces sont des cubes RGB de 1 cm de côté et nos zones de décharges seront comme ci-dessous, la visualisation de la caméra se fait sur un format A4.

En essayant de réaliser ces travaux pratiques, nous nous sommes dépêchés afin de commencer la programmation car nous pensions être prêt et avoir tout compris. Cependant en se précipitant, on se retrouvait souvent complètement bloqué sans avoir vraiment compris ce que nous avions fait. C’est à ce moment-là que Monsieur BOIMOND nous a mis en garde en nous rappelant qu’il était important de comprendre comment cela fonctionnait afin de pouvoir le faire nous-même dans la programmation. Cela nous a été très bénéfique et nous avons finalement avancé plus vite après coup. Il nous a dit :

Il ne faut pas confondre vitesse et précipitation.

Une fois sur la bonne voie, nous avons réfléchi à un moyen de fixer notre caméra, le plus simple nous semblait être la réalisation d’une pièce en CAO. Ce n’était pas simple car nous devions trouver l’endroit parfait et le moyen le plus facile, la visualisation de la caméra devait être claire, sans avoir d’obstacles devant comme un bout de robot ou notre pince. Nous sommes parti sur une première pièce, qui s’est avérée être pratique et qui correspondait parfaitement au cahier des charges, cependant nous avons reprécisé certaines côtes et enlever un morceau qui gênait un peu lors de notre 2ème version.

Ainsi voici notre pièce finale :

Voici notre support monté sur le robot avec la pince. Ici le robot est en condition d’utilisation.

Ensuite logiquement nous avons entamé la programmation en python pour contrôler notre robot. Pour commencer il nous fallait détecter les cubes et les zones de couleur pour connaître leurs coordonnées. Pour cela nous avons créé un masque autour de la feuille et appliqué des filtres pour détecter les nuances de couleurs.

Détection des cubes
Détection des zones

Par la suite nous allons expliquer notre codage pour la couleur rouge puisque l’idée est la même pour les autres couleurs.

D’abord  nous avons codé pour connaître les coordonnées des cubes en pixels que nous avons converti en mm par calcul.

Puis effectuer la même chose pour les zones de couleurs. 

Enfin nous avons codé le déplacement du robot de la manière suivante : 

  • Le robot va aux coordonnées de notre premier cube et se place à 30 pixels au-dessus.
  • La pince s’ouvre
  • Ensuite il descend au niveau de la feuille 
  • La pince se ferme
  • Puis une étape transitoire où il se déplace à des coordonnées se rapprochant de la position de base du robot
  • La seconde phase du déplacement débute avec le mouvement du robot au centre de la zone rouge
  • La pince s’ouvre pour libérer le cube
  • Le robot remonte de 30 pixels
  • Retourne aux coordonnées proches de sa position de base
  • Puis la pince se referme

Tadam ! Voilà le résultat !

PS : N’hésitez pas à mettre la vidéo en plein écran et en 1.5 pour une expérience optimale.

Voici donc le fruit de 100 heures de travail

Réussir ce projet a sûrement été l’une des choses les plus satisfaisantes de nos deux années à polytech. Il nous a apporté beaucoup de nouvelles connaissances, notamment en robotique et en programmation. Cependant, ce n’est que la première version d’un projet qui peut être optimisé. En effet, il y a encore quelques axes d’amélioration pour que ce système automatisé soit opérationnel en toutes circonstances. notamment au niveau du contrôle de la pince pour l’axer avec les cubes. Mais aussi la possibilité d’effectuer une nouvelle détection à chaque tri d’une pièce au cas où un cube n’aurait plus la même position. 

Ainsi cette version finale et autonome pourrait être utilisée dans plusieurs domaines de l’industrie. Logiquement, on pense au tri de pièces au premier abord. Cependant, dans un aspect écologique cela pourrait être utile pour recycler les matériaux en fonction de leur couleur ou de leur forme. Cela entraînerait un gain de temps considérable pour l’Homme, et l’opportunité d’agir sur d’autres fronts pour notre planète.

Merci à vous d’être parvenu jusqu’ici !!

Nicolas BESSON – Nicolas BAUDUZ – Arnaud WACHOWIAK

Relier les centres de cercles avec le Robot Dobot Magician

Relier les centres de cercles avec le Robot Dobot Magician

Bonjours à toutes et tous !

Nous sommes trois étudiants en deuxième année du cycle préparatoire à Polytech Angers (Enzo, Hippolyte et Léo). L’objectif de notre projet est de détecter puis relier des cercles de mêmes couleurs grâce à un feutre tenu par le Robot Dobot Magician. L’une des contraintes demandées est d’avoir une caméra directement accrochée au robot et non posée à côté de ce dernier. Un robot tel que le Dobot Magician, est à but didactique, mais le fonctionnement algorithmique pourrait être utilisé à grande échelle, en usine, pour trier et réorienter un ensemble de pièces par exemple.

Si vous le souhaitez, une vidéo de présentation est disponible (avec tous les documents de notre projet) dans ce lien drive :

https://drive.google.com/drive/folders/1UxkdQfwdgCEFTwE-POVpguWi9XRQfONz?usp=sharing

Pourquoi ce projet ?

Nous avons choisi ce projet, car chacun des domaines qui allaient être abordés nous plaisaient : Conception ; Programmation ; Robotique et Impression 3D. De plus, nous avions tous les trois le souhait d’aller en SAGI l’année prochaine donc travailler sur ce projet allait nous apporter une première idée plus poussée de ces domaines

Notre Projet se compose de 5 étapes principales :

  • Expérimentation
  • Recherche de solutions et Modélisation de l’outil caméra
  • Développement du système de control
  • Développement du code de traitement d’images
  • Développement de l’interface graphique

Nous avons entamé notre projet par une phase de recherche.

Nous nous sommes appuyés sur les TP fournis par notre professeur référent pour nous familiariser au matériel. Comme le robot Dobot magician, la caméra, les mathématiques associés et les logiciels propres à notre projet.

Nous avons principalement utilisé 3 logiciels. Tout d’abord, DOBOTSTUDIO, le programme fourni par les constructeurs afin de contrôler le robot. Ensuite, SOLIDWORKS, le logiciel de CAO, que nous connaissions le mieux, il nous a permit de conceptualiser tous les prototypes. Pour finir, nous avons utilisé PYCHARM accompagné de la bibliothèque associée, un encodeur python, avec lequel nous avons développé notre traitement d’image, notre gestion de mouvement du robot et l’interface graphique.

Conception du support caméra

Notre support se divisera en 2 parties. La première est le boitier qui contiendra la carte mère ainsi que la lentille que nous avons extraite de la caméra. Afin, que la lentille soit le plus parfaitement possible parallèle à la feuille, nous avons rajouté des renforts pour fixer la carte dans le boitier. L’objectif est de réduire au maximum le décalage qu’un angle entre la lentille et la feuille puisse créer.

Le Boitier

La deuxième partie du support caméra, permet d’accrocher le boitier au robot, il se divise en 2 sous-parties qui viennent se fixer autour du feutre. Le boitier vient donc s’accrocher par l’intermédiaire d’un rail sur lequel le jeu a été calculé de façon à ce qu’il glisse facilement, et soit parfaitement stable lors des mouvements du robot.

Accroche
Accroche Solidworks

Après avoir tout imprimé et assemblé, voici le résultat :

Robot Dobot Magician avec le support caméra

Programmation du robot

On va maintenant s’intéresser à l’autre partie également importante de notre projet, à savoir la programmation.

En effet, le but étant de relier tous les cercles de la même couleur, on se doutait dès le début qu’il y aurait un travail conséquent sur le traitement d’image, domaine dans lequel nous n’avions que peu d’expérience.

Nous avons créé un programme de près de 290 lignes en langage python, car les fonctions qui permettent de contrôler notre robot sont écrites dans ce langage.

Nous avons passé nos premières séances sur la programmation à comprendre et à tester ces différentes fonctions afin de voir comment le robot réagissait aux différentes commandes et d’identifier ce qui pourrait potentiellement poser un problème par la suite.

À partir de là, il ne nous manquait plus qu’à définir ce qu’on allait devoir faire pour ensuite créer notre algorithme.

À partir de cet algorithme, nous avons pu créer un programme fonctionnel, mais une autre idée nous est venue : celle de faire une interface graphique qui permettrait à l’utilisateur de contrôler le robot étape par étape et qui serait beaucoup plus agréable esthétiquement parlant.

L’interface Graphique

L’interface graphique avait de nombreux intérêts (accompagnés de nombreux inconvénients), notamment la facilité d’utilisation pour quelqu’un ne connaissant pas notre projet.

interface graphique de notre programme

Le bouton Home (en haut à gauche) permet au robot de se placer en condition initiale et de recalibrer ses déplacements.
Juste en dessous, c’est le bouton qui place le robot en position initiale, sans la phase de recalibrage, ainsi, on évite cette étape qui peut être plutôt longue. Cependant, lors de l’activation du programme, il est conseillé d’utiliser le home du robot (premier bouton) afin d’être plus précis.
À nouveau en dessous, c’est le bouton qui active la prise de la photo. Afin d’avoir une photo de bonne qualité, mais surtout utilisable, il faut placer le robot en conditions initiales.
Enfin, les ronds de couleurs (milieu-bas) permettent de choisir quels cercles on souhaite relier. Bien sûr, cette étape nécessite d’avoir prit la photo avant.

Au milieu de cette interface se trouve le logo de notre projet, de son nom Tomi, c’est notre mascotte.

Enfin voici une vidéo de notre robot après toutes ces étapes :

Bilan

Ce projet nous a beaucoup apporté, que ce soit en programmation et sur le traitement d’image où nous n’avions aucune connaissance, ainsi que sur le fait de devoir toujours faire face à des problèmes imprévus lorsque nous commencions une tâche. On peut prendre en exemple la lumière pour le traitement d’image qui nous a posé beaucoup de problème !

Pour nous le plus important dans ce projet a été le travail de groupe et l’importance de s’entourer des bonnes personnes afin d’échanger et de s’entraider au maximum !

Vous pouvez retrouver tous nos documents ainsi qu’une vidéo de présentation du projet dans ce lien drive :

https://drive.google.com/drive/folders/1UxkdQfwdgCEFTwE-POVpguWi9XRQfONz?usp=sharing

Merci pour la lecture !

  • Bossuet Léo – Kukla Hippolyte – Richard Enzo

Tri de pièces avec le robot dobot magicien et une caméra embarquée

Salut les polypotes !

Nous sommes Matis LEMOINE, Simon BODIN, Schawal BACAR et Corentin PICCIN, étudiants en deuxième année de cycle préparatoire intégré à Polytech Angers. Pour notre quatrième semestre, nous sommes amenés à mettre en œuvre un projet, de A à Z encadré par un professeur de robotique industrielle : Jean-Louis Boimond.

Polytech Angers a acquis récemment en plusieurs exemplaires du robot DOBOT Magician, conçus par des fabricants de robots industriels, permettant l’apprentissage de la robotique industrielle. Le projet a pour objectif de fixer une caméra sur le bras du robot pour permettre la localisation des pièces en vue de les trier selon leurs couleurs.

Nous avons choisi ce projet car il nécessite des compétences en programmation, Solidworks, domaines qui nous attirent et dans lesquels nous sommes complémentaires.

Introduction

Aujourd’hui l’accroissement de la complexité des tâches à accomplir par les robots industriels est tel que les applications de la robotique en entreprise et dans les autres secteurs réclament que l’organe terminal des robots (ventouse, pince, laser, …) ait un niveau élevé de précision. Dans notre cas nous nous sommes occupés de la localisation, la manipulation puis le tri des pièces par le robot. Deux options sont classiquement adoptées, soit la caméra est disposée à un endroit fixe par rapport au robot soit elle est fixée directement sur le bras du robot. Pour notre part nous avons choisi de fabriquer un support pour fixer la caméra au robot.

Pour mener à bien notre projet, nous avons dû passer par plusieurs étapes de travail, allant de la réflexion et l’apprentissage jusqu’à la mise au point d’un programme fonctionnel :
– prise en main du robot Dobot et son logiciel;
– création par impression 3D d’une interface permettant de fixer la caméra sur le bras du robot;
– le traitement des images issues de la caméra;
– programmer le robot pour permettre le déplacement et le tri des pièces;

Robot Dobot Magician

1) Prise en main du robot Dobot et de son logiciel

Le robot Dobot Magician est le robot éducatif parfait car il possède de nombreuses fonctionnalités accessibles via son logiciel « DobotStudio » très intuitif. Le robot est muni d’un bras robotisé modulaire de grande précision programmable via une liaison USB. Dans un premier temps nous nous sommes familiarisés avec le robot.

 Caractéristiques du bras de robot Dobot

Pour comprendre le concept du robot, notre professeur nous a fait travailler sur des travaux pratiques d’élèves de troisième année en Systèmes automatisés et génie informatique. Ceci nous a permis de découvrir le fonctionnement de la caméra. À côté du robot, nous avons dessiné sur une feuille 2 cercles noirs. Nous avons fait en sorte que le repère du robot et de la feuille soient colinéaires. Ainsi il suffira simplement d’ajouter la distance entre les deux repères pour avoir les coordonnées dans le repère du robot. Puis grâce à une programmation PYTHON la pointe du stylo située à l’extrémité du bras du robot se place aux coordonnées du centre des cercles qui ont été obtenues par la caméra fixée sur un trépied.

Détection des cercles grâce à la caméra et contre des cercles pointés par le rayon

2) Création par impression 3D d’une interface permettant de fixer la caméra sur le bras du robot

Nous avons ensuite remplacé le crayon par une pince car le but était de saisir des cubes. Il a fallu pour cela concevoir par impression 3D un support permettant de fixer la caméra au bras du robot.

Nous avons fabriqué un 1er prototype sur Solidworks mais la caméra n’était pas dans l’axe de la pince ce qui rendait l’action du robot très imprécise.

Nous avons alors créé une deuxième pièce afin d’avoir l’axe de la caméra dans l’axe du robot et plus haute pour obtenir un espace d’action plus large. Malheureusement, le rayon d’action du bras était inférieur à l’espace perçu par la caméra. Cela n’avait pas d’intérêt.

Deuxième prototype

Il a donc fallu fabriquer une 3ème pièce qui cette fois a fonctionné.

Troisième prototype

3) Le traitement des images issues de la caméra

Pour la détection des cubes et de leur couleur, nous nous sommes concentrés d’abord sur la couleur bleue. Pour obtenir les coordonnées des cubes à partir de l’image prise par la caméra, il va falloir effectuer plusieurs étapes de traitement de l’image. Nous allons effectuer toutes ces étapes dans notre programme en python. Cela nous a permis de récupérer les coordonnées du cube pour que la pince puisse ensuite le saisir. Nous avons fait la même chose pour les cubes vertes et rouges.

Nous nous sommes rendus compte que la détection nécessite une bonne luminosité. Nous avons compris que l’éclairage doit être uniforme dans toute la zone pour éviter les zones d’ombre et ainsi bien repérer tous les cubes. Nous nous sommes donc procurés une lampe.

4) Programmer le robot pour permettre le déplacement et le tri des pièces

Ensuite, notre objectif était que le robot range les cubes dans les zones de leur couleur correspondante. Pour cela, il ne devait pas confondre les coordonnées des cubes et celles de leur zone de rangement. Il a donc été nécessaire de réaliser des zones de rangement plus grandes que les cubes pour que la pince puisse bien repérer les cubes et les positionner au bon endroit. Une fois les coordonnés des cubes et des zones de rangements récupérés, nous avons programmé le robot afin par exemple qu’il saisisse une pièce bleu et qu’il la dépose dans la zone de rangement bleue.

Bilan

Grâce à l’importance de la communication et du travail d’équipe au sein de notre groupe, nous avons réussi à atteindre notre objectif. Notre robot effectue les tâches qui nous avaient été confiées en début de projet. Ce projet nous a d’autre part permis de développer nos compétences en CAO, en programmation et surtout nous a offert des connaissances en robotique. Nous tenons à remercier encore une fois toutes les personnes ayant contribué et encadré ce projet.

Merci pour votre lecture !
Corentin, Matis, Simon et Schawal

Création d’un boîtier de commande pour robot Dobot Magician

Bonjour à tous, je suis étudiant en deuxième année à Polytech Angers et mon projet de fin d’année a été de construire un boîtier de commande pour le robot Dobot Magician. Le boîtier a pour but d’être utilisé pour les travaux pratiques des étudiants de SAGI (Systèmes Automatisés et Génie Informatique). J’ai pour cela déjà à disposition un boîtier métallique vide, des interrupteurs et des LED.

Photo du robot Dobot Magician

Robot Dobot Magician

Communication avec le robot :
On peut connecter le robot à un ordinateur via un câble USB. Le constructeur fournit un logiciel « Dobot Studio » qui permet de programmer en python, les librairies (morceaux de code fournis par le constructeur) sont déjà installées et on peut faire bouger notre robot.

Le robot possède plusieurs connecteurs à l’arrière, certaines broches de ces connecteurs peuvent être utilisées pour envoyer du courant (peut allumer une LED) et d’autres mesurent si il y a du courant (sers d’interrupteurs).

Photo montrant les connecteurs du robot Dobot Magician

Connecteurs Dobot Magician

Les montages suivants permettent respectivement d’allumer une LED et de détecter l’état d’un interrupteur.

Schéma électrique du branchement d'une diode

Branchement diode

Schéma électrique du branchement d'un interrupteur

Branchement interrupteur

_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_

Construction du boîtier :
Le boîtier possède 4 interrupteurs et 5 LED. Pour les placer sur le boîtier j’ai percé les trous à la perceuse. Les interrupteurs tiennent au boîtier grâce à des écrous, les LED tiennent grâce à des supports en plastique. A l’arrière du boîtier il a fallu faire un trou rectangulaire, fait à la Dremel, pour faire passer le cable.
Les composants sont soudés à l’intérieur sur une plaque de soudure qui est elle-même collée à la glue dans le boîtier.

Vue de dessus du boîtier de commande

Boîtier de commande

Programme de démonstration :
Pour montrer comment fonctionne le boîtier et comment il peut être utilisé j’ai fait un programme de démonstration.

Diagramme fonctionnement du programme de démonstration

Diagramme fonctionnement du programme de démonstration

Déclaration des variables : Initialise toutes ces variables, c’est ici qu’on déclare quelles broches sont des LED et quelles broches sont des interrupteurs.
« Home » + allumage LED : Le robot lance une routine qui lui permet de bien placer son système de coordonnées. Pendant ce temps on allume les LED pour vérifier qu’elles fonctionnent.
Récupération de l’état des interrupteurs : Stocke la valeur de chaque interrupteur dans une liste pour l’utiliser plus tard.
Déplacement + Changement des paramètres : On fait faire ce que l’on veut au robot. Ici on déplace le robot entre plusieurs points et on change la manière dont il se déplace
Changement d’état des LED : Allume ou éteint les LED si besoin

_
_

Démonstration :

Conclusion :
Le boîtier fonctionne, même si il reste encore beaucoup de choses à améliorer, notamment le câblage au robot qui est pour l’instant trop complexe pour être utilisé en TP. Ce projet m’a permis de me familiariser avec l’électronique et j’ai beaucoup apprécié programmer le robot.

Merci à Jean Louis Boimond, mon professeur référent qui m’a guidé durant ce projet, et à Franck Mercier pour m’avoir appris à souder.