IMA5 2019/2020 P26 : Différence entre versions

De Wiki de Projets IMA
(Semaine 5)
(Fonctions de gestion du bras et de la pince)
Ligne 336 : Ligne 336 :
  
 
=== Fonctions de gestion du bras et de la pince ===
 
=== Fonctions de gestion du bras et de la pince ===
 +
[[Fichier:Pince_P26.jpg|300px|thumb|right|Pince avec sélection d'ouverture grâce au EndStop]]
  
 
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).
 
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).
Ligne 342 : Ligne 343 :
 
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.  
 
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.  
  
[[Fichier:Pince_P26.jpg|300px|thumb|right|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"
 
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"

Version du 17 février 2020 à 10:36


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

Durant cette semaine nous continuons d'améliorer le châssis du robot en renforçant les liaisons les plus sensible. Nous tentons également de réduire les dimensons du robot au sol. Plus il sera court et étroit, plus facilement il pourra évoluer sur la piste.

Utilisation du compas NavX

Le kit nous met à disposition un capteur appelé NavX. Ce dernier est un accéléromètre 9 axe et magnétomètre permettant de mesurer le lacet, le roulis et le tangage du robot de manière très précise. Il possède une dérive du lacet jusqu'à 1 degrés par minute, ce qui est négligeable pour notre utilisation.

La mesure du lacet nous permet alors de programmer une fonction de rotation du robot performante se basant sur la position réelle du robot. Nous pouvons alors nous affranchir de la rotation par odométrie qui posait énormément de problèmes dû au dérapage potentiel des roues. La mise en place d'un régulateur PID permet d'atteindre de manière rapide et précise un angle voulu. Nous couplons également une régulation du lacet dans diverses fonction comme le suivit de balle et les fonctions de déplacement afin d'éviter la dérive du robot et qu'il maintienne son cap.

Test capteur Sharp

Principe de fonctionnement d'un capteur Sharp

Pour commencer il faut savoir qu'un capteur Sharp (nom de la marque) est un capteur de distance infrarouge. Ce dernier émet grâce à une led infrarouge un signal lumineux invisible de l'oeil humain. Ce dernier va être réfléchi par l'obstacle puis reviendra vers le capteur avec un angle d’incidence variant en fonction de la distance de l'obstacle. Avec une lentille, et une bande photoréceptrice, le capteur permet de détecter cet angle d'incidence avec lequel nous pourrons calculer la distance.

Pour pouvoir utiliser le capteur Sharp nous avons besoin de traduire ce que renvoie le capteur en centimètres. En effet la tension retranscrite par ce capteur n'est pas proportionnelle à la distance. Une courbe caractéristique (Tension en fonction de la distance) est fournie dans la datasheet mais l'équation n'est pas fournie et nous préférons la mesurer par nous même. De plus il existe de nombreux type de capteurs Sharp et même si la forme est semblable, chacun a une courbe caractéristique qui lui est propre. Pour cela nous avons effectué plusieurs mesures en mettant un objet à différentes distances du capteur (de 0cm à 50cm). Le but est d'obtenir une équation traduisant la tension du capteur en distance en centimètres.

Cable management

Devant l’entremêlement des tous les câbles des actionneurs et capteurs du robot nous ne distinguions plus lequel était relié à quel élément. Nous avons donc prit deux jours pour tout débrancher et rassembler les différents fils dans des gaines passes câbles. Chacun est étiqueté pour identifier via un code couleur à quel servomoteur ou moteur il appartient. Les gaines sont quant à elles solidement fixées sur le robot à l'aide de serres-câbles. Nous avons également différencié le 5V du 12V par l'utilisation de câbles de couleur différente.

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.

Algorithmes 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

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

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.


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 et au faite qu'on ne puisse pas enchaîner plusieurs SubVI d'affilés sans que le robot nous retourne un problème de mémoire saturé.


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. Au début nous recéperions directement le 5V sur le MyRio. Mais au fur et a mesure que le nombre d'actionneur sur 5V étaient ajoutés, on avait de plus en plus de problèmes d'alimentation. Du forcément à un manque de puissance du MyRio. A la réception du régulateur de tension, nous avons pu les brancher sur les sortie 5V 2A.


Mémoire saturée

Ce problème de mémoire est persistant depuis nos premiers enchaînement de SubVI. Indépendamment chaque SubVI fonctionne mais rapidement des qu'on enchaîne deux a trois sous programmes le robot est tout de suite saturé en mémoire.

Solutions envisagées: simplifier nos SubVI, contacter Guillaume (de Polytech Montpellier) qui a déjà travaillé sur ce robot pour les Euroskills 2018

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


Semaine 5

Réception et installation du nouveau matériel

En ce début de semaine nous avons reçu du nouveau matériel permettant de résoudre certains de nos problèmes.

Nous disposons à présent d'un module de point d'accès sans fil. Nous l'avons configuré afin d'améliorer grandement la communication entre le myrio et l’ordinateur avec un wifi Dual Band à 1.17 Gbps. Nous pouvons à présent réaliser du streaming vidéo pour une vue à la première personne du robot avec une cadence de 30 images par secondes. Il a également permit de résoudre les coupures intempestive de la communication avec le myrio en instaurant une communication beaucoup plus stable.

Le second élément est un régulateur de tension. Auparavant nous avons rencontré de nombreux problèmes au niveau des alimentations qui perturbaient le bon fonctionnement du robot. Les différents servomoteurs doivent être alimentés en 5V via une entrée sur les cartes MD2. Or, sans régulateur nous connections cette entrée à la sortie 5V du myRio qui n'arrivais pas à sortir assez de courant pour faire fonctionner tous les moteurs en même temps. Le deuxième problème majeur était un pic de chute de tension liée à l’activité des moteurs qui provoquait le redémarrage du myRio. Grâce au différentes sorties 5V et 12V du régulateur, l'ensemble de ces problèmes ont été résolus.

Algos de déplacement du robot vers les workstations

Algos de remplissage de component carriers

Algos de lecture de code bar

Le module 'vision' de LabView permet la lecture de code bar via plusieurs réglages. Pour que cela puisse fonctionner sur le MyRio sans problème de mémoire et rapidement. La camera a été mise en noir et blanc avec une qualité réduite et un FPS bas à 7,5 Frame/second. Un même code bar est lu plusieurs fois et si et seulement si il est lu trois fois de suite avec le même code alors il est considéré comme correcte. et le rebot passe à sa tâche suivante.

Semaine 6

Résolution du problème de mémoire

Nouvelle pince ergonomique

Beaucoup plus fine que sa version précédente, elle se glisse plus facilement entre les balles notamment lorsque les six balles sont présente dans la 'Bin'

Semaine 7

Documents Rendus