La robotique

L'ensemble des équations utiles
Basé sur la méthode de Richard P. Paul
Objectif: comprendre et réaliser les calculs liés aux robots.


Modélisation Géométrique Directe (MGD) Soit les lisaisons pivots d'un robot, chaque liaison est de centre Oi à laquelle on associe un repère Ri et un angle de rotation θi, cette angle et l'angle de rotation moteur.
On commence par représenter les distances et les vecteurs en fonction du schéma ci contre.
O0O1=Z0z ;   O1O2=X1x1+Z1z1 ;   O2O3=X2x2 ;    O3O4=X3x3 ;    O4O5=X4x4 et    O5O6=X5x5
Où les vecteurs x2 , x3 et x4 sont les vecteurs unitaires respectivement colinéaires aux vecteurs O2O3, O3O4 et O4O5.
Il y a égalité remarquables y2=y3, y4=y5, x3=x4, x5=x6

Modélisation Géométrique Directe (MGD)

Convention de Khalil-Kleinfinger.

Elle permet d’exprimer le passage d’un point i à un point j, à l’aide d’une matrice 4 × 4 sous la forme :
[Ti,j]=[AP[0,0,0]1] Avec A la matrice de rotation 3 × 3 et P le vecteur colonne 1 × 3 de déplacement.
Pour réaliser un changement de repère [Ti,k] d'un point i à un point k :
Ti,k=Ti,jTj,k
Notons que cette forme présente aussi l’intérêt de pouvoir être inversée facilement. Le changement de repère [Tj,i] est donné par
Tj,i=Ti,j1=[ATAT.P[0,0,0]1] où AT est la transposée de A.

Notation robotique

Soit le solide i dans le repère j, en robotique avec :
jTi=[jRijPi01]
La notation donne jTi=[SxNxAxPxSyNyAyPySzNzAzPz0001]
SNA sont les cosinus directeur.
S Vecteur x du projeter dans le repère précédent.
N Vecteur y du projeter dans le repère précédent.
A Vecteur z du projeter dans le repère précédent.
P Coordonnée du point dans le repère précédent.
Connaissant ATB et BTC on peut calculer ATC=ATB×BTC

Matrice de transformation de base

Transformation d'une translation

T(x,y,z)=[100x010y001z0001]

Transformation d'une rotation autour de l'axe w=x,y,z

T0,1=[xRw(q)yz0001]

Matrice de transformation globale

0T7=0T11T22T33T44T55T66T7
Modélisation cinématique inverse (MCI) Soit la position de l'élément finale connue nommée U0 avec U0=[SxNxAxPxSyNyAyPySzNzAzPz0001]
Avec S le vecteur d'orientation suivant de X
Avec N le vecteur d'orientation suivant de Y
Avec A le vecteur d'orientation suivant de Z
Et P le point (X,Y,Z)
Equation générale à résoudre :
U0=0T11T22T33T44T55T66T7
1ère itération à résoudre
1T0U0=1T00T11T22T33T44T55T66T71T0U0=1T22T33T44T55T66T7
2ème itération à résoudre
2T11T0U0=2T11T22T33T44T55T66T72T11T0U0=2T33T44T55T66T7
3ème itération à résoudre
3T22T11T0U0=3T44T55T66T7
4ème itération à résoudre
4T33T22T11T0U0=4T55T66T7
5ème itération à résoudre
5T44T33T22T11T0U0=5T66T7
6ème itération à résoudre
6T55T44T33T22T11T0U0=6T7

Transposé de la matrice

Si i1Ti=[i1Rii1Oi1Oi0001]
Alor iTi1=[i1RiTi1RiTi1Oi1Oi0001]

Exemple de transposé

0T1=[cosθ1sinθ100sinθ1cosθ100001Z00001]
La matrice de rotation est donc
0R1=[cosθ1sinθ10sinθ1cosθ10001]
La matrice de transposée devient
1R0=[cosθ1sinθ10sinθ1cosθ10001]

