PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel...

8
PALETTISATION EN ROBOTIQUE Auteur : DAVID CORNICE Professeur tuteur : ROMEO IONESCU INSTITUT DE TECHNOLOGIE B, UNIVERSITE CLAUDE BERNARD LYON 1 Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire de Technologie B de l’Université Claude Bernard Lyon 1 à Lyon en France, j’effectue un stage de dix semaines dans le laboratoire de robotique de l’Université Stefan cel Mare à Suceava en Roumanie. Mon travail y consiste à programmer un robot industriel Stäubli afin de simuler des applications courantes en entreprise. J’ai pour l’instant réalisé deux applications, une sur la palettisation de pièces où la tâche consiste à transférer des pièces d’une palette à une autre, toutefois les positions et les dimensions des palettes ne sont pas connues par avance par le robot, il faut donc avoir recours a une procédure de palpage des palettes pour déterminer leurs positions dans le repère de coordonnées du robot. L’autre application consiste en la programmation du robot pour qu’il effectue des opérations de peinture, ici la tâche consiste à faire effectuer au robot les mouvements de peinture en le guidant à la main tout en enregistrant les différentes positions par lesquelles ils passent. Il ne suffit alors plus qu’à reproduire ces mouvements en ordonnant au robot de se déplacer successivement aux différents points sauvegardés pour effectuer l’opération de peinture. Dans ce rapport je traiterai uniquement de l’application de palettisation.

Transcript of PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel...

Page 1: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

PALETTISATION EN ROBOTIQUE

Auteur : DAVID CORNICE

Professeur tuteur : ROMEO IONESCU

INSTITUT DE TECHNOLOGIE B, UNIVERSITE CLAUDE BERNARD LYON 1

Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare.

Résumé

Dans le cadre d’un échange Erasmus avec l’Institut Universitaire de Technologie B de l’Université Claude Bernard Lyon 1 à Lyon en France, j’effectue un stage de dix semaines dans le laboratoire de robotique de l’Université Stefan cel Mare à Suceava en Roumanie. Mon travail y consiste à programmer un robot industriel Stäubli afin de simuler des applications courantes en entreprise. J’ai pour l’instant réalisé deux applications, une sur la palettisation de pièces où la tâche consiste à transférer des pièces d’une palette à une autre, toutefois les positions et les dimensions des palettes ne sont pas connues par avance par le robot, il faut donc avoir recours a une procédure de palpage des palettes pour déterminer leurs positions dans le repère de coordonnées du robot. L’autre application consiste en la programmation du robot pour qu’il effectue des opérations de peinture, ici la tâche consiste à faire effectuer au robot les mouvements de peinture en le guidant à la main tout en enregistrant les différentes positions par lesquelles ils passent. Il ne suffit alors plus qu’à reproduire ces mouvements en ordonnant au robot de se déplacer successivement aux différents points sauvegardés pour effectuer l’opération de peinture. Dans ce rapport je traiterai uniquement de l’application de palettisation.

Page 2: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

Introduction

La robotique est la science de commander des systèmes mécaniques asservie en vitesse et en position à l’aide de systèmes numériques programmables. La principale application de la robotique est de permettre aux êtres humains de se déroger aux taches manuelles répétitives, ou trop complexes, voir dangereuses.

Fig 3 : Un robot industriel au travail.

Les robots sont commandés par des directeurs de commandes numériques, ceux-ci sont en fait des ordinateurs qui interprètent le programme de déplacement et d’opération du robot et envoient les ordres de mouvement correspondants aux actionneurs du robot. Les travaux évoqués dans ce rapport ont été réalisés avec le robot 6 axes PUMA 500 de Unimate Stäubli du laboratoire de robotique de l’université Stefan cel Mare. Son armoire de commande est une MK2, elle est dotée de son propre langage de programmation : le VAL II.

