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