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

Caméra pour robot KUKA KRC3

image1

Fixer une caméra à un bras robot. Qu’est-ce que pourrait mal se passer?

Nous sommes Théotime Aubin et Antoine Grimault, notre objectif a été de fixer une webcam au bras robot KUKA et de lui faire détecter des objets sur un plan (fixe) défini au préalable.
La première étape a été de choisir l’emplacement de la webcam.

image2

  • On aurait pu choisir de fixer la caméra dans l’espace de travail du robot.
  • image3

  • Il était aussi possible de la fixer sur le côté du robot, et d’avoir une position de prise de vue différente de la position d’action.
  • image4

  • Enfin, on pouvait fixer la caméra directement sur la flasque du bras, avant l’outil.
  • Nous avons choisi la dernière option car ce système limite faiblement les mouvements du bras,
    et le repère de la caméra est “simple” à définir par rapport au repère de la flasque. C’est aussi plus facile de la fixer solidement ici.
    Il est possible que l’outil soit visible sur l’image, cela pourrait poser problème pour la détection des objets, mais d’après nos mesures cela a peu de chances d’arriver.

    Une fois ce choix fait, nous avons démonté la webcam pour n’en garder que l’électronique (PCB), puis modélisé un boitier sur SolidWorks que nous avons ensuite imprimé en 3D.

    Capture5
    Capture2


    Capture1
    Capture4


    Capture

  • Vient ensuite la phase deux… le traitement d’image :

  • Pour ceci nous avons décidé d’utiliser Python avec le module OpenCV sur un ordinateur séparé du robot. On a codé une application qui permet à l’utilisateur du robot d’avoir un retour vidéo pour calibrer la ‘‘visée’’, fait une détection de contour et donne les coordonnées d’un objet situé sur l’espace de travail défini au préalable, en convertissant au passage des pixels en millimètres.

    nnwn
    Capture6

  • Vient ensuite la phase trois… la programmation du robot :


  • Capture10

    Le but est simple. Le robot est capable de connaitre en temps réel la position de la flasque. Notre travail dans ce programme est de donner au robot les translations et rotations de repère afin de disposer des coordonner de la caméra en temps réel.

    Capture720210604_184736

    Après s’être bien creusé les méninges on finit par comprendre et ça donne un beau petit programme :



    Capture8

  • Conclusion :
  • Quand on fait tout fonctionner ensemble le robot est capable de localiser une pièce, en déduire ses coordonnées et la pointer. il aurait été possible d’aller un peu plus loin en communiquant directement les coordonnées au robot via une carte d’entrée sortie utilisant le protocole TCP/IP, mais celle ci a mis trop de temps a arriver.

    Capture9