NAO suit une ligne

Résumé

Ce projet a été mené à bien par Stephane CAMUSSO et .

Le but du projet est de réaliser un suivi de ligne via un robot NAO.

Pour réaliser ce projet nous avons utilisé les éléments suivants :

  • Un robot NAO
  • Le logiciel Choregraphe d’Aldebaran
  • Le langage de programmation python
  • Les librairies pour python pour le traitement d’image

 

Read More


Suiveur Ligne / Gestion de Stock

Abstract

Ce projet a été réalisé par Alexandre COLICCHIO et Loïc MONJOUSTE, élèves en DUT GEII par apprentissage (resp. Electro Ohms et PSA Peugeot-Citroën).

Introduction

La chaîne de production miniature Festo étudiée en Travaux Pratiques (TP) d’automatisme et de supervision permet de différencier, à chaque étape, les « bonnes » pièces (qui correspondent au gabarit prévu) des « mauvaises ». Cependant, aucun système automatisé n’est prévu pour retirer les « mauvaises » pièces de la chaîne. C’est pourquoi, il est nécessaire de créer un tel système.

Présentation du Sujet

Alors qu’un bras robotisé (actuellement fictif et non étudié dans le projet) retire les pièces imparfaites de la station Festo du palpeur (cf. Fig.1) pour les poser dans un stock, un second robot (suiveur de ligne) aura pour tâche de récupérer, une à une, chaque pièce afin de les entreposer dans un nouveau stock en début de ligne. Un autre bras robotisé (non étudié) pourra récupérer la pièce et la réintroduire en début de chaîne sur la station de distribution (cf. Fig.2).

Palpeur
Fig.1 : Station de perçage

Distributeur
Fig.2 : Station de distribution

Cahier des Charges

Les fonctions du stock de pièces :

Gérer le stock : Image :
Cette carte ne gère que la partie liée au stock en milieu de chaîne. C’est elle qui fait le lien entre le détecteur de présence pièce et l’émetteur FM. Funduino Uno
Choix :
Arduino est une marque fiable pour les circuits électroniques programmables. Les produits proposés sont à des prix abordables pour de petits projets. De plus, les constructeurs revendiquent la liberté de droits de leurs produits. Il n’est donc pas difficile de trouver de l’aide pour la programmation. Pour cette fonction (gérer le stock), les besoins en nombre d’entrées et de sorties étant faible (1 entrée et 1 sortie numériques), le petit modèle (14 E/S numériques) est suffisant pour apporter la gestion nécessaire.
Détecter les pièces à déplacer : Image :
Le stock est équipé d’un capteur fin de course normalement ouvert afin de détecter la présence de pièce(s) en attente. Au moment où une pièce appuie sur le capteur, celui-ci se ferme et laisse alors passer la tension d’alimentation de cinq volts jusqu’à la carte de gestion du stock. Findecourse
Choix :
Les capteurs à fin de course sont les plus basiques capteurs de présence d’obstacle. Ainsi, les prix sont extrêmement faibles alors que leur fiabilité est prouvée. En outre, il est possible de choisir le mode de fonctionnement (Normalement Ouvert ou Normalement Fermé).
Communiquer avec le robot : Image :
Le stock en milieu de ligne possède une station FM (Modulation de Fréquence) émettrice. A partir de l’information de la fonction de détection de pièce à déplacer, le transmetteur envoie un signal binaire modulé en 2FSK (2 Frequencies Shift Keying) à la station FM réceptrice se trouvant sur le robot. Lorsque le robot reçoit un « 1 » logique, la carte de gestion du robot interprète cette information et débute le mouvement en direction du stock en milieu de ligne. Emetteur FM
Choix :
Le robot doit recevoir une information à propos de l’état du stock. La première solution serait de relier le robot au stock à l’aide d’un câble. Cependant, bien que ce soit le moyen le moins onéreux, la connexion filaire implique énormément d’encombrement pour le robot : enroulement, écrasement du câble, etc. Il faut donc trouver une technologie sans fil et à des prix convenables. La modulation de fréquence est un bon choix puisque la transmission est protégée du bruit environnant sur la faible distance à parcourir. Par ailleurs, le signal à transmettre étant numérique, les changements d’état peuvent être extrêmement rapide, ce que la modulation de fréquence peut gérer.

 