Le vecteur :

0Oi1Oi=[00Z0]

Calcul :

1R0=[cosθ1sinθ10sinθ1cosθ10001][00Z0]

Matrice complétée

1T0=[cosθ1sinθ100sinθ1cosθ100001Z00001]

Concrètement

En fonction de notre schéma cinématique, les équations sont les suivantes:
Pivot en Z1 de centre (0,0,Z0) de 0/1
dans le repère R0
T0,1=[cosθ1sinθ100sinθ1cosθ100001Z00001]
Pivot en Y2 de centre O2(X1,0,Z1) de 1/2
dans le repère R1
T1,2=[cosθ20sinθ2X10100sinθ20cosθ2Z10001]
Pivot en Y3 de centre O3(X2,0,0) de 2/3
dans le repère R2
T2,3=[cosθ30sinθ3X20100sinθ30cosθ300001]
Pivot en X4 de centre O4(X3,0,0) de 3/4
dans le repère R3
T3,4=[100X30cosθ4sinθ400sinθ4cosθ400001]
Pivot en Y5 de centre O5(X4,0,0) de 4/5
dans le repère R4
T4,5=[cosθ50sinθ5X40100sinθ50cosθ500001]
Pivot en X6 de centre O6(X5,0,0) de 5/6
dans le repère R5
T5,6=[100X50cosθ6sinθ600sinθ6cosθ600001]
Juste pour placer le point O7(X6,0,0) de 6/7
dans le repère R6 T6,7=[100X6010000100001]

Coeur de la méthode de Paul

La méthode de Paul décrite par la suite peut s'appliquer dans le cas de robots industriels à 6 degrées de liberté ayant un poignet.
On appelle P le point d'intersection des axes concourants des 3 dernières articulations (O4,O5,O6,O7).
La position du point P (centre du poignet) est fonction des variables articulaires q1,q2,q3.
Aussi, ce type de structure de robot permet de décomposer le problème du calcul des 6 variables articulaires en 2 problèmes :

Equation de position

L'équation de positon est liée au porteur. Puisque O4=O5=O6=O7 on a :
[PxPyPz1]=0T1×1T2×2T3×3T4×[0001]

Première étape

Pour se simplifier les notations, nous prendrons c1 pour cosq1, s1 pour sins1, c23 pour cos(q2+q3), ...
1T0×[PxPyPz1]=1T4×[0001]
[c1Px+s1Pys1Px+c1PyPzL01]=[(c2s3+s2c3)L3+s2L20(s2s3+c2c3)L3+c2L2+L11]
Avec les règles de trigo, c2s3+s2c3=s23
Cette fois, ce n'est pas utile, mais nous pouvons simplifier.
[(1)c1Px+s1Py(2)s1Px+c1Py(3)PzL01]=[s23L3+s2L20c23L3+c2L2+L11]
L'équation (2) nous permet de resoudre la valeur de q1
s1Px+c1Py=0s1c1=PyPx=q1=atan(Px/Py)

Deuxième étape

2T0×[PxPyPz1]=2T4×[0001]
[(4)(c2c1)Px+(c2s1)Pys2Pz+s2L0(5)s1Px+c1Py(6)(s2c1)Px+(s2s1)Py+c2Pzc2L00]=[s3L30c3L3+L21]
(4):c2(c1Px+s1Py)s2Pz+s2L0=s3L3
(6):s2(c1Px+s1Py)+c2Pzc2L0L2=c3L3
Nous prendrons b1=c1Px+s1Py
(4):c2b1s2Pz+s2L0=s3L3
(6):s2b1+c2Pzc2L0L2=c3L3
En sommant ces 2 équations, préalablement mises au carré, on obtient l'équation suivante :
(4+6)2:2s2b1L2+2c2L2(L0Pz)=L32L22b12(PzL0)2
soit l'expression: Xs2+Yc2=Z
X=2b1L2
Y=2L2(L0Pz)
Z=L32L22b12(PzL0)2
{sin(q2)=XZ+ϵYX2+Y2Z2X2+Y2avec ϵ=±1cos(q2)=YZϵXX2+Y2Z2X2+Y2}
Nous trouvons la valeur de q2=atan(XZ+ϵYX2+Y2Z2YZϵXX2+Y2Z2)
Je fait le choix de prendre la plus grande valeur de Z pour le choix d'epsilon, soit la valeur du cosinus.