Problématique Nous allons voir dans ce rapport l’exemple d’une application robotique courante : la palettisation. La palettisation est une opération consistant à placer des pièces dans une palette prévue à cet effet. Il s’agit d’une opération relativement simple, toutefois, lors de l’installation d’un poste robotisé, ou lors d’une modification de ce poste, les positions des palettes ne sont pas ou plus connus du robot. Nous nous efforcerons au cours de ce rapport de comprendre quelles sont les étapes nécessaires à la conception d’une application robotique de palettisation suffisamment souple pour pouvoir s’adapter à des modifications de son environnement de fonctionnement.

Analyse et approche des problèmes

a) Repères et angles d’Euler Commençons tout d’abord par une description succincte des notions de repère universel, de repère outil et d’angles d’Euler.

Page 3: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

Le repère universel (figure 4) est lié à l’embase du robot. Les coordonnées des différents points que doit atteindre le robot sont exprimées dans ce repère. Le repère porte-outil (figure 5) est lié au support prévu pour fixer un outil sur le sixième axe du robot. Le repère outil ou terminal est quant à lui lié au repère porte-outil par une transformation : un vecteur a trois composantes pour la translation et trois angles d’Euler pour la rotation. Il est ainsi possible de modifier la position et l’orientation du repère outil a n’importe qu’elle moment du programme simplement en modifiant cette transformation. Par défaut, les repères porte-outil et outil sont confondus.

+Y

Fig 4 : Repère universel. Fig 5 : Repère porte-outil.

Il est important de savoir que lorsque l’on ordonne au robot PUMA de se déplacer à un point A de l’espace, on lui commande en réalité de confondre le repère outil avec un repère ayant pour origine le point A. De plus, lorsque l’on demande au robot a quel point il se trouve, celui-ci renverra la les coordonnées et l’orientation du repère outil par rapport au repère universel. Les angles d’Euler (figure 6) permettent de représenter les différences d’orientations entre deux repères. On passe d’un repère Oxyz à un repère Ox'y'z' par trois rotations successives.

• La précession ψ, autour de l'axe Oz, fait passer de Oxyz au référentiel Ouvz. • La nutation θ, autour de l'axe Ou, fait passer de Ouvz à Ouwz'. • La rotation propre φ, autour de l'axe Oz', fait passer de Ouwz’ à Ox'y'z’.

Fig 6 : Angles d’Euler.

Pour le robot PUMA qui utilise une convention zyz, l’axe Ou est l’axe Oy du repère transformé par la précession. De plus les angles d’Euler ψ θ φ sont dénommés O A T.

Page 4: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

b) Une application de palettisation Nous allons réaliser une application robotique de palettisation. Son but sera de faire transférer au robot des pièces d’une palette 1 à une palette 2. Les positions et les dimensions des palettes ne seront pas connues par avance. Nous aurons donc recours à une procédure de palpage pour déterminer leurs orientations et leurs positions par rapport au repère de base du robot. Nous devrons aussi avoir recours à une procédure de renseignement des caractéristiques de la palette tels que le nombre d’emplacements pour pièce disponible, les distances entre chaque emplacement, etc.

Fig 7 : Photographie de l’installation.

Fig 8 : Schéma de principe de l’opération de palettisation. J’ai décidé, pour effectuer l’opération de transfert des pièces, de découper le problème en plusieurs sous parties, les voici :

1) Saisie des propriétés géométriques des palettes 1 et 2. 2) Palpage des coordonnées des palettes 1 et 2 dans le repère du robot. 3) Déplacement des pièces de la palette 1 vers la palette 2 ou inversement.

Je vais maintenant décrire en détails chacune des différentes parties :

1) Saisie des propriétés géométriques des palettes 1 et 2. Une palette possède différentes caractéristiques géométriques qui doivent être connu du robot pour qu’il puisse se placer aux positions adéquates pour prendre ou déposer une pièce dans un des réceptacles d’une palette. J’ai représenté certain de ces différents paramètres sur le schéma suivant (figure 9).

Pièces

Palette 1

Palette 2

Robot Puma

Support outil palpeur

Palette 1 Palette 2

Robot Puma

Pièces

Page 5: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

Fig 9 : Schéma d’une palette quelconque vue de dessus.