Les fonctions du robot :

Gérer les entrées et sorties du robot : Images :
C’est le cerveau du robot. En effet, la carte Arduino contient la gestion complète des actions que doit entreprendre le robot en fonction des différents paramètres qu’il reçoit grâce aux capteurs. L’avantage de Arduino est que le logiciel est Open Source et facile d’utilisation. Ainsi, des millions de personnes partagent leurs programmes et idées afin d’aider les utilisateurs à traiter des fonctions. De plus, la carte est adaptative à divers systèmes. Dans notre cas, l’alimentation et le contrôle des moteurs de roues se font à partir d’un module moteur connecté à la carte. Arduino MEGA 2560
Motor Shield
Choix :
De même que la carte de gestion de stock, la carte choisie est de marque Arduino. On lui ajoute un module moteur (Motor Shield) afin de pouvoir y connecter et gérer les moteurs. Cette fois-ci, nous disposons d’un plus large panel d’entrées et sorties puisqu’il y a plus de périphériques à contrôler.
Communiquer avec le stock : Image :
Le robot doit recevoir l’information en provenance du stock pour démarrer son cycle de fonctionnement. Il est alors nécessaire de se doter d’un récepteur FM. Recepteur FM
Choix :
Il est nécessaire de choisir un récepteur en FM configuré à la même fréquence que l’émetteur. Ensuite, selon le codage de l’information par le transmetteur, le récepteur doit pouvoir comprendre et décoder cette information.
Se déplacer : Images :
Un système à trois points de contact au sol a été choisi avec l’utilisation de deux roues motrices et d’une bille libre. Cette dernière permet au robot de rester en équilibre. Les rotations sont effectuées à l’aide des roues motrices : une roue est à l’arrêt pendant que la seconde continue son mouvement. Les roues sont entraînées par des moteurs asynchrones. Roues motrices
Bille
Choix :
Les moteurs ont été récupérés sur un ancien robot, ce qui rend parfait le côté financier du déplacement du robot. De plus, la puissance est correcte par rapport au poids du robot (non négligeable).
Détecter la ligne : Image :
Les deux phototransistors à l’avant du robot permettent de détecter la ligne noire que le robot doit suivre. Selon le contraste de la surface observée, les phototransistors envoient une information numérique à la carte de gestion. Phototransistor
Choix :
Différentes technologies permettent de détecter une ligne (capteur de couleur, capteur à ultrason, etc.). La ligne étant sombre et la surface autour claire, un capteur de contraste permet de différencier la ligne du sol à moindre prix. L’inconvénient est que le capteur est très sensible à la luminosité extérieure. Il faut donc isoler les capteurs de l’environnement parasite.
Détecter le stock : Image :
Le robot ne doit en aucun cas entrer en collision avec la structure du stock. C’est pourquoi, il est nécessaire de mesurer la distance séparant le robot du stock jusqu’à ce qu’il se trouve à la place prévue. Capteur ultrason
Choix :
Il existe plusieurs technologies pour mesurer des distances, mais son (émetteur à ultrasons) cône de détection est plus grand, ce qui est utile lorsque les capteurs ne sont pas directement en face de l’obstacle à mesurer. De plus, son prix est convenable et sa détection par rapport à une surface connue reste fiable selon l’inclinaison. Enfin, la distance maximale est d’environ 2,5 mètres. Cette distance est très largement suffisante puisqu’on ne travaille que sur 5 centimètres maximum.
Récupérer la pièce : Images :
Une pince placée à l’avant du robot permet de prendre la pièce et la garder entre ses deux « doigts » le temps du trajet jusqu’au stock en début de ligne. Un capteur de fin de course est présent au fond de la cavité de la pince afin de s’assurer de la présence de la pièce attrapée. Pince
Servomoteur
Choix :
La pince a été créée par impression 3D à partir d’un modèle sous SolidWorks. Son coût de fabrication est dérisoire et les modifications à y apporter peuvent être faites facilement. En outre, la résistance du matériau rigide reste suffisante pour maintenir une pièce. Le servomoteur est directement adapté à la commande par carte Arduino et fonctionne en pas à pas. Le degré de liberté est de 180°, ce qui est suffisant pour commander la pince à l’ouverture complète et à la fermeture.

