IMA5 2019/2020 P26 : Différence entre versions

De Wiki de Projets IMA
(Semaine 2)
(Passage en trois roues et création de la pince et du lève palettes)
Ligne 286 : Ligne 286 :
 
* Un servomoteur à rotation continue. Il est utilisé pour la fermeture et l'ouverture de pince.
 
* Un servomoteur à rotation continue. Il est utilisé pour la fermeture et l'ouverture de pince.
  
 +
 +
Pour le système de lève palettes nous avons besoin d'un moteur supplémentaire pour entraîner une courroie permettant de faire monter et descendre la pince sur un axe linéaire. Nous décidons donc de repasser à une châssis à 3 roue afin de récupérer le moteur nécessaire. L'encodeur permet également de savoir à quelle hauteur se trouve la pince.
  
  

Version du 8 février 2020 à 18:32


Présentation générale

Description

Ce projet se déroule dans le cadre de la préparation a la compétition Euroskills en robotique mobile. Les Euroskills sont la déclinaison européenne de la compétition internationale Worldskills, considérée comme les jeux Olympiques des métiers. Tous les deux ans, pendant 3 à 4 jours, l'affrontent dans une cinquantaine de métiers les champions nationaux de l'ensemble des pays du continent européen.

Cette année nous sommes les représentant de l'équipe de France dans le métier robotique mobile qui permet de mettre en avant les avancés de la robotique dans le domaine industriel. Ce projet fait alors partie intégrante de notre entrainement et notre préparation à la finale européenne à Graz (Autriche) en septembre 2019. Il reprend le les objectifs du sujets de robotique mobile des Worldskills 2019 à Kazan (Russie).

Objectifs

Plan de l'usine dans lequel évolue le robot

Ce projet consiste à la réalisation d'un robot autonome mais aussi pouvant être télé-opéré, évoluant sur un terrain simulant une usine.

À partir de son point de départ, le robot doit être capable de se rendre aux différentes "Workstations" disséminées sur le plateau afin de recueillir un "Component carrier" puis de les emmener au stand de chargement. La particularité est que sur chaque "Workstation" est inscrit un code barre allant de paire avec celui de l'un des stand de chargement. Le "Component carrier" doit donc y être acheminé sans erreur. L'ordre dans lequel le robot doit se présenter aux workstations peut être soir définit au choix du compétiteur, soit définit par un tirage au sort.

Un fois tous les Components carriers aux stads de chargement, le code barre qui leur est associé indique le nombre de boule, la couleur et l'ordre dans lequel y doit être remplir. Les boules sont à disposition du robot dans des emplacements prévus à cet effet.

Préparation du projet

Cahier des charges

Contexte et définition du problème:

Le métier robotique mobile permet de mettre en avant les avancés de la robotique dans le domaine industriel.

Notre PFE consiste à s’entraîner pour la compétition Euroskills en réalisant le sujet de la compétition 2019 : Media:WSC2019_TP23_pre_EN.pdf


Objectif du projet:

Le but du projet est de concevoir un robot capable d’évoluer dans un environnement simulant une usine flexible. Dans cette usine, plusieurs machines peuvent réaliser des opérations sur un produit en cours de fabrication.

Il est donc nécessaire de déplacer le produit d’une machine à une autre pour compléter sa fabrication. L’organisation du terrain est connue, ses dimensions sont de 4x2m, il est intégralement entouré de murets, le sol est globalement plat mais comporte une zone avec dénivelé. Les positions possible des machines sur le terrain sont prédéfinies, cependant l’assignation des numéros des machines est faite aléatoirement.

Le robot devra être capable de se localiser et se déplacer dans cette environnement. La reconnaissance des machines se fait de manière visuelle via des codes barres et le robot devra comporter un manipulateur adapté au déplacement des balles représentant les produits. Une contrainte étant que les machines ne sont pas toutes situées à la même hauteur sur le terrain.

Une première étape sera de réaliser la tâche de production de manière téléopérée, ensuite le robot devra être capable de produire de manière autonome. Le robot sera construit en utilisant les éléments du kit fourni, comprenant des éléments structurels, ainsi que les actionneurs (motoréducteurs, servomoteurs), les capteurs (capteurs de distances, codeur de moteurs…), et l’électronique de commande (cartes d’interfaces, circuit de puissance pour le moteurs...) nécessaires à la réalisation de la tâche. Le robot sera commandé par un MyRIO de National Instruments programmé, principalement, en LabView.

Choix techniques : matériel et logiciel

Éléments du kit Studica Worldskills