Résolution de q3

A partir des équations (4) et (6):
q3=atanc2b1+s2(L0Pz)s2b1+c2(PzL0L2)

Equation d'orientation

Il faut commencer par orienter l'effecteur, soit la matrice de rotation SNA, exemple du vecteur A:

SNA=[SxNxAxSyNyAySzNzAz]


Et positionner le point d'arrivée. P(x,y,z) ce qui donne la matrice 0T7=[SxNxAxPXSyNyAyPYSzNzAzPZ0001]
Application numérique

Evaluation de O7

Nous pouvons maintenant évaluer la position (X, Y, Z) du point O5 dans dans le repère du robot en calculant la matrice de transfert T0,5 qui s’exprime alors:
T0,5=T0,1T1,2T2,3T3,4T4,5T5,6T6,7
T0,2=T0,1T1,2=[cosθ1sinθ10X0sinθ1cosθ10Y0001Z00001]×[cosθ20sinθ2X10100sinθ20cosθ2Z10001]
Appelons cosθ1c1, sinθ1s1, 
T0,2=[c1c2s1c1s2X1c1+X0s1c2c1s1s2X1s1+Y0s20c2Z0+Z10001]
T0,3=T0,2T2,3=[c1c2s1c1s2X1c1+X0s1c2c1s1s2X1s1+Y0s20c2Z0+Z10001]×[c30s3X20100s30c300001]=[c1c2c3c1s2s3s1c1c2s3+c1s2c3c1c2X2+c1X1+X0s1c2c3s1s2s3c1s1c2s3+s1s2c3s1c2X2+s1X1+Y0s2c3c2s30s2s3+c2c3s2X2+Z1+Z00001]
Simplification ... c23= cos(θ2+θ3)
T0,3=[c1c23s1c1s23c1s2L2s1c23c1s1s23s1s2L2s230c23c2L2+L1+L00001]
T0,4=T0,3T3,4=T0,3×[100X30c4s400s4c400001]
T0,4=[c1c23c4s1s4c1c23s4s1c4c1s23c1s23L3+c1s2L2s1c23c4+c1s4s1c23s4+c1c4s1s23s1s23L3+s1s2L2s23c4s23s4c23c23L3+c2L2+L1+L00001]
T0,5=[c1c23c4c5s1s4c5c1s23s5c1c23s4s1c4c1c23c4s5s1s4s5+c1s23c5c1(s23L4+s23L3+s2L2)s1c23c4c5+c1s4c5s1s23s5s1c23s4+c1c4s1c23c4s5+c1s4s5+s1s23c5s1(s23L4+s23L3+s2L2)s23c4c5c23s5s23s4s23c4s5+c23c5c23L4+c23L3+c2L2+L1+L00001]
T0,6=[(c1c23c4c5s1s4c5c1s23s5)c6+(c1c23s4s1c4)s6(c1c23c4c5s1s4c5c1s23s5)s6(c1c23s4s1c4)c6c1c23c4s5s1s4s5+c1s23c5(c1c23c4s5s1s4s5+c1s23c5)L5+c1(s23L4+s23L3+s2L2)(s1c23c4c5+c1s4c5s1s23s5)c6+(c1c4s1c23s4)s6(s1c23c4c5+c1s4c5s1s23s5)s6+(c1c4s1c23s4)c6s1c23c4s5+c1s4s5+s1s23c5(s1c23c4s5+c1s4s5+s1s23c5)L5+s1(s23L4+s23L3+s2L2)(s23c4c5c23s5)c6+(s23s4)s6(s23c4c5+c23s5)s6+(s23s4)c6s23c4s5+c23c5(s23c4s5+c23c5)L5+c23L4+c23L3+c2L2+L1+L00001]
T0,7=[(c1c23c4c5s1s4c5c1s23s5)c6+(c1c23s4s1c4)s6(c1c23c4c5s1s4c5c1s23s5)s6(c1c23s4s1c4)c6c1c23c4s5s1s4s5+c1s23c5(c1c23c4s5s1s4s5+c1s23c5)L5+c1(s23L4+s23L3+s2L2)(s1c23c4c5+c1s4c5s1s23s5)c6+(c1c4s1c23s4)s6(s1c23c4c5+c1s4c5s1s23s5)s6+(c1c4s1c23s4)c6s1c23c4s5+c1s4s5+s1s23c5(s1c23c4s5+c1s4s5+s1s23c5)L5+s1(s23L4+s23L3+s2L2)(s23c4c5c23s5)c6+(s23s4)s6(s23c4c5+c23s5)s6+(s23s4)c6s23c4s5+c23c5(s23c4s5+c23c5)L5+c23L4+c23L3+c2L2+L1+L00001]
Exemple concret
Hypothèse prise en compte :