Etude des fonctions

Détecter les pièces à déplacer :

Le stock est un tube vertical ouvert à sa base (cf. Fig. 3). Ainsi, les pièces déposées, par la force d’attraction gravitationnelle, se placent directement à la sortie du stock. Le capteur fin de course, déclenché par l’appui de la pièce, est placé à la sortie. Câblé en normalement fermé, le capteur n’envoie aucune tension tant qu’il n’est pas activé. A l’activation, le capteur est ouvert : la tension d’alimentation est directement reliée à l’entrée de la carte de gestion du stock à une résistance de tirage près (cf. Fig. 4).

schema stock
Fig.3 : Stock en milieu de chaîne

Cablage FdC
Fig. 4 : Schéma de câblage du Fin de Course

Communiquer avec le robot :

L’information de présence de pièce reçue, la carte de gestion ne retient que le front montant de ce signal pour mettre à jour le signal numérique de sortie. La carte de gestion du stock envoie la lettre « a » (16#97) au robot afin de palier à tout problème de perturbations parasites. Ainsi, le code hexadécimal de « a » aura moins de chance d’apparaître par du bruit qu’un simple état logique haut. Le transmetteur module en fréquence (434MHz) les états logiques. Ainsi, un état bas aura une fréquence de modulation f0 alors que l’état haut sera modulé à une fréquence f1 (cf. Fig.6). L’antenne a été dimensionnée de façon à ne pas avoir de retour d’onde qui pourrait dégrader l’émetteur. Le calcul de la longueur de l’antenne se porte sur un cas de moitié d’onde (cf. Fig.7).

Calcul f0 f1
Fig. 6 : Calcul des fréquences du signal modulé

Calcul antenne
Fig. 7 : Taille de l’antenne

Communiquer avec le stock :

A ce moment, le récepteur FM placé sur le robot reconnaît la fréquence d’émission de 434MHz et la décode. On mesure, sur la patte de sortie numérique, les états haut et bas qui ont été émis (cf. Fig.8). Nous apercevons, cependant un problème d’impulsions indésirables en début de réception (cf. Fig.9). Ce problème peut facilement se résoudre à l’aide d’un filtre analogique passe-bas composé d’une résistance et d’un condensateur (cf. Fig.10). Les signaux reçus pendant le fonctionnement réel du robot sont sur une grande période (environ 1 seconde), donc les hautes fréquences peuvent être atténuées sans porter atteinte aux fonctionnalités utilisées. On remarque qu’en moyenne, la période d’une impulsion intempestive est d’environ 12,5ms. On en déduit une fréquence de 80Hz. On peut alors trouver les valeurs de R et C afin de lisser ces impulsions (cf. Fig. 11).

TX RX oscillo
Fig. 8 : Signal émis et signal reçu

Probleme reception
Fig. 9 : Aperçu d’oscillations en début de réception
Filtre Passe-Bas
Fig.10 : Filtre passe-bas

Calcul RC
Fig.11 : Calcul des éléments du filtre

Se déplacer :

Les moteurs sont alimentés par une batterie externe de 15 volts et connectés sur le module moteur de la carte de gestion du robot. La carte envoie l’information aux moteurs du sens de rotation et de la vitesse souhaitée selon la situation du robot. En effet, la carte Arduino (via le Motor Shield) envoie une valeur analogique (PWM) qui gère l’intensité reçue par les moteurs.

Détecter la ligne :

Les capteurs de contraste sont composés d’une LED (lumière invisible à l’oeil nu) et d’un phototransistor. Selon la réflexion de la lumière provenant de leur LED, la valeur numérique en sortie des capteurs est plus ou moins élevée. Sur une surface claire, les phototransistors renvoient une valeur faible (entre 0 et 100) alors que la valeur augmente lorsque le contraste est plus sombre (aux alentours des 800). Connectés à la carte de gestion, le robot « sait » s’il tente de franchir la ligne ou s’il est sur la bonne voie. Les capteurs sont très proches de la surface à observer puisque leur portée est de 3mm. En outre, deux LEDs blanches ont été ajoutées (cf. Fig.12) afin d’éclairer la surface et réduire les erreurs de contraste dues à l’ombre provoquée par la faible distance des capteurs par rapport au sol. Le bâti du robot joue un grand rôle dans cette ombre puisque le but est d’isoler au maximum le système des capteurs de la lumière ambiante (cf. Fig.13).

Led Blanche
Fig.12 : Exemple de LED blanche

Systeme isole
Fig.13 : Isolation et éclairage interne

Détecter le stock :

Arrivé près du stock, le robot n’est pas forcément aligné pour récupérer la pièce selon la trajectoire qu’il a utilisé pour l’atteindre. Il faut donc mesurer la distance entre le robot et le stock en deux points (la gauche et la droite du bâti du robot). Plus les capteurs sont éloignés et plus précis sera le parallélisme entre le stock et le robot. Chacun de ces capteurs sont composés d’un émetteur et d’un récepteur. L’émetteur envoie une onde d’environ 40 kHz qui, réfléchie sur la surface à mesurer, est captée par le récepteur. Le temps du trajet de l’onde définit la distance (cf. Fig.14).

Calcul distance
Fig.14 : Calcul de distance

Récupérer la pièce :

Correctement aligné devant le stock, le robot attrape la pièce à l’aide de la pince. En effet, le servomoteur relié à l’un des doigts entraîne le second doigt à l’aide d’un engrenage situé à la base des doigts de la pince. Celle-ci est composée de caoutchouc sur les bords des doigts afin d’augmenter l’adhérence de la pince et ainsi maintenir la pièce en place. Ensuite, un capteur fin de course est également positionné sur le fond de la pince dans le but de connaître la présence de la pièce au sein de la pince.

Ce que le robot devrait faire

Initialement, les stocks en milieu et début de ligne sont vides. Le robot est installé sur sa position de départ (le stock de départ se trouvant sur sa droite), perpendiculairement à la ligne à suivre (cf. Fig.15). Au moment de la détection de la présence d’une pièce dans le stock en milieu de chaîne, le robot reçoit l’information et débute un déplacement en avant. Les capteurs de contraste passent alors sur la ligne noire (les deux à la fois, comme sur la Fig.16). Le robot entame alors une rotation sur la droite jusqu’à ce qu’un des capteurs ne détecte plus la ligne. C’est alors que la phase de suivi de ligne débute (cf. Fig.17).

Schema etape 1
Fig.15 : Position de départ

Schema etape 2
Fig.16 : Détection de la ligne

Schema etape 3
Fig.17 : Rotation

A chaque fois que le robot tente de franchir la ligne par inadvertance, il se repositionne correctement, de sorte qu’il se recentre sur la ligne (cf. Fig.18). Une bande noire, mise en perpendiculaire de la ligne à suivre est le signal d’approche du stock où sont entreposées les pièces à déplacer. En effet, le programme de suivi de ligne s’arrête une fois la bande détectée par les deux phototransistors à la fois. Le robot s’arrête dans sa position (cf. Fig.19).

Schema etape 4
Fig.18 : Suivi de ligne

Schema etape 5
Fig.19 : Détection de la bande

A l’aide de ses capteurs à ultrason, le robot mesure la distance qu’il a de chacun de ses côtés par rapport au stock. Si l’une des valeurs de distance est différente de l’autre, le robot pivote de sorte que les valeurs des deux capteurs s’égalisent (cf. Fig.22). Il entame ensuite un léger mouvement en avant jusqu’à atteindre une valeur nulle sur ses capteurs de distance. Pendant ce même temps, la pince s’ouvre à son maximum afin d’avoir la pièce entre ses doigts une fois arrivé contre le stock (cf. Fig.21). Lorsque le robot est contre le stock, la pièce est complètement à l’intérieur de la pince, le fin de course placé au fond de la pince est déclenché. Ainsi, le robot referme les doigts afin de maintenir la pièce (cf. Fig.22).

Schema etape 6
Fig.20 : Alignement

Schema etape 7
Fig.21 : Avance du robot et ouverture de la pince

Schema etape 8
Fig.22 : Fermeture de la pince

Il entame ensuite un déplacement arrière jusqu’à ce qu’il ne détecte plus la bande noire posée sur la ligne à suivre (cf. Fig.23). A ce stade, le robot entame une rotation sur 180 degrés afin de se repositionner sur la ligne a suivre et le programme de suivi de ligne débute (cf. Fig.26). Le robot répète les mêmes mouvements que précédemment, jusqu’à arriver au stock de dépose de la pièce (cf. Fig.25).

Schema etape 9
Fig.23 : Marche arrière

Schema etape 10
Fig.24 : Demi-tour

Schema etape 11
Fig.25 : Répétition des étapes précédentes

Arrivé, il ouvre la pince, la pièce tombe et atterrit directement dans un petit logement prévu à cet effet. Comme pour le stock précédent, le robot recule, ne détecte plus la bande noire et entame un demi-tour sur lui-même. C’est la fin du cycle pour le robot : il doit recevoir une nouvelle information de présence pièce avant de chercher la suivante (cf. Fig.26).

Schema etape 12
Fig.26 : Position d’attente finale

Ce que le robot fait réellement

En position de départ, le robot est en attente de l’information d’une présence pièce. On appuie alors sur le capteur fin de course pour envoyer la trame correspondante au robot. Ce dernier comprend l’information et s’avance jusqu’à la ligne. Il entame alors une rotation de 90 degrés vers la droite sur lui-même puis suit la ligne jusqu’à la bande noire devant le stock. Il est ensuite capable de faire marche arrière jusqu’à ne plus capter la bande et à faire un demi-tour pour se diriger vers le stock en début de chaîne. De même, une fois arrivé, il entame une marche arrière et un demi-tour, pour enfin s’arrêter et attendre une seconde information de présence pièce afin d’entamer un second cycle.

Conclusion

Bien que nous ne soyons pas arrivé au terme des objectifs fixés, nous en avons appris énormément aussi bien sur le plan organisationnel que sur le plan technique. En effet, le projet nous a apporté une grande expérience sur le métier de concepteur de nouveaux systèmes. Nous ne souhaitions pas simplement appliquer les diverses connaissances acquises pendant les deux années en GEII, mais en obtenir de nouvelles. Cet objectif est rempli puisque nous savons désormais programmer une carte Arduino et utiliser les capteurs mis en place. En effet, de nos erreurs nous avons su tirer les leçons dans le but de les comprendre et de ne plus les commettre.

Perspectives

Ce projet, une fois achevé, pourrait par la suite être dupliqué et utilisé sur les différentes stations Festo afin de rapporter les pièces en début de chaîne. Ainsi, la chaîne serait entièrement autonome et pourrait fonctionner sans arrêt (sauf en cas de défauts). Par ailleurs, le coût de production de ce système est dérisoire, ce qui le rend particulièrement abordable quelle que soit l’organisme souhaitant se le procurer.