40
1 GPA546 Robots industriels Ahmed Joubair, ing., Ph.D. Chargé de cours, ÉTS Ilian Bonev, ing., Ph.D. Professeur, ÉTS

GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

1

GPA546 Robots industriels

Ahmed Joubair, ing., Ph.D. Chargé de cours, ÉTS

Ilian Bonev, ing., Ph.D. Professeur, ÉTS

Page 2: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position
Page 3: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position
Page 4: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

4

Cours 2 : Révision

IRB 1600 - 5/1.45 type A IRC5 avec FlexPendant

Page 5: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

5

Cours 2 : Révision

Mouvement des axes (tous les axes en position zéro)

(+180º, −180º)

(+120º, −90º)

(+65º, −245º) (+200º, −200º) ou 380 tours max !!!

(+115, −115º)

(+400º, −400º) ou 576 tours max !!!

Attention !

Dans cette configuration, le robot est

en singularité (axes 4 et 6 sont alignés)

Page 6: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

6

Cours 2 : Révision DANGER !

Page 7: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

7

Cours 2 : Révision

Page 8: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

8

Cours 2 : Révision

Page 9: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

9

Cours 2 : Révision

Modélisation d’une cellule

Modélisation d’outils

Programmation interactive

Éditeur RAPID

Programmation MultiMove

Simulation

Page 10: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Cours 3 : Langage RAPID

Page 11: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Structure d’un programme en RAPID

11

MODULE MainModule

PROC main()

Rotuine1;

Routine2;

ENDPROC

PROC Routine1()

MoveL;

ENDPROC

PROC Routine2()

MoveL;

ENDPROC

ENDMODULE

<?xml version="1.0" encoding="ISO-8859-1" ?>

<Program>

<Module>ModuleA.mod</Module>

<Module>MainModule.mod</Module>

</Program>

Pick_and_Place_Cell_A.pgf

MainModule.mod

MODULE ModuleA

PROC RoutineA1()

MoveL;

MoveL;

ENDPROC

ENDMODULE

ModuleA.mod

Page 12: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Exemple d’un programme en RAPID

12

MODULE Exemple