decx représente le décalage par rapport a l’origine O selon la direction x de l’axe du premier emplacement pour pièce. decy est identique à decx mais pour la direction y. dectx représente le décalage selon la direction x entre les axes de deux emplacements pour pièce consécutifs. decty est identique à dectx mais pour la direction y. J’ai ajouté à cela d’autres paramètres géométriques spécifiques à chaque palette : Le nombre de colonnes ncol. J’appelle ici une colonne une série d’emplacements pour pièce selon la direction y avec x constant. Le nombre de ligne nrow. J’appelle ici une ligne une série d’emplacements pour pièce selon la direction x avec y constant. Sur l’exemple de la figure 5, on a ncol = 6 et nrow = 3. Le nombre d’emplacements disponibles peut donc être calculé avec la formule suivante :

nemplacements = ncol x nrow Enfin, j’ai rajouté un dernier paramètre qui n’est pas une véritable caractéristique géométrique mais plutôt un état variable. Il s’agit du nombre de pièces npiece actuellement présentent sur la palette et qui sera modifié automatiquement lors des opérations de transfert d’une palette vers une autre. J’ai réalisé mon programme de telle sorte que tous ces paramètres soient rentrés sous forme de variables dont les valeurs seront saisies par l’utilisateur au clavier puis stockées dans la mémoire de l’ordinateur de l’armoire de commande du robot Puma. On réalise cette étape pour la palette 1 et pour la palette 2. J’ai réalisé la sauvegarde des données spécifiques à chaque palette en utilisant les entrées 1 et 2 de plusieurs tableaux de variables et plus exactement un pour chaque paramètre.

2) Palpage des coordonnées des palettes 1 et 2 dans le repère du robot. Comme on peut le voir sur la figure 6, un repère orthonormé est lié à chaque palette. Le point O en est l’origine. J’ai décidé d’orienter le repère lié à la palette de telle sorte que les directions x et y représentent les directions d’alignement des emplacements pour pièces et que z (z = x ^ y) soit orienté vers le fond de la palette.

Page 6: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

Pour que le robot prenne connaissance de ce repère, nous allons faire entrer en contact un outil palpeur tenu par la pince du robot avec trois points de la palette. Le robot doit donc tout d’abord aller chercher l’outil palpeur sur son support.

Fig 10 : Outil palpeur sur son support.

Une fois que l’outil est saisi, on modifie le repère outil afin que sont origine sont placée à l’extrémité du palpeur, j’ai aussi décidé de modifier son orientation de telle sorte que l’axe z outil soit colinéaire avec l’axe du palpeur. En ordonnant au robot de se déplacer à un point, on déplace maintenant la pointe du palpeur.

Fig 11 : Procédure de palpage.

On laisse ensuite les commandes du robot au boîtier manuel pour que l’utilisateur place la pointe de l’outil palpeur aux trois points suivants que l’on sauvegarde.

Palpeur

Palpeur

Boîtier Manuel

Support

Page 7: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

• L’origine O du repère. • Un point A de telle sorte que le vecteur OA indique la direction x. • Un point B de telle sorte que si l’on effectue la projection orthogonale H de

B sur la droite Ox alors le vecteur HB indique la direction y. Puis on retourne déposer l’outil palpeur sur son support. Il suffit alors d’utiliser l’instruction frame du langage VAL II, avec en paramètre les points que nous venons de saisir pour construire le repère palette conforme à la figure 9 et de le sauvegarder dans une variable de type repère. On réalise cette étape pour la palette 1 et pour la palette 2. De façon similaire aux paramètres géométriques des palettes, j’ai réalisé la sauvegarde des repères spécifiques à chaque palette en utilisant les entrées 1 et 2 d’un tableaux de variables de type repère.

3) Déplacement des pièces de la palette 1 vers la palette 2 ou inversement. Il s’agit maintenant d’effectuer le transfert de pièce soit de la palette 1 vers la palette 2 soit de la palette 2 vers la palette 1. Nous appellerons maintenant palette source et palette destination respectivement la palette de départ et d’arrivée des pièces. Prenons le cas suivant :