La majorité du matériel et de logiciels utilisés lors de la compétition sont imposés par le sujet. L'ensemble du matériel doit provenir du kit fournit à savoir le kit STUDICA édition Worldskills.

Voici une liste des principaux éléments:

  • Contrôleurs
    • Contrôleur MyRio de National Instrument équipé d'un FPGA Xilinx et d'un processeur double cœur ARM Cortex-A9 ainsi qu'un support Wifi. La plateforme de programmation imposée est donc LabView avec les librairies MyRio et les librairies fournies par le constructeur.
    • Carte d'I/O et contrôleur moteur MD2 permettant le branchement facile des différents capteur et actioneurs
  • Capteurs
    • Accéléromètre 9 axes NavX
    • 2 Capteurs de distance ultrasons
    • 2 Capteur de distance infrarouges SHARP
    • 1 capteur de lignes
    • Webcam HD
    • Manette filaire Logitech F310
  • Actionneurs
    • 4 Moteurs à courant continus équipés d'encodeurs
    • 3 servomoteurs
  • Mécaniques
    • Lots de différentes pièces de métal servant au montage du robot
    • Engrenages, courroies, glissière linéaire...
    • Vis et écrous
    • 4 roues omnidirectionnelles
    • Pièces imprimées en 3D possibles

Liste des tâches à effectuer

Hardware :

  • Tester et choisir la meilleur forme de châssis
  • Montage du bras
  • Conception de la piste WorldSkills Kazan 2019
  • Electronique/Câblage
    • Acheter un convertisseur de tension pour une alimentation de tous les composants stable
    • Organiser les câbles
    • Annoter les câbles (utiliser des couleurs différentes en fonction de la tension)
    • Sécurité du montage électrique (pochette batterie, fusible, gaine thermo, ...)


Software

  • Connecter le robot en Wifi (téléversement et contrôle a distance)
  • LabView
    • Découvrir LabView
    • Comprendre/Utiliser les librairies myRio et Robotics
    • Utiliser du code C dans LabView
  • Odométrie
  • Localisation et suivie de trajectoire (Planification de trajectoire)
  • Détection de couleur avec la camera
  • Détection de code barre


Gestion de projet

  • Définir une méthode de travail
  • Déterminer un nom de robot
  • Trouver une salle de travail

Calendrier prévisionnel

Etat de l'art

Le métier robotique mobile est apparue pour la première fois dans la compétition Worldskills en 2013 a Leipzig (Allemagne). C'était alors deux anciens IMA Polytech Lille, Florent CHRETIEN et Mélanie LELAURE, qui s'étaient qualifié pour les phases finales mondiale.

Dans les premières années les robots utilisés étaient des Robotinos, suite à un partenariat se sont maintenant des robots Studica qui sont utilisés depuis 2015.

Réalisation du Projet

Prélude

PROMEO, découverte du kit

Stage de découverte/formation PROMEO Beauvais

Le 18 et 19 décembre 2019, nous avons été invité avec notre expert métier, Florent CHRETIEN, a PROMEO pour découvrir le kit "Studica Worldskills". Pendant ces deux jours nous avons pu faire un inventaire des pièces du kits, installer LabView et toutes les librairie utile à l'utilisation du myRio, ainsi qu'un premier châssis a trois roues et les testes moteurs.

On remercie PROMEO de nous avoir accueilli et de nous prêter un kit pour commencer la préparation et le PFE dès la rentrée.

Semaine 1

Rencontre avec Vincent Coelen

Rencontre avec notre tuteur école, Vincent Coelen, pour cadrer et définir le sujet de PFE, le sujet reprend les objectifs du sujets de robotique mobile des Worldskills 2019 à Kazan (Russie).

On discute organisation, préparation et on liste le matériel manquant au vue d'une prochaine commande. On planifie une après midi de formation LabView avec lui dans la semaine.

Trouver une salle de travail

... ...

Gestion de projet, définir une méthode de travail

Un projet de fin d'étude, se doit d'être réalisé de la façon la plus professionnelle possible, c’est-à-dire en suivant une méthode de gestion de projet.

