UPJV, Département EEA M1 EEAII
Parcours ViRob
Fabio MORBIDI
Laboratoire MIS
Équipe Perception et Robotique E-mail: fabio.morbidi@u-picardie.fr
Année Universitaire 2015/2016
Mardi 9h00-12h00, Mercredi 13h30-16h30, Salle 8
Plan du cours
Chapitre 1 : Introduction
1.1 Définitions
1.2 Constituants d’un robot 1.3 Classification des robots 1.4 Caractéristiques d’un robot 1.5 Générations de robots
1.6 Programmation des robots 1.7 Utilisation des robots
Chapitre 2 : Fondements Théoriques
2.1 Positionnement
• Rotation et représentations de la rotation
• Attitude et matrices homogènes
Plan du cours
Chapitre 3 : Modélisation d’un Robot
2.2 Cinématique
• Vitesse d’un solide
• Vecteur vitesse de rotation
• Mouvement rigide
• Torseur cinématique
3.1 Modèle géométrique
• Convention de Denavit-Hartenberg
• Modèle géométrique direct
• Modèle géométrique inverse 3.2 Modèle cinématique
• Modèle cinématique direct
• Modèle cinématique inverse 3.3 Modèle dynamique
• Formulation de Lagrange
scalaires (nombres réels)
Notation
0 n×m ∈ R n×m I n ∈ R n×n
vecteur colonne de dimension
matrice avec lignes et colonnes
matrice identité matrice de zéros
norme euclidienne du vecteur
n × n n × m n
n
a, λ, M ∈ R
A ∈ R n×m
A T ∈ R m×n transposée de la matrice
produit scalaire des vecteurs x, y ∈ R n x ∈ R n
x =
x, x
déterminant et inverse de
x ∈ R n A ∈ R n×m
m
x × y produit vectoriel des vecteurs x, y ∈ R n det(A), A −1 A ∈ R n×n
x, y = x T y
, x =
⎡
⎣ x
1.. . x
n⎤
⎦
• Un manipulateur peut être représenté comme une chaîne cinématique de segments reliés par l'intermédiaire d'articulations rotoïdes ou prismatiques
• Le mouvement résultant de la structure est obtenu par composition des mouvements élémentaires de chaque segment par rapport au précédent
• Afin de manipuler un objet dans l'espace, il est nécessaire de décrire la position et l'orientation (pose) de l'effecteur
base
effecteur
x
ey
ez
eOe
θ
1θ
2θ
4d
3Objectif final: Exprimer la pose de l’effecteur en fonction des variables des articulations, par rapport à un repère donné (ex. le repère de la base)
Manipulateur générique
Motivation
?
2.1 Positionnement
La pose d'un solide (ou corps rigide) dans l'espace 3-D peut être complètement décrite par 6 paramètres indépendants:
• 3 paramètres indépendants définissent la position
d'un point, noté O’, du solide dans le repère fixe O- xyz
(ex. coordonnées cartésiennes, cylindriques ou sphériques)
• 3 paramètres indépendants déterminent l'orientation du solide autour du point O’ (ex. angles d’Euler)
O
O
y
z
z
y x
x
solide
repère fixe
solide
La position du point O’ du solide par rapport au repère fixe O- xyz
s’exprime par l’équation:
o = o x x + o y y + o z z
où sont les vecteurs unitaires (la norme est 1) des axes du repère O- xyz et sont le composants du vecteur le long de chacun des trois axes
x, y, z
o
x, o
y, o
zo
∈ R
3repère fixe
•
Afin de décrire l'orientation du solide, considérons un repère attaché au corps et exprimons ses vecteurs unitaires par rapport au repère O
-xyz
• Soit O’- x’y’z’ un tel repère avec origine O’ et soient les vecteurs unitaires des axes
• Ces vecteurs sont exprimés par rapport au repère O- xyz par les équations:
x
, y
, z
x = x x x + x y y + x z z y = y x x + y y y + y z z z = z x x + z y y + z z z
• Sous forme compacte, les vecteurs unitaires qui décrivent
l'orientation du solide par rapport à O- xyz, peuvent être combinés dans la matrice 3 3:
x
, y
, z
R = [x
y
z
] =
⎡
⎢ ⎣
x
xy
xz
xx
yy
yz
yx
zy
zz
z⎤
⎥ ⎦ =
⎡
⎢ ⎣
x
Tx y
Tx z
Tx x
Ty y
Ty z
Ty x
Tz y
Tz z
Tz
⎤
⎥ ⎦
qui est appelée matrice de rotation
Propriétés des matrices de rotation
• Les colonnes d’une matrice de rotation sont orthogonales à deux à deux:
La norme des colonnes d’une matrice de rotation est égale à 1:
En conséquence, est une matrice orthogonale, c’est-à-dire:
x
Ty
= 0, y
Tz
= 0, z
Tx
= 0
x
Tx
= 1, y
Ty
= 1, z
Tz
= 1 R
R
TR = I
3Si on multiplie à droite chaque côté de l’équation précédente par on trouve que:
c’est-à-dire, la transposée d’une matrice de rotation est égale à son inverse
R
−1R
T= R
−1• Si le repère est direct (on use la « règle de la main droite »): det(R) = 1 SO(n) {R ∈ R
n×n: R
TR = I
n, det(R) = 1} Groupe spécial
orthogonal de
dimension n
Rotations élémentaires
• Considérons les rotations qu’on peut obtenir à partir de rotations élémentaires autour des axes x , y , z
• Ces rotations sont positives s’ils sont faites autour des axes relatifs dans le sens anti-horaire (dans le sens contraire des aiguilles d'une montre)
Exemple : le repère O- xyz est pivoté d’un angle α autour de l’axe z
et O- x’y’z’ est le repère qui résulte de cette rotation
Rotations élémentaires
• Les vecteurs unitaires de
O-x’y’z’ peuvent être exprimés par rapport au repère O- xyz comme:
x
=
⎡
⎢ ⎣
cos α sin α
0
⎤
⎥ ⎦ , y
=
⎡
⎢ ⎣
− sin α cos α
0
⎤
⎥ ⎦ , z
=
⎡
⎢ ⎣ 0 0 1
⎤
⎥ ⎦
• La matrice de rotation de
O-x’y’z’ par rapport à O- xyz engendrée est donc:
R
z(α) =
⎡
⎢ ⎣
cos α − sin α 0 sin α cos α 0
0 0 1
⎤
⎥ ⎦
De la même façon, on peut trouver la matrice de rotation autour de
l’axe y d’un angle et la matrice de rotation autour de l’axe x d’un angle
Remarque: Ces matrices seront très utiles pour décrire des rotations dans l’espace 3D autour d’axes arbitraires
β γ
Rotations élémentaires: sommaire
R
z(α) =
⎡
⎢ ⎣
cos α − sin α 0 sin α cos α 0
0 0 1
⎤
⎥ ⎦
Matrice de rotation autour de l’axe x d’un angle
Remarque:
Pour les rotations élémentaires, les propriétés suivantes sont vérifiées:
R
x(γ ) =
⎡
⎢ ⎣
1 0 0
0 cos γ − sin γ 0 sin γ cos γ
⎤
⎥ ⎦
R
y(β ) =
⎡
⎢ ⎣
cos β 0 sin β
0 1 0
− sin β 0 cos β
⎤
⎥ ⎦ Matrice de rotation autour de l’axe y d’un angle
Matrice de rotation autour de l’axe z d’un angle
γ
β
α
R
x(−γ ) = R
Tx(γ), R
y(−β ) = R
Ty(β ), R
z(−α) = R
Tz(α)
Représentation d’un vecteur
Hypothèse simplificatrice: l’origine du repère du solide coïncide avec l'origine du repère fixe. Donc
On peut représenter le point 3D P comme:
p =
⎡
⎢ ⎣ p
xp
yp
z⎤
⎥ ⎦ par rapport à O- xyz
par rapport à O- x’y’z’
et
p
=
⎡
⎢ ⎣ p
xp
yp
z⎤
⎥ ⎦
o
= 0
3×1= [0, 0, 0]
TReprésentation d’un vecteur
Mais cela signifie que (rappel les équations précédentes):
représente la matrice de transformation qui permet d’exprimer les coordonnées du point P dans le repère
O-xyz , en function des coordonnées du même point dans le repère
O-x’y’z’
Mais et sont deux représentations du même point P, donc p p
p = R p
est une matrice orthogonale. Donc la transformation inverse est simplement: R
p = R T p
R
p = p
xx
+ p
yy
+ p
zz
= x
y
z
p
Représentation d’un vecteur
Exemple:
Deux repères avec la même origine et une rotation relative d’un angle α
autour de l’axe z
p p , : vecteurs des coordonnées
du point P dans les
repères O- xyz et O- x’y’z’
Remarque:
La matrice représente non seulement l'orientation d'un repère par rapport à un autre, mais elle décrit également la transformation d'un vecteur dans un repère en un autre avec la même origine
p
x= p
xcos α − p
ysin α p
y= p
xsin α + p
ycos α p
z= p
zR
z(α)
On trouve facilement que:
Composition de matrices de rotation
Problème: comment composer plusieurs rotations ?
Considérons trois repères O
-x
0y
0z
0,
O-x1 y1 z1,
O-x2 y2z2avec la même origine O coordonnées d’un point P dans les trois repères
p
0, p
1, p
2∈ R
3:
O-x
0y
0z
0O-x
1y
1z
1O-x
2y
2z
2O
P
Composition de matrices de rotation
Soit la matrice de rotation du repère R
jipar rapport au repère
Donc
De même, on obtient:
p 1 = R 1 2 p 2
p 0 = R 0 1 p 1 p 0 = R 0 2 p 2
Mais alors:
R 0 2 = R 0 1 R 1 2
i j
Composition de matrices de rotation
Considérons un repère initialement aligné avec
O-x0 y0 z0La rotation définie par peut être interprétée comme obtenue en deux étapes:
1. Tourne le repère avec pour l’aligner avec O-x
1y
1z
12. Tourne le repère, maintenant aligné avec O-x
1y
1z
1, en utilisant pour l’aligner avec O-x
2y
2z
2R
02R
01R
12Remarque:
• La rotation d'ensemble peut être exprimée comme une séquence de rotations partielles
• Chaque rotation est définie par rapport à la précédente
• Le repère par rapport à lequel la rotation se produit est appelé repère courant
• La composition de rotations successives est obtenue par multiplication à droite des matrices de rotation en suivant l'ordre donné des rotations
• Avec notre notation, on a que:
R
ji= (R
ij)
−1= (R
ij)
TComposition de matrices de rotation
Remarque:
• Les rotations successives peuvent aussi être specifiées toujours par rapport au repère initiale
• On dit donc que les rotations sont faites par rapport au repère fixe
• La composition de rotations successives est obtenue par multiplication à gauche des singles matrices de rotation en suivant l’ordre donné des
matrices de rotation
Problème de base: le produit matriciel n’est pas commutatif !
• Deux rotations, en général, ne commutent pas et la composition dépend de l’ordre des singles rotations, à savoir:
R
01R
12= R
12R
01Composition de matrices de rotation
Exemple:
R
x(π/4) = ,
⎡
⎢ ⎣
1 0 0
0 √
2/2 − √ 2/2 0 √
2/2 √ 2/2
⎤
⎥ ⎦ R
y(π/6) =
⎡
⎢ ⎣
√ 3/2 0 1/2
0 1 0
−1/2 0 √ 3/2
⎤
⎥ ⎦
R
y(π/6) R
x(π/4) =
⎡
⎢ ⎣
√ 3/2 √
2/4 √ 2/4
0 √
2/2 − √ 2/2
−1/2 √
6/4 √ 6/4
⎤
⎥ ⎦
≠
R
x(π/4) R
y(π/6) =
⎡
⎢ ⎣
√ 3/2 0 1/2
√ 2/4 √
2/2 − √ 6/4
− √
2/4 √
2/2 √ 6/4
⎤
⎥ ⎦
Composition de matrices de rotation
• Rotations successives d'un objet autour des axes du repère courant
a)
b)
=
Composition de matrices de rotation
• Rotations successives d'un objet autour des axes du repère fixe
a)
b)
=
Représentations de la rotation: introduction
• Les matrices de rotation fournissent une description redondante de l’orientation d’un corps
• En effet, la matrice de rotation comprend 9 éléments:
• Mais il y a 6 relations indépendantes entre ces éléments (contraintes de orthogonalité et de normalité des colonnes)
R
R =
⎡
⎢ ⎣
r
11r
12r
13r
21r
22r
23r
31r
32r
33⎤
⎥ ⎦
r
11r
12+ r
21r
22+ r
31r
32= 0 r
11r
13+ r
21r
23+ r
31r
33= 0 r
12r
13+ r
21r
23+ r
31r
33= 0
r
112+ r
212+ r
312= 1 r
122+ r
222+ r
322= 1 r
132+ r
232+ r
332= 1
Conclusion: 3 paramètres sont suffisantes pour décrire l'orientation d'un corps
Une représentation de l'orientation en fonction de 3 paramètres indépendants
est dite représentation minimale
Représentations de la rotation: introduction
• Une représentation minimale de l’orientation peut être obtenue en utilisant un ensemble de trois angles
• Une matrice de rotation générique peut être obtenue en composant une séquence opportune de 3 rotations élémentaires. Attention: il faut garantir que deux rotations successives ne sont pas faites autour d’axes parallèles
• Ca veut dire que 12 ensembles différentes d’angles sont admissibles parmi les 3
3= 27 combinaisons possibles
• Chaque ensemble représente une triplet d’angles d’Euler φ = [ϕ, θ, ψ]
TDeux triplets d’angles d’Euler très utilisées sont:
1. Les angles ZYZ
2. Les angles ZYX ou roulis-tangage-lacet (roll-pitch-yaw, en anglais)
Leonhard Euler (1707–1783)
Représentation roulis-tangage-lacet
• Représentation de l'orientation utilisée en aéronautique pour décrire l’attitude d’un avion
• Les angles représentent des rotations définies dans un repère fixe attaché au centre de masse de l’avion φ = [ϕ, θ, ψ ]
Tx
y z
lacet (yaw)
roulis (roll) tangage
(pitch)
θ ϕ
ψ
La rotation décrite par les angles de roulis, tangage et lacet est obtenue comme composition de 3 rotations élémentaires:
• Tourner le repère d’un angle autour de l’axe x (lacet): rotation définie par
• Tourner le repère d’un angle autour de l’axe y (tangage): rotation définie par
• Tourner le repère d’un angle autour de l’axe z (roulis): rotation définie par
La rotation finale est obtenue en composant les rotations par rapport au repère fixe, et peut être calculée en multipliant à gauche les matrices de rotation élémentaires:
Représentation roulis-tangage-lacet
ψ
θ
R
z(ϕ) ϕ R
y(θ) R
x(ψ)
R(φ) = R
z(ϕ) R
y(θ) R
x(ψ ) =
⎡
⎢ ⎣
c
ϕc
θc
ϕs
θs
ψ− s
ϕc
ψc
ϕs
θc
ψ+ s
ϕs
ψs
ϕc
θs
ϕs
θs
ψ+ c
ϕc
ψs
ϕs
θc
ψ− c
ϕs
ψ−s
θc
θs
ψc
θc
ψ⎤
⎥ ⎦
où, pour plus de simplicité: c
ϕ= cos ϕ, s
θ= sin θ
Problème inverse: determiner les angles de roulis, tangage et lacet qui correspondent à une matrice de rotation donnée:
Représentation roulis-tangage-lacet
R =
⎡
⎢ ⎣
r
11r
12r
13r
21r
22r
23r
31r
32r
33⎤
⎥ ⎦
Si on compare cette expression avec , on trouve que la solution, pour , est: R(φ)
ϕ = Atan2(r
21, r
11) θ = Atan2
− r
31,
r
322+ r
332ψ = Atan2(r
32, r
33)
ϕ = Atan2(−r
21, −r
11) θ = Atan2
− r
31, −
r
322+ r
233ψ = Atan2(−r
32, −r
33)
L’autre solution équivalente pour , est:
θ ∈ (−π/2, π/2)
θ ∈ (π/2, 3π/2)
R
Remarque 1:
• Si les solutions précédentes sont dégénerés: dans ce cas on peut seulement déterminer la somme ou difference de et
• Les configurations qui correspondent aux angles caractérisent les singularities de représentation des angles d’Euler
Représentation roulis-tangage-lacet
• est la fonction arctangente à 2 arguments
• calcule l’arctangente du rapport y/x mais elle utilise le signe des arguments pour determiner le bon quadrant de l’angle Remarque 2:
cos θ = 0
ψ ϕ
θ = ± π/2
x y
x’
y’
A
B
… angle A ou B ?
Atan2(y, x) =
⎧ ⎪
⎪ ⎪
⎪ ⎪
⎪ ⎪
⎪ ⎪
⎨
⎪ ⎪
⎪ ⎪
⎪ ⎪
⎪ ⎪
⎪ ⎩
arctan(y/x) x > 0
arctan(y/x) + π x ≥ 0, x < 0 arctan(y/x) − π y < 0, x < 0
+π/2 y > 0, x = 0
−π/2 y < 0, x = 0
non defini y = 0, x = 0 arctan(y/x) = arctan(y
/x
)
Atan2(y, x) Atan2(y, x)
y ≥ 0
Représentation angle/axe
• Une représentation non minimale de l’orientation peut être obtenue en utilisant 4 parametrès qui expriment une rotation d’un angle autour d’un axe
générique dans l’espace 3D
• Cette représentation est utile, par exemple, pour planifier la trajectoire de l’effecteur d’un manipulateur
θ
x
y z
r
O
θ Vecteur unitaire ( ) de l’axe de rotation dans le repère O- x y z
L’angle est considéré comme positif θ
si la rotation autour de l’axe r est faite dans le sens anti-horaire
r = 1
r = [r x , r y , r z ] T
Représentation angle/axe
Proprieté R(θ, r) =
⎡
⎢ ⎣
r
x2(1 − c
θ) + c
θr
xr
y(1 − c
θ) − r
zs
θr
xr
z(1 − c
θ) + r
ys
θr
xr
y(1 − c
θ) + r
zs
θr
y2(1 − c
θ) + c
θr
yr
z(1 − c
θ) − r
xs
θr
xr
z(1 − c
θ) − r
ys
θr
yr
z(1 − c
θ) + r
xs
θr
z2(1 − c
θ) + c
θ⎤
⎥ ⎦
• Une rotation d’un angle autour de l’axe ne peut pas être distinguée d’un rotation d’un angle autour de l’axe
• La représentation angle/axe n’est pas unique !
Matrice de rotation d’un angle autour de l’axe r (à nouveau, pour plus de simplicité ) θ
R(−θ, −r) = R(θ, r)
−θ −r
r θ
, s
θ= sin θ
c
θ= cos θ
Représentation angle/axe
Problème inverse: determiner l’angle et l’axe qui correspondent à une matrice de rotation donnée:
R =
⎡
⎢ ⎣
r
11r
12r
13r
21r
22r
23r
31r
32r
33⎤
⎥ ⎦
• Si on obtient:
θ = arccos
r
11+ r
22+ r
33− 1 2
r = 1 2 sin θ
⎡
⎢ ⎣
r
32− r
23r
13− r
31r
21− r
12⎤
⎥ ⎦ sin θ = 0
angle
axe R
• Si , les équations précédentes ne sont pas définies
Pour resoudre le problème inverse, il faut travailler avec l’expression
spécifique de la matrice R et trouver des formules de resolution pour les deux cas et
Si (zéro rotation), le vecteur unitaire r est arbitraire (singularité)
sin θ = 0
θ = 0 θ = π
θ = 0
Quaternions
• Les inconvénients de la représentation angle/axe peuvent être surmontés par une autre représentation à 4 parametrès, le quaternion unitaire, defini par:
Q = {η, }
où
η = cos(θ/2)
= [
x,
y,
z]
T= sin(θ/2) r
avec la contrainte
η
2+
2x+
2y+
2z= 1
dont le nom de quaternion unitaire
• Une rotation de autour de donne le même quaternion que celui
associé à une rotation de autour de . Le problème de non-unicité de la représentation angle/axe est réglé
−θ θ
−r r
: partie scalaire du quaternion
: partie vectorielle du quaternion
• Matrice de rotation associée à un quaternion unitaire donné:
William R. Hamilton (1806–1865)
i
2= j
2= k
2= ijk = −1
Broom Bridge, Royal Canal, Dublin
• Il y a également des formules pour le problème inverse.
R(η, ) =
⎡
⎢ ⎣
2(η
2+
2x) − 1 2(
xy
− η
z) 2(
xz
+ η
y) 2(
xy
+ η
x) 2(η
2+
2y) − 1 2(
yz
− η
x) 2(
xz
− η
y) 2(
yz
+ η
x) 2(η
2+
2z) − 1
⎤
⎥ ⎦ Q = {η, }
Quaternions
(16 October 1843)