Hypothèse par liaison
Z0=10X1=-30
Z1=50
θ1=6.12
X2=200
θ2=-63.00
X3=100
θ3=85.00
X4=90
θ4=22.00
X5=65
θ5=70.00
X6=50
θ6=41.00



Matrice T01: notée 0T1
0.994-0.10700
0.1070.99400
00110
0001
Matrice T12: notée 1T2
0.4540-0.891-30
0100
0.89100.45450
0001
Matrice T23: notée 2T3
0.08700.996200
0100
-0.99600.0870
0001
Matrice T34: notée 3T4
100100
00.927-0.3750
00.3750.9270
0001
Matrice T45: notée 4T5
0.34200.94090
0100
-0.94000.3420
0001
Matrice T56: notée 5T6
10065
00.755-0.6560
00.6560.7550
0001
Matrice T67: notée 6T7
10050
0100
0010
0001
Matrice T01_: notée 0T1
0.994-0.10700
0.1070.99400
00110
0001
Matrice T02: notée 0T2
0.451-0.107-0.886-29.829
0.0480.994-0.095-3.198
0.89100.45460
0001
Matrice T03: notée 0T3
0.922-0.1070.37260.452
0.0990.9940.0406.482
-0.37500.927238.201
0001
Matrice T04: notée 0T4
0.9220.0410.385152.642
0.0990.937-0.33516.367
-0.3750.3470.860200.741
0001
Matrice T05: notée 0T5
-0.0470.0410.998235.613
0.3490.937-0.02225.263
-0.9360.347-0.058167.026
0001
Matrice T06: notée 0T6
-0.0470.6860.727232.574
0.3490.693-0.63147.949
-0.9360.224-0.272106.189
0001
Matrice T07: notée 0T7
-0.0470.6860.727230.237
0.3490.693-0.63165.400
-0.9360.224-0.27259.392
0001

Coordonnées :
X : 230.237Y : 65.400Z : 59.392Distance : 246.604
Modélisation cinématique inverse (MCI) Maintenant que nous sommes capables de calculer la position X, Y, Z du point O7 en fonction des angles θ1, θ2, θ3, θ4, θ5, θ6,
(position angulaire des servomoteurs), nous allons maintenant rechercher quelles valeurs d’angles sont nécessaires pour atteindre une position X7, Y7, Z7 donnée.
L'hypothèse est tout d'abord de se mettre dans un plan, dans mon cas, XZ, dans lequel je n'ai plus que 3 rotations, on ignore pour l'instant θ1, θ4 et θ6.