PERS robtarget A:=[[300,0,500],[0,1,0,0],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

PERS robtarget B:=[[0,300,500],[0,1,0,0],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

CONST tooldata tPince_bout:= [TRUE,[[0,0,233.37],[0.707107,0,0,0.707107]],

[1.7,[12.2,0,158],[1,0,0,0],0.009,0.003,0.012]];

PROC main()

deplacer_piece;

ENDPROC

PROC fermer_pince()

Set DO01_EE_PINCE01;

ENDPROC

PROC deplacer_piece()

VAR num reponse;

MoveJ A,v100,z5,tPince_bout\WObj:=wobj0;

MoveL B,v800,fine,tPince_bout\WObj:=wobj0;

WaitDI DI14_ZS0104, 1;

fermer_pince;

TPWrite "Le bloc est dans la pince. Êtes-vous satisfait?";

TPReadFK reponse, "", stEmpty, stEmpty, stEmpty, "Oui", "Non";

ENDPROC

ENDMODULE

Page 13: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Règles de base

13

Chaque instruction se termine par un point-virgule (sauf FOR, IF, PROC, etc.).

Une ligne commençant par ! ne sera pas interprétée.

RAPID n’est pas sensible à la casse, mais il est recommandé d’écrire tous les mots réservés (VAR, PROC, etc.) en majuscules.

Le premier caractère d’un identificateur doit être une lettre. Les

autres caractères peuvent être des lettres, des chiffres ou “ _ ”. La

longueur maximale est 32 caractères.

RAPID est un langage à structure non imposée, ce qui signifie que l’on

peut utiliser des espaces n’importe où sauf dans les identificateurs,

les mots réservés, les valeurs numériques.

Page 14: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Sortes de données

14

Trois sortes : constantes, variables et persistantes.

− Une constante représente une valeur statique et peut seulement

recevoir une nouvelle valeur manuellement.

− Une variable peut également recevoir une valeur en cours

d’exécution du programme.

− Une persistante peut être décrite comme étant une variable

“persistante”. Lorsqu’un programme est sauvegardé, la valeur

d’initialisation est mise à jour par la valeur actuelle de la

persistante.

Exemples :

CONST num Decalage := 200;

CONST string auteur := "Jean Tremblay";

CONST speeddata LowSpeed := [250,500,5000,1000];

VAR bool PresenceTrou;

VAR num N;

VAR num maxno{10} := [1,2,3,4,5,6,7,8,9,10];

PERS robtarget table := [[300,0,500],[0,1,0,0],

[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

Page 15: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Types de données

15

Trois types : atomic, record et alias.

− Un type de données est atomic (atomique) dans le sens où il n’est

pas défini en se basant sur un autre type et qu’il ne peut pas être divisé en parties ou composantes (bool, num et string).

− Un type de données record (d’enregistrement), est un type avec

des composantes ayant un nom et un ordre, par exemple pos. Une

composante pourra être soit du type atomic soit du type record.

VAR pos pos1 := [200, 300, 150];

VAR orient orient1 := [1, 0, 0, 0];

VAR pose frame1;

frame1:= [pos1,orient1];

pos1.x := pos1.x + 20;

frame1.trans.y := 300;

− Un type de données pseudonymes est, par définition, équivalent à

un autre type. Les types pseudonymes permettent de classer les objets de données. Par exemple, dionum (digital output num,

retournée par la fonction Doutput )est équivalent à num.

Page 16: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Routines

16

Trois types : procédures, fonctions et interruptions.

− Les procédures ne fournissent pas de valeur et sont utilisées dans

le contexte des instructions.

− Les fonctions fournissent une valeur d’un type spécifique et sont

utilisées dans le contexte des expressions.

− Les routines d’interruption fournissent un moyen de gérer les

interruptions.

Locales (LOCAL PROC routine1()) et globales (PROC routine2()).

Quatre types de paramètres :

PROC routine1(num in_par, INOUT num inout_par, VAR num var_par,

PERS num pers_par)

Exemple de fonction :

FUNC num veclen(pos vector)

RETURN SQRT(POW(vector.x,2)+POW(vector.y,2)+POW(vector.z,2));

ENDFUNC

Page 17: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Routines

17

Page 18: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Types de données : Records

18

robtarget : Définit la pose d’un référentiel d’outil du robot

par rapport à un autre référentiel, la configurations des axes du robot,

et les axes externes. Les composantes :

− trans de type pos;

− rot de type orient;

− robconf de type confdata;

− extax de type extjoint (toujours [9E9,9E9,9E9,9E9,9E9,9E9] pour nos robots).

PERS robtarget Retrait:=[[-306.31,517.44,768.63],

[0.263201,-0.442148,-0.833986,-0.199236],

[1,1,-3,0], [9E9,9E9,9E9,9E9,9E9,9E9]];

Page 19: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Types de données : Records

19

orient : utilisé pour les orientations.

L’orientation est décrite sous la forme d’un

quaternion composé de quatre éléments :

q1, q2, q3 et q4, de type num.

− L’orientation doit être normalisée,

c’est-à-dire que la somme des carrés

doit être égale à 1.

− Absolument non intuitives et difficiles à utiliser!!!

− Ne jamais entrer une orientation en quaternions directement!

− Heureusement, il y a les fonctions suivantes :

object.rot := OrientZYX(roll1, pitch1, yaw1);

yaw2 := EulerZYX(\X, object.rot);

pitch2 := EulerZYX(\Y, object.rot);

roll2 := EulerZYX(\Z, object.rot);

!Note : il y a 50% de probabilité que yaw2 yaw1, etc.

yaw pitch

roll

Page 20: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

x2

y2 z2

180o

x2

y2

z2

180o

x2

y2

z2

180o

x1

y1

z1

-90o

x1 y1

z1

-90o x y

z x2 y2

z2

180o

x2 y2

z2

180o

x2

y2

z2

180o

x3

y3 z3

90o x y

z

Angles d’Euler

20

Applet JavaScript xR

yR

zR

Yaw Pitch

Roll

Convention d’angles d’Euler utilisée par ABB

interprétation 1 : ZR (r) Y’(p) X’’(w)

interprétation 2 : XR (w) YR (p) ZR (r)

L’ordre des rotations est important!!!

xR yR

zR

x

y

z

90o x

y z

90o

Exemple :

w = 90o

p = −90o

r = 180o

x1

y1

z1

-90o

Attention !

Il y a 2 ou inf. solutions [−180o,180o]

solution 1 : w, p, r

solution 2 : w ± 180o, ±180o − p, r ± 180o

Page 21: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Types de données : Records

21

confdata : Configuration d’axes du robot (cf1, cf4, cf6 et cfx). Défini sous

la forme de la révolution de quart de cercle des axes 1, 4 et 6. La

première révolution de quart de cercle positive allant de 0 à 90 est fixée

à 0, ensuite 1, 2, 3, etc., ou −1, −2, etc.

− Très difficile à utiliser!!!

− On peut ignorer la configuration avec

ConfL \Off ou ConfJ \Off.

Page 22: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position
Page 23: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Types de données : Records

23

speeddata : permet de spécifier la vitesse à laquelle le robot et les

axes externes se déplacent. Les composantes :

− v_tcp : vitesse du point central de l’outil (TCP) en mm/s;

− v_ori : vitesse angulaire du TCP, exprimée en degrés/s;

− v_leax : vitesse des axes externes linéaires en mm/s;

− v_reax : vitesse des axes externes rotatifs en mm/s;

plusieurs vitesses prédéfinies : v5, v10, …, v6000, v5000, vmax.

VelSet : permet de changer la vitesse programmée

AccSet : permet de changer l’accélération.

Page 24: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Types de données : Records

24

zonedata (interpolation): permet de spécifier la façon dont une

position doit être terminée, c'est-à-dire à quelle distance de la

position programmée les axes doivent se trouver avant de se déplacer

vers la position suivante.

plusieurs points de passages prédéfinies : z0, z1, …, z200.

point d’arrêt : fine.

75mm 50mm

fine

fine

fine

z50

Zone

d’interpolation

Page 25: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position
Page 26: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Instructions de mouvement

26

MoveL : permet de déplacer l’outil du robot, d’une pose à une autre, en

gardant le TCP le long d’une trajectoire linéaire (sauf raccordements).

aucune option pour contrôler le changement d’orientation de l’outil.

très sensibles aux singularités.

exemples :

MoveL rtStart, v2000, z40, tPince_bout\WObj:=fixture;

Page 27: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position
Page 28: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Instructions de mouvement

28

MoveJ : permet de déplacer le robot rapidement d’un point à un autre

lorsqu’il n’est pas nécessaire que ce déplacement se fasse en ligne

droite. Le robot et les axes externes se déplacent vers la destination le

long d’une trajectoire non linéaire.

Chaque axe est déplacé selon une vitesse d’axe constante et tous les

axes atteignent la destination en même temps, ce qui résulte en une

trajectoire Cartésienne non linéaire.

ConfJ \Off : le robot ne change pas la configuration des axes 1 à 3,

mais il recherche la solution pour les axes 4 à 6 la plus proche de celle

du départ.

Page 29: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Instructions de mouvement

29

MoveC : permet de déplacer l’outil du robot, d’une pose à une autre,

en gardant le TCP le long d’une trajectoire circulaire.

CirPathMode : permet de sélectionner différents modes de

réorientation de l’outil au cours des mouvements circulaires.

exemple :

MoveC p_int, p_final, v500, z30, tPince_bout;

Page 30: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Instructions de mouvement

30

MoveAbsJ : permet de déplacer le robot vers une configuration donnée,

définie dans les positions d’axes. Utilisé lorsque cette configuration est

singulière.

MoveJDO (ou MoveLDO) : MoveJ (ou MoveLDO) + le signal de sortie

logique spécifié est mis à 1/remis à 0 au milieu du raccordement.

CalcRobT : permet de calculer des données robtarget à partir de

données jointtarget.

CalcJointT : permet de calculer les angles des axes du robot et des axes

externes à partir de données robtarget spécifiées.

Offs : permet de décaler la position d’un robot dans le repère objet. (MoveL Offs(p2, 0, 0, 10), v1000, z50, tool1\WObj:=fixture;).

RelTool : permet d’ajouter un déplacement et/ou une rotation, exprimé

dans le système de coordonnées de l’outil. (MoveL RelTool(CRobT,0,0,10 \Rz:=25), v1000, z50, tool1;).

Page 31: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Systèmes de coordonnées

(Référentiels)

31

XF

ZF

YF

Référentiel Poignet (tool0)

YT

XT

ZT

Référentiel Outil

Z0

Y0

X0

Référentiel Base

ZR

YR

XR

Référentiel Atelier

tooldata : permet de définir le

référentiel de l’outil.

Page 32: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Systèmes de coordonnées : wobj

32

ZR

YR

XR

Référentiel ATELIER

wobj0

X

Y Z

uframe X

Z

Y

oframe

X

Z

Y

uframe

oframe =

Page 33: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

wobjdata : permet de décrire l’objet de travail que le robot soude,

exécute, dans lequel il se déplace, etc.

Exemples :

Feuille := DefFrame(P_1,P_2,P_3);!retourne une pose `a partir de l’origine 3 robtargets

WobjFeuille.uframe := Feuille;

WobjFeuille.oframe.trans := [100,130,0];

WobjFeuille.oframe.rot := OrientZYX(90,0,0);

Systèmes de coordonnées : wobj

33

ZR

YR

XR

Référentiel ATELIER

wobj0

X

Y Z uframe X

Z Y

oframe

Page 34: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Systèmes de coordonnées : wobj

34

X1

X2

Y1 X2

X1

« Enregistre » pour

mémoriser les points

de mesure (pour

contrôles ultérieurs)

Y1

Page 35: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Instructions I/O

35

SetDO : permet de changer la valeur d’un signal de sortie digitale, avec

ou sans retard de synchronisation. SetDO DO01_EE_PINCE01, 1; SetDO DO011_EE_PINCE01, 0;

Set (ou Reset) : mettre (remettre) un signal de sortie à 1 (0).

Pour lire la valeur d’un signal d’entrée :

IF DI09_ZS0101 = 1 THEN ...

WaitDI DI09_ZS0101, 1;

WaitDI diPresenceBloc,1 \MaxTime:=2000;

WHILE not TestDI(DI09_ZS0101) DO ...

WaitTime : attendre un laps de temps donné en secondes.

Page 36: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Synchronisation I/O

36

P40

P30 P20

p10

Page 37: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Synchronisation I/O

37

MoveL p10, v300, z10, tspray;

! Start spraying

SetDO do1, 1;

MoveL p20, v300, z10, tspray;

! Stop spraying

SetDO do1, 0;

MoveL p30, v300, fine, tspray;

Page 38: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Contrôle du programme

38

FOR : répétition un nombre donné de fois.

FOR i FROM 1 TO 10 DO

routine1;

ENDFOR

pas besoin de déclarer la variable du compteur ;

cette variable est accessible uniquement à l’intérieur du boucle (par exemple, on ne peut pas utiliser i dans la routine routine1).

Page 39: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position

Communication à l’aide de TP

39

TPErase : permet d’effacer l’écran du FlexPendant.

TPWrite : permet d’écrire du texte sur le FlexPendant.

(TPWrite "Max. TCP speed in mm/s for my robot ="

\Num:=MaxRobSpeed();)

TPReadFK : permet d’écrire du texte sur les touches de fonction et

détecter la touche appuyée.

(TPReadFK reponse, "Encore?", stEmpty, stEmpty, stEmpty,

"Oui", "Non"; où reponse est de num)

TPReadNum : permet lire un nombre à partir du FlexPendant.

(TPReadNum reponse, "Nombre de blocs?";)

Page 40: GPA545 : Cours 1 · CalcJointT : permet de calculer les angles des axes du robot et des axes externes à partir de données robtarget spécifiées. Offs : permet de décaler la position