Après discussion avec notre expert métier, il serait préférable d'adopter une gestion de projet dite "Agile", qui consiste a livrer toutes les semaines un produit opérationnel, en rajoutant à chaque fois de nouvelles fonctionnalités. Ce type de gestion de projet a plusieurs avantages:

  • Permet d'avoir un logiciel et un robot opérationnel tout au long du projet
  • Avoir une grande adaptation au changement (essentiel quand l'on sait que 30% du sujet change le jour de la compétition)
  • Avancer par petits objectifs, les valider, s'adapter en fonction de la situation du moment, et ainsi de suite jusqu’à la fin du projet


TRELLO, gestion de projet

Pour nous aider dans l'organisation du projet, nous avons mis en place plusieurs outils:

  • Microsoft TEAM: on a une équipe qui regroupe notre tuteur école, notre expert métier, ainsi que d'anciens compétiteurs français. On partage donc nos avancées, nos interrogations et récupère les retours/expériences des anciens compétiteurs.
  • TRELLO: nous permet de gérer le projet, et les tâches en équipe, nous l'utilisons pour planifier et organiser tout notre travail. Chaque colonne représente un état du projet, dans lequel on glisse des "cards" qui représente une taches à réaliser. On peut donc, pour chaque aspect d’un projet, laisser nos commentaires, répartir nos tâches, centraliser des informations et suivre l’état d’avancement.
  • Drive: Pour stocker et partager rapidement tous nos fichiers. Synchronisation et partage automatique de notre dossier de compétition, stocké sur nos PC respectif.


Pour continuer dans la gestion de projet dite "Agile", la livraison d'un produit opérationnel par semaine est simulée par un feedback en fin de semaine à notre expert métier et tuteur école.

Construction du châssis

Le choix de la forme:

  • Forme ronde: Si le terrain est semé d’embûche et très anguleux, il vaut mieux privilégier une forme ronde. Mais il devient alors plus difficile de trouver de la places pour la mécanique de mobilité et l’électronique avec cette configuration.
  • Forme rectangulaire, anguleuse: Plus pratique pour la disposition et l'aménagement de ce qui se trouvera a l'intérieur du robot. Mais plus large qu'une forme ronde.


4 roues

Disposition et nombres de roues:

Le kit Studica fourni des roues omni-directionnelles, une grande quantité de placement de roues différents s'offre donc a nous.

a continuer

Formation LabView

Vincent Coelen, nous a montré les bases de LabView:

  • Le mode de fonctionnement de LabView
  • Le câblage d'objet
  • La création de constante, bloc de contrôle et indicateur
  • Les raccourcis
  • Le débogage
  • La fenêtre d'aide
  • etc...

On a maintenant les connaissances de base pour commencer à créer nos premiers VI.

Alimentation câblages et sécurités électrique

Alimentation:

Table d'alimentation
Tension (Volt)
Batterie 12V (3000mAh)
Carte Moteurs portA (MD2) 12V
Carte Moteurs portB (MD2) 12V
Servomoteur portA 5V
Servomoteur portB 5V
Camera 5V (USB du myRio)
Sensors 5V

Dire prendre tension converter/dispatcher


Câblages, connecteurs Wago et panneau d'alimentation

Câblages et sécurité

Pour le câblage, on a adopter un code couleur pour se repérer entre tous les fils, le noir est pour le GND, le rouge le 12V et le bleue le 5V. On réfléchie à ajouter un système d'étiquettes sur chaque câble pour un branchement sans erreur pendant le stresse de la compétition.


Pour une connexion et déconnexion rapide et facile entre les fils en phases de testes on a opté pour des connecteurs "Wago".


Le panneau de gestion d'alimentation a les fonctionnalités suivantes:

  • Bouton d’arrêt d'urgence, qui coupe toute l'alimentation du robot
  • Deux interrupteurs, pour mettre sous tension ou non l'alimentation des cartes moteurs, et des servomoteurs.
  • Deux leds témoin, indiquent la mise sous tension du robot ou des erreurs dans l'exécution du programme
  • Un bouton poussoir pour lancer le programme


Nos premiers codes VI

Testes de tous les actionneurs



Contrôle du robot a la manette

...

Semaine 2

Conception de la piste WorldSkills Kazan 2019

Reconstitution piste Kazan 2019

Pour se préparer au mieux, nous avons du reconstruire à l'identique une des sept "usines" du sujet Worldskills Kazan 2019. Les six autres sont composées du même nombre de composants (Workstation, Balles, Component Bins, Component Carriers,...) et donc facilement une fois la première piste constuite.

Grâce au plan fournit dans le sujet et à l'aide du menuisé de Polytech en quelques jours la piste était prête.

Le gros avantage de cette piste, est qu'elle est modulable et démontable très facilement. Le revêtement au sol est un bout de 8m^2 de lino (facile à rouler sur lui même). Chaque composants de la piste possède sa marque au sol numérotée pour un placement précis et rapide lors du montage. Les murs sont démontables rapidement grâce à leurs attaches rapide imprimés en 3D.

Odométrie 4 roues

L'odométrie est un élément essentiel dans les déplacements du robot. Elle permet de demander au robot d'avancer dans une certaine direction d'un certain nombre de centimètres. Pour cela nous disposons d'encodeurs sur nos moteurs permettant en fonction du nombre de ticks par révolution, et du rayon de la roue, d'obtenir la distance parcourue par cette roue. L'architecture du robot holonome étant particulière, il est nécessaire d'établir des équations permettant de calculer la distance à parcourir par chaque roue.

distance = sqrt(pow(distance_x,2)+pow(distance_y,2));

theta = acos(distance_x / distance);

dist_encodeur1 = distance  * sin(theta - 3*PI/4);
dist_encodeur2 = distance  * sin(theta - PI/4);
dist_encodeur3 = distance  * sin(theta + PI/2);


dist_encodeur1 = distance  * sin(theta - 3*PI/4);
dist_encodeur2 = distance  * sin(theta - PI/4);
dist_encodeur3 = distance  * sin(theta + PI/2);
dist_encodeur4 = distance  * sin(theta + 3*PI/2);


Passage en trois roues et création de la pince et du lève palettes

Après avoir établit un châssis solide et les différentes commandes de roues, il est temps de penser à la fabrication d'un prince est d'un bras pour saisir les balles puis de remplir et transporter les "Component Carriers".

Un premier prototype de pince est réalisé avec les pièces du kit. Il est principalement composé d'un servo-moteur sur lequel est fixé une roue dentée qui entraîne le déplacement de 2 rails permettant d'ouvrir ou de fermer la pince. Cependant la préhension d'une balle est très difficile avec les pièces fournies. Nous avons donc dessiné et imprimé en 3D qui est un moule partiel d'une balle, permettant une bien meilleure prise. Elle est également assez fine pour pouvoir passer en dessous des "Component Carriers".

Pour le servomoteur nous disposons d'un exemplaire de 3 types:

  • Un servomoteur asservit en position entre -135° et +135°. Il est utilisé pour basculer la webcam en position de lecture de code bar, ou en position prise de balle
  • Un servomoteur à fort couple pouvant être être asservis en rotation continue ou en position jusqu'à 3 tour et demi. Nous avons besoin d'un servomoteur asservis en position pour disposer d'un capteur pouvant pivoter dans différentes positions.
  • Un servomoteur à rotation continue. Il est utilisé pour la fermeture et l'ouverture de pince.


Pour le système de lève palettes nous avons besoin d'un moteur supplémentaire pour entraîner une courroie permettant de faire monter et descendre la pince sur un axe linéaire. Nous décidons donc de repasser à une châssis à 3 roue afin de récupérer le moteur nécessaire. L'encodeur permet également de savoir à quelle hauteur se trouve la pince.


Semaine 3

Amélioration du chassis

Utilisation du gyroscope NavX

Odométrie 3 roues régulées

Test capteur Sharp

Cable management

Semaine 4

Pièces en 3D

En ce tout début de semaine nous avons imprimé en 3D les différents supports pour les capteurs ultrasons afin de les disposer sur le robot. Nous avons dessiné un nouvel élément afin d’accueillir un end-stop étant capable d'identifier l'état d'ouverture de la pince. Dans l'esprit de toujours améliorer le câblage du robot nous avons également imprimé un modèle de chaîne passe-câbles permettant de cacher et de contenir l'ensemble des câbles de la pince (des servos moteurs et des fin de couses) tout en ne gênant pas la montée et la descente du bras.

Algorythmes de suivi de mur/ligne

Grâce à ces nouveaux capteur nous pouvons commencer à réaliser un algorithmes permettant un suivit de mur. pour ce faire nous utilisons le capteur à ultrasons situé du coté du mur à suivre à l'avant du robot ainsi que le capteur infrarouge à l'arrière que nous orientons vers le mur grâce au servomoteur. La différence de distance entre les deux capteurs permettent de maintenir le robot parallèle au mur, et la distance moyenne des 2 sert de référence pour maintenir une distance voulue entre le robot et le mur. 2 régulateurs PID sont donc nécessaires pour stabiliser le robot.

Un capteur de ligne a également été ajouté au robot permettant un suivit de ligne et le recalibrage du robot sur une courte ligne comme celles présentes sur les component carrier du terrain.

Fonctions de gestion du bras et de la pince

Pour automatiser le robot le plus simplement possible, il était nécessaire de créer des fonctions (Sub VI) pour la gestion du bras et de la pince. L'utilisation de deux Sub VI de reset pour le bras et pour la pince nous permette de réinitialiser à zéro l'encodeur du moteur du bras (on descend le bras jusqu'à l'activation du EndStop, puis on reset a zéro l'encodeur moteur bras). Le servomoteur de la pince est un servo commandé en vitesse donc, on le réinitialise en le fermant pendant 1,5 secondes (temps max qui lui faut pour se fermer).


Ensuite le bras peut glisser de 0 à 22cm de hauteur, la hauteur du bras est retourné par l'encodeur moteur, donc il est facile a commander en position. L'ajoue d'un PID le rend encore plus précis.

Pince avec sélection d'ouverture grâce au EndStop

Etant donné que la pince est géré par un servo commandé en vitesse, on ne peut pas choisir l'ouverture exacte de la pince. Un EndStop et des butées judicieusement bien placées, nous permette de commander trois ouverture de pince : "Pince fermé", "Pince middle", "Pince full"


Problèmes rencontrés

Les principales problèmes rencontrés depuis le début du PFE sont l'alimentation des divers composants.


La tension de la batterie

La tension de la batterie oscille entre 14,5V et 11,5V entre son état chargé/déchargé. Solution: Dans un premier temps nous avons mis un abaisseur de tension a 12V pour avoir une tension constante a l'entré des cartes d'alimentation des moteurs et du MyRio. Mais au vu des courant qui peuvent aller jusque 3,5A l’abaisseur a fini par griller. En fin de semaine trois nous avons reçu un module de régulateur de tension :WSR Voltage Regulator Module qui une fois connecté a la batterie possède 8 sorties:

  • (2) 5V output; 500mA limit
  • (2) 5V output; 2A limit
  • (2) 12V output; 500mA limit
  • (2) 12V output; 2A limit


Alimentation de composants en 5V

Certains composants, comme les servomoteurs et capteurs ont besoin d'une alimentation de 5V

Tracking de balles

La saisie d'une balle dans les emplacement prévu à cet effet n'est pas une étape aussi facile qu'on pourrait le penser. En effet les balles ne se situent pas à un endroit précis mais dans une zone rectangulaire, il est donc impossible de les attraper par simple odométrie. Une reconnaissance et un suivi par caméra est donc indispensable. Afin d'identifier une balle sur une image plusieurs traitements d'images seront nécessaires.

Calibration RGB du filtrage colorimétrique
  • Seuil colorimétrique:

Les balles étant colorées et le sol étant de couleur clair, elles peuvent facilement se démarquer en analysant la valeur colorimétrique des différents pixels de l'image. La première étape pour localiser une balle orange est donc de binariser l'image en mettant à 1 les pixels correspondant à de l'orange et à 0 les autres. Il faut donc définir ce qu'est la couleur orange, pour ce faire il faut relever son code RGB. Cependant la luminosité ambiante peut varier, et les ombres sur la balle peuvent changer cette valeur. Il est donc important de ne pas prendre des valeurs discrètes mais plutôt des plages de valeurs couvrant l'ensemble des combinaisons RGB pouvant être originaire de l'élément à reconnaître. Sur l'image de calibration des seuils RGB ci-contre nous avons sélectionné une zone de l'image dans laquelle se trouve uniquement la balle et affiché l'histogramme de cette zone. Cela permet de réglé facilement les seuils en prenant en compte les variations de couleur. Nous laissons tout de même une marge d'erreur dans nos réglages afin d'être insensible à des potentiels variations de luminosité ambiante. Comme vous pouvez le voir sur l'image binarisée les balles sont parfaitement identifiables.

  • Filtre de particules:

Le seuil colorimétrique n'est pas parfait, il peut alors apparaître dans des environnements peu propices ou peu lumineux des pixels éparpillés étant identifié comme étant de la couleur de la balle. Afin d'éliminer ce bruit nous appliquons un filtre qui identifie les formes dans l'image selon une connexité 4/8 et élimine toutes celles de petite surface.

  • Remplissage des trous:

Comme nous pouvons le voir sur les images, les balles possèdent des écritures qui ne sont par reconnues comme "orange". Cela crée des trous dans l'image binaires qui sont remplis grâce à cet algorithme afin d'uniformiser la zone.

  • Reconnaissance de cercles:

Cette dernière fonction permet d'identifier des formes circulaires dans l'image, qui correspondent ici à nos balles. Elle renvoie le rayon et les coordonnées dans l'image du centre des cercle.

Processus de reconnaissance de balles


Documents Rendus