1
Travaux Pratiques de Robotique ISIFC 3ème Année Nicolas CHAILLET - Micky RAKOTONDRABE - Nicolas ANDREFF document téléchargeable sur http://www.femto-st.fr/ micky.rakotondrabe/teaching.php
Table des matières 1 Règles de sécurité 4 2 Notions fondamentales de repères 5 2.1 Définition des repères fondamentaux des robots...................... 5 2.2 Concaténation de repères.................................. 6 2.3 Saisie de repères...................................... 6 3 TP1 - Programmation du robot STAÜBLI RX90 8 3.1 But de la manipulation................................... 8 3.2 Matériels utilisés...................................... 8 3.3 Programmation d une tâche de pick-and-place....................... 9 3.4 Programmation d une tâche dans un repère relatif à une palette.............. 9 3.5 Changement d outil..................................... 9 4 Sujet de TP2 - Etude de la robotisation d une tâche de pick-and-place de composants d horlogerie pilotée par un système de vision artificielle : robot Pocket-Delta 10 4.1 But de la manipulation................................... 10 4.2 Programme de travail.................................... 11 4.2.1 Etude du système web embarqué dans le robot destiné à son pilotage....... 11 4.2.2 Programmation du capteur de vision........................ 11 4.2.3 Ecriture de la tâche de pick-and-place du robot.................. 11 4.2.4 Conclure...................................... 11 4.3 Fichiers utilisés....................................... 11 5 Sujet de TP3 - Programmation du robot ABB IRB 340 12 5.1 Introduction......................................... 12 5.2 Matériels utilisés...................................... 12 5.3 Programmation simple pour se familiariser......................... 12 5.4 Programmation de trajectoire complexe.......................... 13 5.5 Prise au vol......................................... 13 6 Sujet de TP4 - Programmation du robot MITSUBISHI RP-1AH : assemblage de composant 2
d une montre 14 6.1 Introduction......................................... 14 6.2 Matériels utilisés...................................... 14 6.3 Programmation du robot.................................. 15 7 Sujet de TP5 - Programmation en ligne du robot FANUC : cellule de contrôle 16 7.1 But de la manipulation................................... 16 7.2 Matériels utilisés...................................... 16 7.3 Question 1.......................................... 16 7.4 Question 2.......................................... 16 A Quelques commandes de V+ 17 B Quelques commandes de RAPID 19 C Quelques commandes de MELFA BASIC 4 22 3
Chapitre 1 Règles de sécurité RÈGLE 1 Veiller à ce qu il n y ait personne dans l enveloppe de travail d un robot en fonctionnement. RÈGLE 2 Lors de l exécution d un programme, démarrer toujours le robot en vitesse lente. Après le déroulement complet d un cycle, il y a toujours l opportunité d augmenter la vitesse progressivement jusqu à la valeur finale désirée. Toutefois, une vitesse moniteur supérieure à 30% de la capacité maximale est interdite. RÈGLE 3 Lors de la mise au point d un programme, l opérateur devra toujours se tenir prêt à appuyer sur le bouton poussoir qui provoque l arrêt immédiat du bras et, en dernière ressource, appuyer sur un des boutons ARRÊT D URGENCE. Le premier essai d un programme doit toujours se faire sous la direction de l enseignant et donc avec son approbation. Dans la mesure du possible, il est fortement conseillé de l exécuter en pas à pas dans ce cas. RÈGLE 4 Chaque fois que l on déplace le robot à l aide du pendant d apprentissage, sélectionner une vitesse faible. RÈGLE 5 (Interdit aux étudiants) Avant toute intervention sur le bras, couper, si possible, l alimentation du bras. RÈGLE 6 (Interdit aux étudiants) Avant toute intervention dans l armoire de l unité de commande, couper l alimentation générale. 4
Chapitre 2 Notions fondamentales de repères 2.1 Définition des repères fondamentaux des robots L espace de travail d un robot est défini par rapport à un repère inhérent au robot, son repère de base (Fig. 2.1). Les explications données ici le sont en langage V+, mais les idées restent génériques. FIG. 2.1: Repère associé à la base du robot (WORLD). Aussi tous les objets, emplacements, trajectoires seront-ils définis dans ce repère. Ainsi, l instruction HERE fournit la position et l orientation du repère outil (TOOL) dans le repère de base (WORLD). exemple : X Y Z y p r 500 10 100 180 30 0 Cela signifie que pour retrouver le repère outil, il faut translater le repère de base de 500 mm suivant X, de 10 mm suivant Y, de 100 mm suivant Z, puis tourner de 180 degrés suivant Z, 30 degrés suivant Y, 0 degré suivant Z (les axes X, Y et Z indiqués ici étant ceux du repère fixe WORLD). Par ailleurs, comme l objectif est de faire suivre une trajectoire à l outil, il est nettement plus simple d associer les mouvements au repère outil. Ainsi les fonctions de mouvement (APPRO, DEPART...) sont directement définies dans le repère outil (Fig. 2.2). Exemple : DEPART 50, s écarte de la position actuelle de 50 mm suivant l axe Z du repère outil. Il faut noter qu à la mise sous tension du robot, le repère outil est défini comme étant un repère propre au dernier axe. Le robot ignore le type d outil qu il possède et bien sûr ses caractéristiques géométriques. Afin que la commande soit consciente de la présence d un outil et donc fournisse la position dans l espace du bout de l outil réel, il faut lui indiquer les caractéristiques de cet outil. Cette opération s effectue en utilisant la commande TOOL TRANS(x,y,z,α,β,γ). Après avoir effectué cette 5
FIG. 2.2: Repère associé à l outil du robot (TOOL). commande, l ensemble des instructions de mouvement s applique au centre de l outil. 2.2 Concaténation de repères Lorsque l on programme un robot pour une tâche répétitive, comme poser un objet sur un emplacement d un magasin par exemple, il est nettement plus confortable de travailler dans le repère R1 du magasin que dans le repère de base du robot. Il est ainsi nettement plus confortable de donner l ordre : Aller à la position P1 définie dans le repère R1 (lui-même défini dans le repère de base). Cette opération est réalisée par l ordre : MOVE R1:P1 WORLD R1 P1 FIG. 2.3: Concaténation de repères. Bien sûr on peut concaténer plusieurs repères successivement MOVE R1:R2:R3:P1 mais au détriment du temps de calcul, ce qui quelquefois peut poser des problèmes. Dans l exemple précédent, R2 est bien sûr défini dans R1 et R3 dans R2 etc... 2.3 Saisie de repères Il existe trois façons de définir un repère. La première consiste à positionner (position et orientation) le repère outil du robot sur le repère que l on veut saisir. L instruction HERE rep1, donnera à rep1 les coordonnées du repère. Noter que la concaténation de repères peut aussi servir lors de la saisie. Par exemple HERE A:B définit le repère B dans le repère A. 6
Cette méthode est rapidement entachée d erreurs. En effet, le moindre écart sur l orientation provoque une grande erreur si le point à atteindre est éloigné du centre du repère. La deuxième méthode, beaucoup plus précise et donc à préférer, consiste à définir un repère par trois points. C est l instruction FRAME qui réalise cette opération. Enfin la troisième méthode consiste à définir manuellement la position de ce repère dans le repère WORLD en entrant directement ses coordonnées au clavier. En pratique, cette méthode est souvent inemployable car on ne connait pas a priori les coordonnées du repère à définir par rapport au repère WORLD du robot. Noter que l instruction MOVE A ne veux pas dire aller au point A mais positionner le repère outil du robot en coïncidence exacte (position et orientation) sur le repère A. 7
Chapitre 3 TP1 - Programmation du robot STAÜBLI RX90 3.1 But de la manipulation Le but de cette manipulation est d acquérir les notions de base de programmation en ligne du robot anthropomorphe RX90 (6 axes), en utilisant le langage V+, par : la réalisation de programme de pick-and-place, l utilisation de repère relatif à une palette et de faire une tâche de pick-and-place dans ce repère, le changement de repère outil. L expression pick-and-place est synonyme de prise-dépose. 3.2 Matériels utilisés Le robot STAÜBLI RX90 (Fig. 3.1). Quelques fonctions qui peuvent être utilisées sont données en annexe- A. Les robots Staübli RX90 est un robot à 6 axes (à poignet à trois axes concourants) et 6 degrés de liberté. Les performances techniques de ce robot (Stäubli Unimation) permettent de couvrir un grand nombre d applications telles que manutention, assemblage, contrôle, etc... La charge transportable nominale est de 2,5 kg pour le RX90. A vitesse rédute, la charge transportable maximale est de 4,5 kg. Le rayon d action du RX90 est de 985 mm et sa répétabilité est de 0,02 mm. Son langage de programmation est le V+. 8
FIG. 3.1: Robot Stäubli RX90. 3.3 Programmation d une tâche de pick-and-place Pour vous habituer aux matériel et logiciel, réaliser une tâche de pick-and-place de goupille. Les notions de APPROCHE et DEPART d un point seront particulièrement appliquées. 3.4 Programmation d une tâche dans un repère relatif à une palette Créer d abord un repère relatif à la palette-1. Faites ensuite la tâche de pick-and-place de quelques goupilles placées dans cette palette en utilisant les mouvements relativement au repère nouvellement crée. 3.5 Changement d outil Ajouter un nouvel outil, une pointe mise à votre disposition, à la pince (organe terminal) du robot. Réaliser le décalage du repère outil en prenant 4 points puis en utilisant un fichier de calcul.xls mis à votre disposition. Vérifier ensuite si le décalage du repère outil est convenable. 9
Chapitre 4 Sujet de TP2 - Etude de la robotisation d une tâche de pick-and-place de composants d horlogerie pilotée par un système de vision artificielle : robot Pocket-Delta 4.1 But de la manipulation Le but de la manipulation qui est proposée ici est de mettre en uvre une tâche de manipulation d un rubis de montre, pilotée par un système de vision artificielle (COGNEX). Les interactions entre le système de vision, le robot pocket delta (société ASYRIL - CH) et le PC de programmation se font par ETHERNET. Le système de vision, une fois programmé est autonome, de même que le robot. 10
4.2 Programme de travail 4.2.1 Etude du système web embarqué dans le robot destiné à son pilotage Etudier le système d interface web du robot. Quelle sont vos conclusions? 4.2.2 Programmation du capteur de vision Calibration du système vision + robot Apprendre au système de vision à reconnaître la ventouse du robot Exécuter la procédure de calibration - A quoi sert-elle? Apprentissage du modèle d une pièce (rubis de montre) et test Décrire l utilité et la fonction des différents paramètres du modèle. Expliquer pourquoi le modèle en question est stocké sur le disque du PC? 4.2.3 Ecriture de la tâche de pick-and-place du robot Vous pourrez vous inspirer des autres programmes qui ont été déjà réalisés. Pour accéder aux ordres disponibles dans la bibliothèque du robot, taper le mot-clé robotinterface et les options disponibles apparaîtront dans une fenêtre pop-up. L explication des paramêtres et leur type se fait de la même manière. Il en va de même pour accéder aux ordre du système de vision ( visioninterface ). 4.2.4 Conclure 4.3 Fichiers utilisés Utiliser le fichier correspondant au programme 2 dans l environnement de programmation C Sharp du PC. Pour cela, renommer au depart le fichier original program2 TPs ARIA.cs en program2.cs. En fin de TPs, le sauvegarder sous un nom qui permettra d identifier le l annee, le groupe et le binome. 11
Chapitre 5 Sujet de TP3 - Programmation du robot ABB IRB 340 5.1 Introduction On désire, par l intermédiaire de ce TP, aborder les deux aspects suivants : l utilisation d un robot delta (structure parallèle), réaliser un mouvement complexe (trajectoire complexe) du robot, introduction à une application complète de prise-dépose (pick-and-place) au vol avec reconnaissance visuelle du vrac 2D d entrée. 5.2 Matériels utilisés Il s agit ici d une structure cinématique parallèle (Fig. 5.1-a). C est une structure de type Delta, à 4 axes, générant 4 degrés de liberté opérationnels identiques à ceux des structures SCARA. Intégré dans sa cellule (convoyeurs et systèmes de vision), ce robot est bien adapté aux tâches de prise-dépose à la volée. Avec une charge transportable nominale de 1 kg et une répétabilité de ±50 µm, ce robot est capable de travailler à 150 prises par minute (temps de cycle de 0,4 seconde). Son espace de travail est donné par la figure Fig. 5.1-b. Le langage de programmation de ce robot est le langage RAPID. Quelques fonctions de ce langage qui peuvent être utiles sont données en annexe- B. 5.3 Programmation simple pour se familiariser Dans un premier temps, pour se familiariser avec le robot et le langage, réaliser le programme suivant : lors de l appui du bouton poussoir, départ du robot d un point initial en même temps le tapis-1 ainsi que l éclairage se mettent en marche, prise d un objet sur le tapis-2 en utilisant l aspiration pneumatique, 12
(a) (b) FIG. 5.1: Espace de travail du robot ABB IRB 340. dépose de l objet sur le tapis-1 en utilisant le souffle pneumatique, retour vers le point initial puis le tapis-1 ainsi que l éclairage s arrêtent. 5.4 Programmation de trajectoire complexe Dans certaines applications, il est nécessaire que les robots suivent des trajectoires complexes : mouvement intra-tubulaire, suivi de contour d une surface complexe, enroulement de bobines par le robot, etc. Dans ces cas, une programmation hors ligne est souvent utilisée afin d éviter de calculer à la main la trajectoire. Dans ce TP, nous allons programmer en ligne le suivi de trajectoire complexe du robot. Réaliser un programme qui fait une trajectoire de spirale du robot. 5.5 Prise au vol Cette partie sera seulement une démonstration faite par l assistant TP. Il s agit d une prise-dépose d objets sur les tapis en fonctionnement. Les caméras sont utilisés pour détecter la présence des objets. 13
Chapitre 6 Sujet de TP4 - Programmation du robot MITSUBISHI RP-1AH : assemblage de composant d une montre 6.1 Introduction Le but de ce TP est : de découvrir la manipulation des objets avec un robot SCARA à bras joints, de découvrir la manipulation de composant d une montre par une goutte d eau, appelée également manipulation par adhésion. La manipulation utilise la force capillaire pour effectuer l assemblage d un pignon d une montre avec le corps de ce dernier. La goutte d eau mise en place sur l outil permettra de prendre (par adhésion) le pignon. En effet, lorsqu on manipule des objets dont les dimensions sont petites (les micro-objets), les forces d adhésions deviennent prépondérantes par rapport à la force gravitationnelle. Ces forces d adhésion, appelées également forces surfaciques, sont : la force électrostatique (exemple : une vis qui adhère à un tourne-vis), la force capillaire, et les forces de Van Der Waals qui sont plus reliées. Si dans la plupart des cas ces forces sont sources de difficulté à faire du microassemlage ou de la micromanipulation, dans certaines situations, elles peuvent être utilisées pour réussir des tâches particulières. 6.2 Matériels utilisés Le robot Mitsubishi RP1-AH possède 4 axes et une cinématique de type SCARA double bras (Fig. 6.1- a). C est un robot de pick & place et d assemblage de très petite taille qui allie précision et rapidité et qui permet notamment des opérations de manipulation de très petites pièces. Les performances techniques du RP1-AH sont résumées par la Fig. 6.1-b. Son langage de programmation est le MELFA BASIC IV. Quelques fonctions du langage MELFA BASIC 4 qui peuvent être utiles sont données en annexe- C. 14
(a) (b) 6.3 Programmation du robot FIG. 6.1: Robot Mitsubish RP1-AH. réaliser une tâche de pick-and-place d une goupille sur une palette, créer un nouveau projet et réaliser le programme qui permet de prendre un mini-pignon grâce à une goutte d eau puis de le déposer sur le corsp d une montre, s il vous reste du temps, réalisation d une tâche de pick-and-place d une palette à une autre palette en utilisant la fonction PLT (palette). 15
Chapitre 7 Sujet de TP5 - Programmation en ligne du robot FANUC : cellule de contrôle 7.1 But de la manipulation... 7.2 Matériels utilisés... 7.3 Question 1... 7.4 Question 2... 16
Annexe A Quelques commandes de V+ La Table A.1 donne quelques commandes utilisée en V+. D autres commandes sont disponibles dans la documentation qui vient avec la baie de commande. TAB. A.1: Commandes V+ HERE A Affectation au point des coordonnées du robot actuel POINT A Affectation au point A les coordonnées X,Y,Z,Y,P,R CHANGE? (seulement en mode commande) X,Y,Z,Y,P,R CHANGE? SET A=B Affectation au point A les coordonnées du point B SET B=SHIFT(A BY 150,10,- 100) Le point B est obtenu par décalage de 150, 10 et -10 respectivement suivant X,Y et Z des coordonnées du point A MOVE P1 Déplacer vers le point A. Toutes les articulations bougent en même temsp afin d optimiser le temps. MOVES P1 Déplacer vers le point A. L outil du robot suit une ligne droite afin d optimiser la longueur de la trajectoire. BREAK Assure que l instruction précédente a été réalisée avant de passer à la suivante APPRO P1,50 Instruction, généralement suivie de MOVE, qui permet de s approcher de 50mm par rapport au point P1 et ceci suivant l axe Z de l outil DEPART 50 Permet au robot de partir du point actuel en se déplaçant suivant l axe Z-outil d une valeur de 50mm OPENI Ouverture immédiate de la pince pneumatique CLOSEI Fermeture immédiate de la pince pneumatique SPEED V UNITE ALWAYS Modifie la vitesse en V% si l UNITE n est pas indiqué. Unité en mmps (mm/s) et ips (inch/s) DELA 180 Permet de s arrêter pendant le temps stipulé en secondes. Il doit être supérieur à 16ms ;COMMENTAIRES le ; indique que le texte qui suit est un commenatire CALL SP3 Appel du sous-programme SP3 GOTO 10 Appel l étiquette 10 17
TAB. A.2: Commandes V+, suite IF CONDITION THEN Utiliser avec :... > ELSE >= ou =>... == END <> (différent) <= ou =< AND, OR, NOT IF CONDITION GOTO ETI- QUETTE FOR T=1 TO 10 STEP 2... END WHILE CONDITION... END DO... UNTIL EX TOTO,N,M XSTEP TOTO,N,M SEE TOTO DIR LISTP PROG1,PROG2 LISTL COPY TOTO=TUTU DELETEP TOTO DELETEL A DO INSTRUCTION TOOL TRANS(DX,DY,DZ) READY LOAD A:TOTO.LC EN PO DIS PO WHERE ZERO SET REP1=FRAME(P1,P2,P3,P4) MOVE REP1:A MOVE REP1:A,50 Exécution du programme TOTO n fois de suite (un nombre négatif signifie indéfiniment)à partir du pas de programme N m, seulement pour la première boucle Même principe que le précédent mais pas à pas. Le fait de taper X suivi de RETURN éxécute le pas suivant Créer ou éditer un programme. A l intérieur du programme, taper i, pour insertion de commande. r permet de remplacer du texte existant. F4 permet de quitter le programme Visualise les titres des programmes Liste le contenu des programmes Liste les points et leurs coordonnées Copie une double du programme TUTU Supprime le programme TOTO Supprime le point A Exécution d une instruction en mode commande Déplacer le repère outil de 100mm suivant l axe Z-outil Placer le robot dans la position de repos Charge le fichier TOTO.LC de la disquette vers la RAM Mise en puissance de la partie opérative (ENable POwer) Extinction de la puissance de la partie opérative (DISable POwer) Permet de connaître la position actuelle du robot et du préhenseur Vide le contenu total de la RAM Crée un repère appelé REP1 dont l axe X passe par P1 et P2, l axe Y perpendiculaire à l axe X et passant par P3, P4 étant l origine Se déplacer relativement au repère REP1. Les coordonnées du point A sont donnés dans ce dernier. MOVE REP1:REP2:A 18
Annexe B Quelques commandes de RAPID L exemple suivant donne la structure d un programme en langage RAPID. ------------------------------------------------------------- %%% VERSION:1 LANGUAGE:ENGLISH %%% MODULE ESSAI % toutes les declarations sont faites dans cette parties CONST num imax:=50; CONST robtarget p1:=[[0,0,-862],[0,-1,0,0], [0,0,0,0],[9E+09,9E+09,9E+09,0,0,0]]; VAR num i:=0; VAR robtarget p2; PROC main() % la procédure principale est insérée dans cette patrie MOVEL p1,vmax,z10,tool0; WHILE i<imax DO p2:=offs(p1,i,0,0); MOVEL p2,vmax,z10,tool0; i:=i+5; ENDWHILE ENDPROC % fin de la procédure principale ENDMODULE % fin du programme ------------------------------------------------------------- Outre le programme principal, il est possible de faire des sous-programmes. Ces sous-programmes peuvent être appelés dans le programme principal. Voici quelques commandes pouvant être utiles pour le TP. 19
CONST robtarget p1:=[[x,y,z],[q1,q2,q3,q4],[0,0,0,0],[9e+09,9e+09,9e+09,0,0,0]]; déclaration d une constante de position de robot. Les coordonnées du point sont donnés par [x,y,z] et [q1,q2,q3,q4] (orientation sous forme quaternion). VAR robtarget p1; déclaration d une variable de position de robot. CONST num alfa=:1; déclaration d une constante numérique. VAR num i; déclaration d une variable numérique. MOVEL p1,vmax,z10,tool0; permet de positionner le robot, vers la position p1, suivant une trajectoire linéaire. Le déplacement se fait avec une vitesse vmax, des données de la zone z10 et l outil tool10. MOVEJ p1,vmax,z10,tool0; permet de positionner le robot, vers la position p1, plus rapidement (pour l optimisation du temps, toutes les articulations 1 bougent en même temps). Le déplacement se fait avec une vitesse vmax, des données de la zone z10 et l outil tool10. WHILE i<x max DO... ENDWHILE utilisation des conditions. p2:=offs(p1,50,50,-50); le point p2 est obtenue par un décalage des coordonnées du point p1 de X=50; Y=50 et Z=-50. WAITTIME 10; délai de 10 secondes. WAITDI SensorCP,1; attente d un appui sur le bouton poussoir SensorCP. WAITDI SensorCP,0; attente d un relâchement du bouton poussoir SensorCP. SETDO dopick1 B ACK, 1; mise en marche de l éclairage. 1 MOVEJ : J comme Joint qui veut dire articulation. 20
SETDO dopick1 B ACK, 0; arrêt de l éclairage. SETDO dopick1 S T ART, 1; mise en marche du tapis-1. SETDO dopick1 S T ART, 0; arrêt du tapis-1. SETGO VACBLOW,0; arrêt de la pneumatique sur l effceteur. SETGO VACBLOW,1; aspiration pneumatique sur l effceteur, utilisée pour une prise d objet. SETGO VACBLOW,2; souffle pneumatique sur l effceteur, utilisé pour une dépose d objet. Les fonctions mathématiques tels que cos(.), sin(.), abs(.) ainsi que les opérations arithmétiques +,, / et sont utilisables dans RAPID. 21
Annexe C Quelques commandes de MELFA BASIC 4 COSIROP est un environnement de développement qui prend en compte notamment l écriture de programme en.mb4 (l interpréteur MELFA BASIC 4) et l enregistrement de coordonnées de robots en.pos (base de données). La Table C.1 donne quelques commandes de base en MELFA BASIC 4. TAB. C.1: Commandes MELFA BASIC 4 base (,,,,,,,) ou base P Nbase servo on spd 50 mvs p1 mvs p1,10 dly 2 gosub *SP1 *SP1 return M out(4)=1 M out(5)=0 M out(4)=0 M out(5)=1 end Utilisation du repère WORLD mise à un de la baie de commande mettre la vitesse à 50% de la valeur maximale aller vers le point p1 aller à distance 10mm du point p1 suivant l axe Z de l outil délai de 2s aller au sous programme subprog début d un sous-programme subprog fin du sous-programme subprog ouverture de la pince pneumatique fermeture de la pince pneumatique fin du programme principal 22