Fig 12 : Schéma de principe du transfert de pièce vue de dessus. Chaque croix rouge représente une pièce. La palette source possède 6 colonnes numérotés de 0 a 5, 3 lignes de 0 a 2 et 8 pièces présentent. Celle de destination possède 3 colonnes numérotés de 0 a 2, 3 lignes de 0 a 2 et 4 pièces présentent. Chaque emplacement possède un numéro, en bleu, qui vaut emplacement = row x ncol + col, avec row et col les numéro de ligne et de colonne du réceptacle et ncol le nombre de colonne de la palette. Le robot vient poser ou retirer des pièces afin de remplir ou de vider des lignes dans l’ordre des numéros de ligne et de colonne décroissant en commençant par la dernière, afin que la pince ne bute pas contre des pièces déjà présentent dans un emplacement et que l’on puisse rajouter des pièces jusqu'à compléter la palette. Sur l’exemple de la figure 12, la première pièce à retirer est la celle à l’emplacement 10 de la palette source. C’est la 8eme en partant de la fin on a donc :

emplacementpalette source = nemplacementpalette source – npiecepalette source Toujours sur le même l’exemple, on doit placer la pièce à l’emplacement 4 de la palette de destination. C’est la (4+1)eme en partant de la fin d’où : emplacementpalette destination= nemplacementpalette destination – npiecepalette destination - 1

Palette source Palette destination

Page 8: PALETTISATION EN ROBOTIQUE...Fig 1 et 2 : Laboratoire de robotique de l’université Stefan cel Mare. Résumé Dans le cadre d’un échange Erasmus avec l’Institut Universitaire

Maintenant que nous avons les numéros des emplacements source et destination, il faut en déduire les numéros de ligne et de colonnes correspondants. Prenons l’emplacement source par exemple, on aura :

colonnepalette source = emplacementpalette source mod ncolpalette source lignepalette source = emplacementpalette source div ncolpalette source

Ici, l’opérateur mod (modulo) représente le reste de la division euclidienne, on aura par exemple 5 mod 3 = 2. Tandis que l’opérateur div (division) représente la division euclidienne, par exemple 5 div 3 = 1. On peut maintenant en déduire d’après la figure y, les abscisses et ordonnées de l’emplacement source dans le repère palette source :

Xpalette source = colonnepalette source x decxpalette source + dectxpalette source Ypalette source = lignepalette source x decypalette source + dectypalette source

On utilisant une formule analogue on détermine aussi les coordonnées Xpalette destination et Ypalette destination, de l’emplacement de destination dans le repère palette de destination. Il ne suffit maintenant plus qu’à ordonner au robot d’aller prendre la pièce au point (Xpalette source, Ypalette source) dans le repère palette source. On décrémente alors le nombre de pièces de la palette source de un. On va ensuite déposer la pièce à l’emplacement au point (Xpalette destination, Ypalette destination) dans le repère palette destination. On incrémente alors le nombre de pièces de la palette destination de un. Puis on reprend l’algorithme de déplacement des pièces depuis le début pour déplacer la pièce suivante et ainsi de suite jusqu'à ce qu’il n’y ai plus de pièces sur la palette source ou que la palette destination soit pleine.

Conclusion Nous avons donc vue, sans rentrer dans les détails de programmation, quels étaient les grands axes de la réalisation d’une application de palettisation en robotique. Avant d’effectuer le transfert de pièce d’une palette à l’autre, nous sommes passés par une phase de renseignement par l’utilisateur des caractéristiques géométriques des palettes, puis de palpage afin que le robot détermine leurs positions. Cette application est donc suffisamment souple pour s’adapter aux modifications de son environnement de fonctionnement, comme en entreprise, lors de l’installation ou de la modification d’un poste robotisé où les positions des palettes ne sont pas ou plus connus du robot.

Bibliographie

• COI 86 : Philippe Coiffet, La Robotique principes et applications, 1986 éditions HERMES.

• *** Cours de robotique 1 et 2 de l’Institut de technologie B Université Claude Bernard Lyon 1.

• *** Documentation technique du robot PUMA 560 de Unimate Stäubi. • *** Angles d’Euler, WIKIPEDIA l’encyclopédie libre.