Après première simpification reprenons l'équation de T1,7 nous donne:
x1,7=((c2c3s2s3)c5(c2s3+s2c3)s5)X6+(c2c3s2s3)X4+c2X2+X1z1,7=((s2c3c2s3)c5+(s2s3c2c3)s5)X6(s2c3+c2s3)X4s2X2+Z1
Equivalent à :
x1,7=(cos(θ2+θ3)cosθ5sin(θ2+θ3)sinθ5)X6+cos(θ2+θ3)X4+cos(θ2)X2+X1z1,7=(sin(θ2+θ3)cosθ5cos(θ2+θ3)sinθ5)X6sin(θ2+θ3)X4sin(θ2)X2+Z1
ou
x1,7=cos(θ2+θ3+θ5)X6+cos(θ2+θ3)X4+cos(θ2)X2+X1z1,7=sin(θ2+θ3+θ5)X6sin(θ2+θ3)X4sin(θ2)X2+Z1
Rappel d'opérations Matrices et Rotations

Rappel sur les matrices de rotations

Si les angles α, β, et γ sont respectivements les angles autour de x,y et z les matrices de rotation sont les suivantes:
RotX(α)=(1000cosαsinα0sinαcosα)RotY(β)=(cosβ0sinβ010sinβ0cosβ)RotZ(γ)=(cosγsinγ0sinγcosγ0001)
représente une rotation dont le lacet, le tangage et le roulis (également appelé angles de Cardan) ou en aéronautique (z:)Azimuth=lacet=yaw - α ; (y:)Tanguage=pitch - γ; (x:)Roulis=roll - β


Produit de matrice

i,j:cij=k=1naikbkj=ai1b1j+ai2b2j++ainbnj
Soit le produit de deux matrices A=(aij) et B=(bij) de type (m,n) noté AB=(cij), est une matrice de type (m,n) donnée par cij=aij×bij
Exemple :
AijBij=Cij
(1324100212234351)×(5002750821112110)=
=((1×5+3×7+2×2+4×2)(1×0+3×5+2×1+4×1)(1×0+3×0+2×1+4×1)(1×2+3×8+2×1+4×0)(1×5+0×7+0×2+2×2)(1×0+0×5+0×1+2×1)(1×0+0×0+0×1+2×1)(1×2+0×8+0×1+2×0)(1×5+2×7+2×2+3×2)(1×0+2×5+2×1+3×1)(1×0+2×0+2×1+3×1)(1×2+2×8+2×1+3×1)(4×5+3×7+5×2+1×2)(4×0+3×5+5×1+1×1)(4×0+3×0+5×1+1×1)(4×2+3×8+5×1+1×0))=
=(3821628922229155205321637)

Transposé de matrice

C'est une opération simple, ou l'on inverse les lignes et les colonnes
A=(3821628922229155205321637)
AT=(3892953212152162562822037)
Rappel sur la trigonométrie

Rappel sur les propriétés remarquables

sin2t+cos2t=1
sin(A)=sin(A)
cos(A)=cos(A)
sin(A+B)=sinAcosB+cosAsinB
sin(AB)=sinAcosBcosAsinB
cos(A+B)=cosAcosBsinAsinB
cos(AB)=cosAcosB+sinAsinB
sin2A=2sinAcosA
cos2A=cos2Asin2A

Rappel sur les dérivés trigonométrie

cos(A)=sin(A)
sin(A)=cos(A)
cos(u)=usin(u)
sin(u)=ucos(u)
Rappel sur la jacobienne La matrice jacobienne est la matrice des dérivées partielles du premier ordre d'une fonction vectorielle.
Soit une fonction définie :
F(x1xn)F(f1(x1,,xn)fm(x1,,xn))
La dérivée partielles de ces fonctions F en un point P donne:
JF(P)=(f1x1f1xnfmx1fmxn)
Exemple F(x1,x2,x3)=(x1,5x3,4x222x3,x3sinx1)
La matrice jacobienne de la fonction F:
JF(x1,x2,x3)=(10000508x22x3cosx10sinx1)