next_inactive up previous


Outils Mathématiques: Position, Orientation et Mouvement
DEA IVR

François Faure , UJF-Grenoble

Versions imprimables:
PDF ps.gz

Ce cours est une introduction aux techniques permettant de définir les mouvement de points et solides dans l'espace. Il se compose de quatre séances d'1h30:

  1. rappels mathématiques (algèbre linéaire, géométrie euclidienne, matrices)
  2. positionnement (repères, rotations, chaînes cinématiques)
  3. cinématique (vitesses et accélérations, lois de composition)
  4. cinématique inverse (contrôle de mouvement)


Table des matières

1. Rappels d'algèbre linéaire

1.1 Structures

1.1.1 Groupes

Définition Exemple
Ensemble $ \mathbb{Z}$
muni d'une loi de composition interne +
associative $ a+(b+c) = (a+b)+c$
munie d'un elément neutre $ a+0=a$
tout élement a un symétrique $ a+(-a)=0$

Si l'opération est commutative ($ a+b=b+a$) alors le groupe est dit commutatif.

1.1.2 Espaces vectoriels

Définition Exemple
$ \stackrel{\rightarrow}{E}$ est un espace vectoriel (EV) sur K si $ \mbox{$\mathbb{R}$}$$ ^3$ EV sur $ \mbox{$\mathbb{R}$}$
$ \stackrel{\rightarrow}{E}$ a une opération interne qui lui confère une structure de groupe commutatif $ \mbox{$\mathbb{R}$}$$ ^3$,+
$ \stackrel{\rightarrow}{E}$ possède une operation externe tq:
$\displaystyle \lambda.(\mu.x)$ $\displaystyle =$ $\displaystyle (\lambda\mu).x$  
$\displaystyle (\lambda+\mu).x$ $\displaystyle =$ $\displaystyle \lambda.x + \mu.x$  
$\displaystyle \lambda.(x+y)$ $\displaystyle =$ $\displaystyle \lambda.x + \lambda.y$  
$\displaystyle 1.x$ $\displaystyle =$ $\displaystyle x \;\;(element\;neutre)$  

multiplication scalaire par vecteur


1.1.3 Sous-espaces vectoriels

combinaison linéaire: Une combinaison linéaire d'une partie $ A$ de $ \stackrel{\rightarrow}{E}$ est: $ \sum_i\lambda_ia_i$, avec $ a_i \in A$

sous-espace vectoriel (SEV): Un sous-espace vectoriel de $ \stackrel{\rightarrow}{E}$ est une sous-ensemble de $ \stackrel{\rightarrow}{E}$ stable par combinaison lineaire.
Exemple: une droite vectorielle est un SEV de $ \mbox{$\mathbb{R}$}$$ ^3$.

SEV engendré par une partie A de $ \stackrel{\rightarrow}{E}$: L'ensemble des combinaisons linéaires des vecteurs de A.
Exemple: plan vectoriel engendré par deux vecteurs non colineaires.

somme de SEV $ \stackrel{\rightarrow}{E_1}$ et $ \stackrel{\rightarrow}{E_2}$ de $ \stackrel{\rightarrow}{E}$: $ \stackrel{\rightarrow}{E_1} + \stackrel{\rightarrow}{E_2} = \{x+y; \;x\in\stackrel{\rightarrow}{E_1},y\in\stackrel{\rightarrow}{E_2}\}$. La somme de deux SEV est un SEV. L'intersection aussi. Si l'intersection de deux SEV est nulle, la somme est dite directe et notée $ \stackrel{\rightarrow}{E_1} \oplus \stackrel{\rightarrow}{E_2}$
Exemple dans $ \mbox{$\mathbb{R}$}$$ ^3$: la somme de deux droites vectorielles distinctes est directe et c'est un plan vectoriel.


1.1.4 Systèmes de vecteurs, bases

système de vecteurs: ensemble $ \{ x_i, \;i\in I\}$$ I$ est un ensemble fini de cardinal p, appelé ordre du système

système linéairement indépendant: système de vecteurs dans lequel $ \sum_{i}^{p}\lambda_ix_i=0 \Rightarrow \forall i\;\lambda_i=0$

système lié: système non linéairement indépendant

base d'un EV: système libre $ \{ e_i, \;i\in I\}$ de vecteurs de $ \stackrel{\rightarrow}{E}$ tel que pour tout élément x de $ \stackrel{\rightarrow}{E}$ il existe une decomposition unique $ x=\sum_{i\in I}\lambda_ie_i$

base orthonormée: Base dont tous les vecteurs sont orthogonaux deux à deux (orthogonalité définie en section [*]).

base orthonormée directe: En dimension 3, base orthonormée dont les vecteurs sont orientés comme le pouce, l'inde et le majeur de la main droite. Par extension, base construite (ou constructible) par produits vectoriels successifs. (produit vectoriel défini en section [*]).

rang d'un système: Le rang d'un système vaut $ r$ si:

EV de dimension finie: EV qui admet une base de rang fini. Toutes les bases d'un même EV sont de même rang, ce rang est appelé dimension de l'espace.

composantes: Si $ n$ est la dimension (finie) d'un EV et $ B=\{$$ e_i$$ ,\;i\in[1..n]\}$ une base, on peut définir un vecteur $ x$$ =\sum_{i=1}^n x_i$   $ e_i$ par ses composantes dans la base: $ \mbox{${}^{B}\mbox{\boldmath $x$}$}$$ = (x_1,\hdots x_n)^T$

codimension: Si $ \stackrel{\rightarrow}{E_1}$ et $ \stackrel{\rightarrow}{E_2}$ sont deux SEV de $ \stackrel{\rightarrow}{E}$ tels que $ \stackrel{\rightarrow}{E_1} \oplus \stackrel{\rightarrow}{E_2} = \stackrel{\rightarrow}{E}$ alors la dimension de $ \stackrel{\rightarrow}{E_2}$ est appelée codimension de $ \stackrel{\rightarrow}{E_1}$, et réciproquement.
Exemple: dans $ \mbox{$\mathbb{R}$}$$ ^3$, la codimension d'une droite est 2, la codimension d'un plan est 1.

hyperplan: SEV de codimension 1

1.1.5 Espaces affines

Soit $ \stackrel{\rightarrow}{E}$ un espace vectoriel. Un ensemble E est un espace affine (EA) associé à $ \stackrel{\rightarrow}{E}$ s'il existe une application $ \varphi$ telle que On note $ \varphi(M,N)$ $ \mbox{$\overrightarrow{MN}$}$.

sous-espace affine: F est un sous-espace affine de E si F est un espace affine associé à un SEV $ \stackrel{\rightarrow}{F}$ de $ \stackrel{\rightarrow}{E}$. On dit que $ \stackrel{\rightarrow}{F}$ est la direction de F.

SEA parallèles: SEA ayant la même direction.

Propriétés:

Repère: Couple $ (O,B)$$ O$ est un point de E et $ B$ une base de $ \stackrel{\rightarrow}{E}$. Pour tout point $ M$ de E, $ \mbox{$\overrightarrow{OM}$}$$ \in \stackrel{\rightarrow}{E}$.

1.2 Espaces euclidiens

Un espace est dit euclidien s'il est muni d'un produit scalaire.

1.2.1 Produit scalaire

Forme bilinéaire, symétrique, définie, positive: En dimension finie on peut le definir par une matrice A tq: $ <x,y>=x^TAy$.


1.2.2 Normes

norme euclidienne (ou norme indice 2): $ \Vert x\Vert = \sqrt{<x,x>}$

Propriétés:

Autres normes:


1.2.3 Orthogonalite et othonormalité

orthogonalité: $ x \perp y \Leftrightarrow <x,y>=0$

système orthogonal: vecteurs orthogonaux 2 à 2.

vecteur unitaire: vecteur de norme 1.

système orthonormal: système orthogonal de vecteurs unitaires.

base orthonormale: base dont les vecteurs forment un système orthonormal. Dans une base orthonormale, la matrice du produit scalaire est l'identité.

base canonique: dans un espace euclidien, base constituée des vecteurs $ (1,0,0\hdots)$, $ (0,1,0,0\hdots)$ etc.

SEV orthogonaux: $ \stackrel{\rightarrow}{E_1}$ et $ \stackrel{\rightarrow}{E_2}$ sont des SEV orthogonaux si tout élément de l'un est orthogonal a tout élement de l'autre.

SEA orthogonaux: SEA dont les SEV associés sont orthogonaux.


1.2.4 Produit vectoriel

Soient $ u$$ ,$$ v$ deux vecteurs en dimension 3. Le produit vectoriel $ w$$ =$   $ u$$ \wedge$   $ v$ se calcule par: $ w_i = u_{i+1 mod 3}v_{i+2 mod 3} - u_{i+2 mod 3}v_{i+1 mod 3}$

Propriétés:

Angles entre vecteurs:

$\displaystyle <$$\displaystyle \mbox{\boldmath$u$}$$\displaystyle ,$   $\displaystyle \mbox{\boldmath$v$}$$\displaystyle >$ $\displaystyle =$ $\displaystyle \Vert$$\displaystyle \mbox{\boldmath$u$}$$\displaystyle \Vert\Vert$$\displaystyle \mbox{\boldmath$v$}$$\displaystyle \Vert cos(\theta)$  
$\displaystyle \Vert$$\displaystyle \mbox{\boldmath$u$}$$\displaystyle \wedge$   $\displaystyle \mbox{\boldmath$v$}$$\displaystyle \Vert$ $\displaystyle =$ $\displaystyle \Vert$$\displaystyle \mbox{\boldmath$u$}$$\displaystyle \Vert\Vert$$\displaystyle \mbox{\boldmath$v$}$$\displaystyle \Vert sin(\theta)$  

Forme matricielle: Pour tout vecteur $ n$$ =\left( n_x, n_y, n_z \right)^T$ et tout vecteur $ u$ on a:

$\displaystyle \mbox{\boldmath$n$}$$\displaystyle \wedge$   $\displaystyle \mbox{\boldmath$u$}$$\displaystyle =$   $\displaystyle \mbox{$\left( \mbox{\boldmath$n$} \wedge \right)$}$$\displaystyle \mbox{\boldmath$u$}$    avec    $\displaystyle \mbox{$\left( \mbox{\boldmath$n$} \wedge \right)$}$$\displaystyle = \left(\begin{array}{ccc} 0 & -n_z & n_y  n_z & 0 & -n_x  -n_y & n_x & 0 \end{array}\right)$ (1.1)

1.2.5 Produit mixte

En dimension 3 le produit mixte de trois vecteurs u,v,w est défini par:

$\displaystyle (u,v,w) = (u\wedge v)w
$

Propriétés:

1.3 Applications linéaires et affines


1.3.1 Application linéaire

Application linéaire (AL): Soient $ \stackrel{\rightarrow}{E}$ et $ \stackrel{\rightarrow}{F}$ deux espaces vectoriels. Une application $ f: \stackrel{\rightarrow}{E} \longrightarrow \stackrel{\rightarrow}{F} $ est dite linéaire si elle vérifie:

endomorphisme: AL de $ \stackrel{\rightarrow}{E}$ dans $ \stackrel{\rightarrow}{E}$

composition: la composée $ g\circ f$ de deux applications linéaires est l'application qui à $ x$ associe $ g(f(x))$. La composée de deux AL est une AL.

image d'un EV par une AL: L'image $ Im_f=f^\bullet(\stackrel{\rightarrow}{E})$ d'un EV $ \stackrel{\rightarrow}{E}$ est un sous-espace vectoriel formé des transformees des élements de $ \stackrel{\rightarrow}{E}$.
Exemple: dans $ \mbox{$\mathbb{R}$}$$ ^3$, une projection sur un plan a pour image ce plan.

image réciproque: L'image réciproque d'un SEV de $ \stackrel{\rightarrow}{F}$ par une AL de $ \stackrel{\rightarrow}{E}$ dans $ \stackrel{\rightarrow}{F}$ est l'ensemble des élements de $ \stackrel{\rightarrow}{E}$ se transformant en éléments de $ \stackrel{\rightarrow}{F}$. C'est un SEV de $ \stackrel{\rightarrow}{E}$.

noyau d'une AL: Le noyau d'une application $ f$ de $ \stackrel{\rightarrow}{E}$ dans $ \stackrel{\rightarrow}{F}$, noté $ Ker_{f}$, est l'image réciproque de l'élément nul de $ \stackrel{\rightarrow}{F}$ Exemple: dans $ \mbox{$\mathbb{R}$}$$ ^3$, le noyau d'une projection sur un plan est la droite dans la direction de projection.

En dimension finie, $ dim(Im_f)+dim(Ker_f) = dim(\stackrel{\rightarrow}{E})$
Exemple: Dans un EV de dimension $ n$, projection $ f$ sur une droite. $ dim(Im_f) = 1$, $ dim(Ker_f)=n-1$

isométrie vectorielle: application linéaire qui conserve le produit scalaire. Transforme une base orthonormale en une base orthonormale.

1.3.2 Expression matricielle d'une application linéaire

Notons:

\begin{displaymath}
\begin{array}{rl}
g:\stackrel{\rightarrow}{E_m} &\longrighta...
...x{\boldmath $x$} &\longmapsto \mbox{\boldmath $x'$}
\end{array}\end{displaymath}

une AL $ g$ d'un espace $ \stackrel{\rightarrow}{E_m}$ de dimension $ m$ vers un espace $ \stackrel{\rightarrow}{E_n}$ de dimension $ n$. Soient les bases: La transformée d'un vecteur de $ B$ peut s'écrire: $ g($$ e_j$$ ) = \sum_{i=1}^na_{ij}$$ f_i$. On peut donc formuler la transformation de $ x$ par:
$\displaystyle g($$\displaystyle \mbox{\boldmath$x$}$$\displaystyle )$ $\displaystyle =$ $\displaystyle \sum_{j=1}^m x_j g($$\displaystyle \mbox{\boldmath$e_j$}$$\displaystyle )$  
  $\displaystyle =$ $\displaystyle \sum_{j=1}^m x_j \sum_{i=1}^na_{ij}$$\displaystyle \mbox{\boldmath$f_i$}$  
  $\displaystyle =$ $\displaystyle \sum_{i=1}^n\sum_{j=1}^m a_{ij} x_j$   $\displaystyle \mbox{\boldmath$f_i$}$  

Donc pour chaque composante de $ x'$ on a $ x'_i=\sum_{j=1}^m a_{ij}x_j$. Nous pouvons ainsi décrire l'application $ g$ sous forme d'une matrice $ G$ telle que    $ x'$$ =$   $ G$$ x$$ $:

\begin{displaymath}
\begin{array}{rl}
& \left( \begin{array}{c} x_1  \vdots \...
... \vdots  x'_i \vdots x'_n \end{array} \right)
\end{array}\end{displaymath}

\fbox{Les colonnes de la matrice \mbox{\boldmath $G$} sont les transformés des vecteurs de base de l'ensemble de départ par l'application.}

1.3.3 Changement de base d'un vecteur

Un changement de base est une application lineaire qui aux composantes d'un vecteur dans une certaine base associe les composantes de ce vecteur dans une autre base du même espace. Soient les bases: Connaissant $ \mbox{${}^{B}\mbox{\boldmath $x$}$}$ on cherche à déterminer $ \mbox{${}^{B'}\mbox{\boldmath $x$}$}$. Sachant exprimer les vecteurs de B dans B': $ e_j$$ = \sum_{i=1}^n p_{ij}$   $ f_i$, nous pouvons écrire:
$\displaystyle \mbox{\boldmath$x$}$ $\displaystyle =$ $\displaystyle \sum_{j=1}^n x_j$   $\displaystyle \mbox{\boldmath$e_j$}$  
  $\displaystyle =$ $\displaystyle \sum_{j=1}^n x_j \sum_{i=1}^n p_{ij}$   $\displaystyle \mbox{\boldmath$f_i$}$  
  $\displaystyle =$ $\displaystyle \sum_{i=1}^n \sum_{j=1}^n p_{ij} x_j$   $\displaystyle \mbox{\boldmath$f_i$}$  

d'où $ x'_i = \sum_{j=1}^n p_{ij} x_j$ Nous pouvons ainsi décrire le passage de B à B' sous forme d'une matrice $ \mbox{${}_{B}^{B'}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$ telle que    $ \mbox{${}^{B'}\mbox{\boldmath $x$}$}$$ =$   $ \mbox{${}_{B}^{B'}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$   $ \mbox{${}^{B}\mbox{\boldmath $x$}$}$$ $:

\begin{displaymath}
\begin{array}{rl}
& \left( \begin{array}{c} x_1  \vdots \...
... \vdots  x'_i \vdots x'_n \end{array} \right)
\end{array}\end{displaymath}

\fbox{Les colonnes de la matrice $\mbox{${}_{B}^{B'}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$ sont les vecteurs de la base B exprimés dans la base B'.}


1.3.4 Changement de base d'une application linéaire

Notons:

\begin{displaymath}
\begin{array}{rl}
g:\stackrel{\rightarrow}{E_m} &\longrighta...
...ox{\boldmath $x$} &\longmapsto \mbox{\boldmath $y$}
\end{array}\end{displaymath}

une AL $ g$ d'un espace $ \stackrel{\rightarrow}{E_m}$ de dimension $ m$ vers un espace $ \stackrel{\rightarrow}{E_n}$ de dimension $ n$. Soient Nous cherchons la matrice équivalente $ \mbox{${}_{B'_m}^{B'_n}\mbox{\boldmath $\mbox{\boldmath $G'$}$}$}$ transformant un vecteur $ \mbox{${}^{B'_m}\mbox{\boldmath $x'$}$}$ exprimé dans $ B'_m$ en un vecteur $ \mbox{${}^{B'_n}\mbox{\boldmath $y'$}$}$ exprimé dans $ B'_n$. Le principe est de ramener la donnée dans $ B_m$, appliquer $ g$, puis amener le résultat dans la base souhaitée. On peut ainsi écrire:

   $\displaystyle \mbox{${}^{B'_n}\mbox{\boldmath $y$}$}$$\displaystyle =$   $\displaystyle \mbox{${}_{B_n}^{B'_n}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$$\displaystyle \underbrace{ \mbox{${}_{B_m}^{B_n}\mbox{\boldmath $\mbox{\boldmat...
...box{${}^{B_m}\mbox{\boldmath $x$}$}}
}_{\mbox{${}^{B_n}\mbox{\boldmath $y$}$}}
$

et donc $ \mbox{${}_{B'_m}^{B'_n}\mbox{\boldmath $\mbox{\boldmath $G'$}$}$}$$ =$   $ \mbox{${}_{B_n}^{B'_n}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$   $ \mbox{${}_{B_m}^{B_n}\mbox{\boldmath $\mbox{\boldmath $G$}$}$}$   $ \mbox{${}_{B'_m}^{B_m}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$

1.3.5 Application affine

Soit $ E$ un EA associé à un EV $ \stackrel{\rightarrow}{E}$. Une application $ f$ de $ E$ dans $ E$ est une application affine (AA) s'il existe un endomorphisme $ \varphi$ de $ \stackrel{\rightarrow}{E}$ tel que pour tout couple $ (M,N)$ de $ E$ on ait $ f(M)f(N)$$ =\varphi($$ MN$$ )$

Propriétés:

1.3.6 Changement de repère d'un point

Soit un EA $ E$ de dimension $ n$ et les repères: Étant donné $ (x_1,\hdots x_n)$ les composantes d'un point $ M$ dans le repère $ (O,B)$, nous obtenons les composantes $ (x'_1,\hdots x'_n)$ de $ M$ dans $ (O',B')$:
$\displaystyle \mbox{\boldmath$O'M$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$O'O$}$$\displaystyle +$   $\displaystyle \mbox{\boldmath$OM$}$  
  $\displaystyle =$ $\displaystyle \mbox{\boldmath$OM$}$$\displaystyle -$   $\displaystyle \mbox{\boldmath$OO'$}$  
$\displaystyle \mbox{${}^{B'}\mbox{\boldmath$O'M$}$}$ $\displaystyle =$ $\displaystyle \mbox{${}^{B'}\mbox{\boldmath$O'O$}$}$$\displaystyle +$   $\displaystyle \mbox{${}^{B'}\mbox{\boldmath$OM$}$}$  
  $\displaystyle =$ $\displaystyle \mbox{${}_{B}^{B'}\mbox{\boldmath$\mbox{\boldmath$R$}$}$}$$\displaystyle \mbox{${}^{B}\mbox{\boldmath$O'O$}$}$$\displaystyle +$   $\displaystyle \mbox{${}_{B}^{B'}\mbox{\boldmath$\mbox{\boldmath$R$}$}$}$$\displaystyle \mbox{${}^{B}\mbox{\boldmath$OM$}$}$  
  $\displaystyle =$ $\displaystyle \mbox{${}_{B}^{B'}\mbox{\boldmath$\mbox{\boldmath$R$}$}$}$$\displaystyle ($$\displaystyle \mbox{${}^{B}\mbox{\boldmath$OM$}$}$$\displaystyle -$   $\displaystyle \mbox{${}^{B}\mbox{\boldmath$OO'$}$}$$\displaystyle )$  

1.3.7 Changement de repère d'une application affine

Soit une application affine définie pour un repère $ (O',B')$:

$\displaystyle f:$   $\displaystyle \mbox{${}^{B'}\mbox{\boldmath $O'M$}$}$$\displaystyle \mapsto$   $\displaystyle \mbox{${}^{B'}\mbox{\boldmath $O'P$}$}$$\displaystyle =$   $\displaystyle \mbox{${}^{B'}\mbox{\boldmath $O'O'_f$}$}$$\displaystyle +$   $\displaystyle \mbox{${}_{B'}^{B'}\mbox{\boldmath $\mbox{\boldmath $F$}$}$}$$\displaystyle \mbox{${}^{B'}\mbox{\boldmath $O'M$}$}$$\displaystyle $

Nous désirons calculer la transformée $ P$ d'un point $ M$, tous deux définis par leurs coordonnées dans un repère $ (O,B)$. Pour cela nous passons $ M$ dans $ (O',B')$, appliquons la transformation puis ramenons le résultat dans $ (O,B)$:

   $\displaystyle \mbox{${}^{B}\mbox{\boldmath $OP$}$}$$\displaystyle =$   $\displaystyle \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$$\displaystyle ($   $\displaystyle \mbox{${}^{B'}\mbox{\boldmath $O'O'_f$}$}$$\displaystyle +$   $\displaystyle \mbox{${}_{B'}^{B'}\mbox{\boldmath $\mbox{\boldmath $F$}$}$}$$\displaystyle \mbox{${}_{B}^{B'}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$$\displaystyle ($$\displaystyle \mbox{${}^{B}\mbox{\boldmath $OM$}$}$$\displaystyle -$$\displaystyle \mbox{${}^{B}\mbox{\boldmath $OO'$}$}$$\displaystyle ) -$   $\displaystyle \mbox{${}^{B'}\mbox{\boldmath $O'O$}$}$$\displaystyle )$

1.4 Matrices

1.4.1 Généralités

Une matrice $ n\times m$ est un tableau de $ n$ lignes et $ m$ colonnes. Une telle matrice peut servir notamment à représenter: On notera $ a_{ij}$ la valeur d'une matrice $ A$ en ligne $ i$, colonne $ j$.

1.4.2 Formes particulières

matrice carrée: $ A$$ _{n\times m}$ est dite carrée si $ m=n$. Dans une matrice carrée, les éléments de (1,1) à (n,n) forment la diagonale principale.

matrice identité: matrice carrée dont les éléments de la diagonale principale valent tous 1, et tous les autres élements, 0. En dimension $ n$, on la note $ I_{n}$ Pour toute matrice $ A$$ _{n\times n}$, $ A$$ I_{n}$$ =$   $ I_{n}$$ A$$ =$   $ A$

matrice triangulaire: Une matrice est dite triangulaire supérieure (resp. inférieure) si tous les éléments en-dessous (resp. au-dessus) de sa diagonale principale sont nuls.

matrice symétrique: Matrice égale à sa transposée

matrice symétrique définie positive: Une matrice symétrique $ A$ telle que pour tout vecteur $ x$ non nul, $ \vec x^T$   $ A$   $ x$$ > 0$

matrice symétrique semi-définie positive: Une matrice symétrique $ A$ telle que pour tout vecteur $ x$ non nul, $ x$$ ^T$   $ A$   $ x$$ \geq 0$

matrice singulière: Une matrice dont les lignes ou les colonnes forment un système lié.

1.4.3 Produit de matrices

   $ A$$\displaystyle _{n\times m}$$ B$$\displaystyle _{m\times p} =$   $ C$$\displaystyle _{n\times p}
$

avec $ c_{ij} = \sum_{k=1}^{m} a_{ik}b_{kj}$.

Si $ F$ est la matrice associée à une application linéaire $ f$ et $ G$ la matrice associée à une application linéaire $ g$, alors $ FG$ est la matrice associée à l'application linéaire $ f \circ g$.

Les vecteurs en dimension $ n$ sont considérés comme des matrices à $ n$ lignes et une colonne.

1.4.4 Transposée

La transposée $ A'$$ _{m\times n}$ d'une matrice $ A$$ _{n\times m}$ est une matrice notée $ A^T$ telle que $ a'_{ij}=a_{ji}$. Transposer une matrice revient à permuter les lignes avec les colonnes.
Propriétés:

1.4.5 Trace

La trace d'une matrice carrée est la somme des élements de sa diagonale.
Propriétés:

1.4.6 Matrice inverse

L'inverse d'une matrice carrée $ A$$ _{n\times n}$ est une matrice carrée $ A$$ ^{-1}_{n\times n}$ telle que: $ A$   $ A$$ ^{-1} =$   $ A$$ ^{-1}$$ A$$ =$   $ I_{n}$. Une matrice est réversible ssi ses vecteurs colonnes forment un système libre.

pseudo-inverse: Une matrice $ A$$ _{m\times }$ peut admettre une pseudo-inverse $ A$$ ^{+}_{n*m}$ telle que $ AA^{+}$$ =$$ I_{m}$ (plus de détails en section [*])

Propriétés:

1.4.7 Matrice orthogonale

Matrice carrée dont toutes les lignes ont pour norme 1, sont orthogonales 2 à 2, de même pour les colonnes. Propriétés:

1.4.8 Déterminant

Soit $ A$ une matrice carrée d'ordre $ n$. Le déterminant de $ A$ est un scalaire noté $ \Vert$$ A$$ \Vert$, nul si les vecteurs-colonnes sont liés. Propriétés:

Soit $ a_{ij}$ un élément de $ A$. Notons $ \bar{a_{ij}}$, la matrice de taille $ (n-1)\times (n-1)$ obtenue en retirant la ligne $ i$ et la colonne $ j$ de $ A$. Le déterminant de $ \bar{a_{ij}}$ est appelé cofacteur de $ a_{ij}$.

Calcul par développement de la première ligne:
$ \mbox{$\vert\mbox{\boldmath $A$}\vert$}$$ = a_{11}$$ \mbox{$\vert\mbox{\boldmath $\bar{a_{11}}$}\vert$}$$ - a_{12}$$ \mbox{$\vert\mbox{\boldmath $\bar{a_{12}}$}\vert$}$$ + a_{13}$$ \mbox{$\vert\mbox{\boldmath $\bar{a_{13}}$}\vert$}$$ \hdots a_{1n}$$ \mbox{$\vert\mbox{\boldmath $\bar{a_{1n}}$}\vert$}$

On peut aussi développer par rapport à la première colonne. Les déterminants d'ordre inférieur peuvent se calculer par la même méthode.

Notons $ \tilde{\mbox{\boldmath $A$}}$ la matrice des cofacteurs. L'inverse de $ A$ vaut: $ A$$ ^{-1} = \frac{1}{\mbox{$\vert\mbox{\boldmath $A$}\vert$}}\tilde{\mbox{\boldmath $A$}}^T$ (méthode de calcul extêmement inefficace)

Le déterminant d'une matrice triangulaire est le produit des éléments de sa diagonale principale.

1.4.9 Valeurs propres et vecteurs propres

1.4.9.1 Définition

Soit une matrice carrée $ A$$ _n$, un vecteur $ x$ non nul et un scalaire $ \lambda$ tq: $ A$   $ x$$ = \lambda$   $ x$. On dit que $ \lambda$ est une valeur propre de $ A$ et que $ x$ est un vecteur propre de $ A$ associé à $ \lambda$. Notons que pour $ k \in$   $ \mbox{$\mathbb{R}$}$, $ k$$ x$ est aussi vecteur propre.

1.4.9.2 Détermination des valeurs propres

De la dérivation suivante:
$\displaystyle \mbox{\boldmath$A$}$   $\displaystyle \mbox{\boldmath$x$}$ $\displaystyle =$ $\displaystyle \lambda$   $\displaystyle \mbox{\boldmath$x$}$  
$\displaystyle \mbox{\boldmath$A$}$   $\displaystyle \mbox{\boldmath$x$}$$\displaystyle - \lambda$   $\displaystyle \mbox{\boldmath$x$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$0$}$  
$\displaystyle ($$\displaystyle \mbox{\boldmath$A$}$$\displaystyle - \lambda$$\displaystyle \mbox{\boldmath$I_{n}$}$$\displaystyle )$$\displaystyle \mbox{\boldmath$x$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$0$}$  

et puisque $ x$ est non nul, nous pouvons déduire que les vecteurs-colonnes de $ A$$ - \lambda$$ I_{n}$ sont liés. Le déterminant de cette matrice est donc nul. Ce déterminant s'exprime comme un polynôme d'ordre $ n$ en $ \lambda$, et les racines de ce polynôme sont les valeurs propres de $ A$.

La recherche des vecteurs propres associés à une valeur propre $ \lambda$ s'effectue en résolvant le système d'équations: $ ($$ A$$ - \lambda$$ I_{n}$$ )$$ x$$ =$   0. On obtient une famille de solutions qui constitue le sous-espace propre associé à $ \lambda$.

Propriétés:

Exemples (dans $ \mbox{$\mathbb{R}$}$$ ^3$):

1.4.9.3 Diagonalisation

Si la somme des SEP a une dimension $ n$ égale à celle de la matrice, alors on peut trouver une matrice diagonale équivalente par changement de base. Soit $ B$ la base dans laquelle sont exprimés les vecteurs-colonnes de la matrice $ A$, et $ B'$ la base constituée par ses vecteurs propres (unitaires). Nous pouvons écrire:

   $ A$$\displaystyle =$   $\displaystyle \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$ $ diag(\lambda)$$\displaystyle \mbox{${}_{B}^{B'}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$$\displaystyle =$   $\displaystyle \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$ $ diag(\lambda)$$\displaystyle \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$$\displaystyle ^T
$

$ diag(\lambda)$ est une matrice diagonale composée des valeurs propres de la matrice associées aux vecteurs-colonnes de la matrice $ \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$, qui sont les vecteurs propres de $ A$. Nous pouvons réciproquement écrire:

    $ diag(\lambda)$$\displaystyle =$   $\displaystyle \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$$\displaystyle ^T
$$ A$$\displaystyle \mbox{${}_{B'}^{B}\mbox{\boldmath $\mbox{\boldmath $R$}$}$}$

1.4.10 Résolution de systèmes d'équations linéaires

Un système d'équations linéaires peut s'écrire sous forme matricielle $ A$   $ x$$ =$   $ b$. On est tenté de le résoudre par $ x$$ =$   $ A$$ ^{-1}$   $ b$. C'est généralement une mauvaise idée pour deux raisons: Voici quelques points de repère très genéraux: Les décompositions LU, Colesky et SVD permettent en outre de calculer l'inverse ou le déterminant d'une matrice à un coût raisonnable. À certaines matrices particulières peuvent s'appliquer des methodes spéciales non listées ici. Pour plus de détails, se reporter par exemple à [1].

2. Positionnement

Dans ce chapitre on considèrera l'espace en dimension 3, sachant que la dimension 2 peut trivialement s'y ramener.

2.1 Rotations

Une rotation est une isométrie dont une direction unique de l'espace (son axe) reste invariante. L'angle maximum entre un vecteur et sa transformée apparaît pour les vecteurs du plan orthogonal à l'axe. C'est par définition l'angle de la rotation. Nous noterons $ R$$ _{\theta,u}$ une rotation d'angle $ \theta$ autour de l'axe $ u$.

2.1.1 Propriétés

2.1.2 Représentation matricielle

Les matrices ci-dessous représentent respectivement les rotations $ R$$ _{\alpha,x}$, $ R$$ _{\beta,y}$ et $ R$$ _{\gamma,z}$.

$\displaystyle \left(\begin{array}{ccc} 1 & 0 & 0  0 & \cos\alpha & -\sin\alph...
... -\sin\gamma & 0 \sin\gamma & \cos\gamma & 0 0 & 0 & 1 \end{array}\right)$ (2.1)

2.1.3 Décomposition de Jordan

Quand la rotation ne s'effectue pas autour d'un des axes principaux de la base, on peut obtenir son expression matricielle par la décomposition de Jordan: $ \ensuremath{\mbox{\boldmath $R$}_{\theta,u}} = \mbox{\boldmath $R$}_a \ensurem...
...th $R$}_a \ensuremath{\mbox{\boldmath $R$}_{\theta,x}} \mbox{\boldmath $R$}_a^T$ $ R$$ _a$ est une rotation qui aligne l'axe $ x$ de la base sur l'axe $ u$ de rotation. Un autre vecteur que $ x$ peut être choisi. Cette décomposition correspond à un changement de base d'application linéaire comme vu en section [*].

Cette représentation n'est pas unique car l'alignement est défini à une rotation près autour de l'axe $ u$. On peut en effet remplacer $ R_a$ par $ R_a$$ \ensuremath{\mbox{\boldmath $R$}_{\phi,u}}$ pour tout $ \phi$.

question: si $ u$ est unitaire:

  1. que vaut la première colonne de $ R_a$ ?
  2. comment en déduire des valeurs pour les colonnes 2 et 3 ?

2.1.4 Conversion entre matrice et (angle,axe). Formule de Rodrigues.

La formule de Rodrigues fournit un passage direct entre (angle,axe) et matrice de rotation:

$\displaystyle \ensuremath{\mbox{\boldmath$R$}_{\theta,u}}= \mbox{\boldmath$I$} ...
... \right)$} + (1-\cos\theta)\mbox{$\left( \mbox{\boldmath$n$} \wedge \right)$}^2$ (2.2)

avec $ I$ l'identité et $ \left( \mbox{\boldmath $n$} \wedge \right)$ la matrice qui du produit vectoriel par $ n$ (voir équation [*]).

Le problème inverse est de trouver l'axe $ n$ et l'angle $ \theta$ d'après la matrice $ R$. Il n'y a pas de solution unique (angle défini à $ 2\pi$ près, axe ou son opposé). On peut en trouver une en remarquant que $ tr($$ R$$ )=1+2\cos\theta$ et que $ R$$ -$$ R$$ ^T = 2\sin\theta$$ \mbox{$\left( \mbox{\boldmath $n$} \wedge \right)$}$

2.1.5 Composition des rotations. Angles d'Euler.

Soit une base $ \mathcal B_{1}$ tournée de $ R$$ _{\theta,u}$ par rapport à une base de référence $ \mathcal B_{0}$. Nous voulons lui appliquer une rotation supplémentaire, par exemple $ R$$ _{\alpha,x}$ d'angle $ \alpha$ suivant l'axe $ x$. Pour calculer sa nouvelle matrice d'orientation il est important de savoir de quel axe $ x$ on parle:

Les angles d'Euler consistent à appliquer trois rotations successives selon des axes principaux. Suivant le contexte, on les interprète comme des rotations suivant les axes d'une base de référence, ou suivant les axes des bases intermédiaires successives. Par exemple, la rotation $ R$$ _{\alpha,x}$ $ R$$ _{\beta,y}$ $ R$$ _{\gamma,z}$ (matrices définies en éq. [*]) peut s'interpêter de deux manières mathématiquement équivalentes mais intuitivement différentes:

Les angles d'Euler présentent toutefois certains inconvénients:

2.1.6 Quaternions

Extension des nombres complexes:    $ q$$ = w + x$$ i$$ + y$   $ j$$ + z$   $ k$$ = (w,$$ v$$ )$.
w est la partie réelle, $ v$ la partie imaginaire. Propriétés de $ i$, $ j$, $ k$:

\begin{displaymath}
\begin{array}{l}
\mbox{\boldmath $i$}^2 = \mbox{\boldmath $...
...,\;\mbox{\boldmath $ik$} = -\mbox{\boldmath $j$}\\
\end{array}\end{displaymath}

Vecteur 3D:

   $ p$$\displaystyle = (0,x,y,z)
$

Produit de quaternions (non commutatif):

   $ q_1q_2$$\displaystyle = (w_1w_2 -$   $ v$$\displaystyle _1.$$ v$$\displaystyle _2, \; w_1$$ v$$\displaystyle _2 + w_2$$ v$$\displaystyle _1 +$   $ v$$\displaystyle _1 \wedge$   $ v$$\displaystyle _2)
$

Quaternion conjugué:

\begin{displaymath}
\begin{array}{l}
\mbox{\boldmath $\bar q$} = w - x\mbox{\bo...
... \mbox{\boldmath $q\bar q$} = w^2 + x^2 + y^2 + z^2
\end{array}\end{displaymath}

Quaternions unitaires, utilisés pour représenter les rotations:

   $ q\bar q$$\displaystyle = 1
$

Rotation $ (\theta,$   $ u$$ )$: ( $ u$$ ^2=1$)

   $ q$$\displaystyle _{(\theta,u)} = ( \cos{\frac{\theta}{2}}, u_x\sin{\frac{\theta}{2}}, u_y\sin{\frac{\theta}{2}}, u_z\sin{\frac{\theta}{2}})
$

Rotation d'un vecteur $ p$: $ \;\;\;$ $  qp\bar{q} $
Matrice de rotation associée à un quaternion unitaire:

$\displaystyle \left( \begin{array}{ccc}
1 - 2y^2 - 2z^2 & 2xy - 2wz & 2xz + 2wy...
...^2 & 2yz - 2wx \\
2xz - 2wy & 2yz + 2wx & 1 - 2x^2 - 2y^2
\end{array} \right)
$

Composition des rotations: $ \ensuremath{\mbox{\boldmath $R$}_{\alpha,u}}\ensuremath{\mbox{\boldmath $R$}_{\beta,v}} \longrightarrow q_{(\alpha,u)}q_{(\beta,v)}$
Rotation inverse: $ q_{(\theta,u)}^{-1} = q_{(-\theta,u)} = q_{(\theta,-u)} = (-w,$$ v$$ ) = (w,$$ -$$ v)$
Conversion $ (w,$   $ v$$ ) \longrightarrow ( \theta,$   $ u$$ )$ :
$\displaystyle \cos(\theta/2)$ $\displaystyle =$ $\displaystyle w$  
$\displaystyle \sin(\theta/2)$ $\displaystyle =$ $\displaystyle \Vert$$\displaystyle \mbox{\boldmath$v$}$$\displaystyle \Vert$  
$\displaystyle \mbox{\boldmath$u$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$v$}$$\displaystyle /\Vert$$\displaystyle \mbox{\boldmath$v$}$$\displaystyle \Vert$  

2.1.7 Interpolation linéaire des rotations

Soit une base initialement définie par $ {}_{1}^{0}$$ R$ à $ t=0$, que nous voulons faire évoluer continument vers $ {}_{2}^{0}$$ R$ $ t=1$. Il convient de:
  1. calculer la matrice de passage de la configuration initiale à la configuration finale:

    $\displaystyle \mbox{${}_{2}^{1}\mbox{\boldmath$R$}$}$ $\displaystyle =$ $\displaystyle \mbox{${}_{0}^{1}\mbox{\boldmath$R$}$}$$\displaystyle \mbox{${}_{2}^{0}\mbox{\boldmath$R$}$}$  
      $\displaystyle =$ $\displaystyle ($$\displaystyle \mbox{${}_{1}^{0}\mbox{\boldmath$R$}$}$$\displaystyle ^{-1})$$\displaystyle \mbox{${}_{2}^{0}\mbox{\boldmath$R$}$}$  

  2. calculer angle et axe $ \theta$, $ t$els que: $ \ensuremath{\mbox{\boldmath $R$}_{\theta,u}}=\mbox{${}_{2}^{1}\mbox{\boldmath $R$}$}$
  3. interpoler en appliquant $ R(t)$$ =$   $ \mbox{${}_{1}^{0}\mbox{\boldmath $R$}$}$$ \ensuremath{\mbox{\boldmath $R$}_{t\theta,u}}$

2.1.8 Interpolation lisse des rotations

Nous voulons passer de manière lisse par différentes orientations au cours du temps. Nous nous basons sur la méthode d'approximation itérative des splines présentée en figure [*]
Figure: Approximation itérative d'une spline. Un nouveau point est calculé par somme pondérée des points $ P_1,P_2,P_3,P4$ ayant respecivement pour coefficients $ \frac{-c}{8}$, $ \frac{-c}{8}+\frac{1}{2}$, , $ \frac{-c}{8}+\frac{1}{2}$, et $ \frac{-c}{8}$. Le coefficient $ c$ exprime la continuité de la spline et peut être fixé à 1.
\resizebox{!}{3cm}{
\includegraphics{fig/slerp.eps}
}
et construisons une analogie entre vecteurs de $ \mbox{$\mathbb{R}$}$$ ^3$et quaternions unitaires:



  vecteur v quaternion $ q_{(\theta,\mbox{\boldmath $u$})} = (w, \mbox{\boldmath $v$})$
composition $ v_1+v_2$ ($ =v_2+v_1$) $ q_1q_2$ ( $ \neq q_2q_1$!)
inverse $ v_1^{-1}=-v$ $ q_1^{-1} = (-w,$$ v$$ )$
produit avec un scalaire k v $ q^k = q_{(k\theta,\mbox{\boldmath $u$})}$
distance $ \Delta v = v_2-v_1 = -v_1+v_2$ $ \Delta q = q_1^{-1}q_2$
interpolation $ v = lerp(v_1,v_2,\alpha) = v_1+\alpha(-v_1+v_2)$ $ q = slerp(q_1,q_2,\alpha) = q_1(q_1^{-1}q_2)^\alpha$
moyenne $ moy(v_1,v_2)=lerp(v_1,v_2,0.5)$ $ smoy(q_1,q_2)=slerp(q_1,q_2,0.5)$


Nous pouvons maintenant à partir de quatre quaternions en générer un supplémentaire, et à partir de $ m+1$ quaternions en obtenir $ 2m+1$:

$\displaystyle \{ q_i: i=0,1,...m \}$ $\displaystyle \longrightarrow$ $\displaystyle \{ q_j: j=0,1,...2m \}$  
$\displaystyle j=2i+1: q_j$ $\displaystyle =$ $\displaystyle slerp(smid(q_i,q_{i+3}),smid(q_{i+1},q_{i+2}),1+c/4)$  
$\displaystyle j=2i: q_j$ $\displaystyle =$ $\displaystyle q_i$  

2.2 Transformations affines

A COMPLETER

3. Cinématique

3.1 Rappels

3.1.1 Dérivée dans $ \mathcal R_{0}$ d'une vecteur fixe dans $ \mathcal R_{1}$. Vecteur rotation.

Considérons un vecteur $ u$$ _{\in 1}$, fixe dans un repère $ \mathcal R_{1}$. Le repère $ \mathcal R_{1}$ est en rotation par rapport à un repère $ \mathcal R_{0}$. Nous nous intéressons à la projection $ {}^{0}$$ \mbox{$\mbox{\boldmath $u$}_{\in 1}$}$ de ce vecteur dans $ \mathcal R_{0}$, que nous appellerons parfois $ u$ pour simplifier, et à sa dérivée dans $ \mathcal R_{0}$ que nous noterons $ \mbox{$\dot{\mbox{$\mbox{\boldmath $u$}_{\in 1}$}}^{(0)}$}$.

Soit $ R(dt)$ la rotation subie par $ \mathcal R_{1}$ entre l'instant $ t$ et l'instant $ t+dt$. Nous pouvons écrire:

$\displaystyle \mbox{\boldmath$u$}$$\displaystyle (t+dt)$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$R(dt)$}$   $\displaystyle \mbox{\boldmath$u$}$$\displaystyle (t)$ (3.1)
$\displaystyle \mbox{\boldmath$u$}$$\displaystyle (t+dt) -$   $\displaystyle \mbox{\boldmath$u$}$$\displaystyle (t)$ $\displaystyle =$ $\displaystyle ($$\displaystyle \mbox{\boldmath$R(dt)$}$$\displaystyle -$$\displaystyle \mbox{\boldmath$I_{}$}$$\displaystyle )$   $\displaystyle \mbox{\boldmath$u$}$$\displaystyle (t)$ (3.2)

Soit $ \dot{\theta}$ la vitesse angulaire autour de l'axe de rotation, que nous choisissons égal à $ z$ pour simplifier. Nous obtenons par un développement limité à l'ordre 1:

   $ R(dt)$$\displaystyle -$$ I_{}$$\displaystyle =
\left(\begin{array}{ccc}
cos(\dot{\theta}dt)-1 & -sin(\dot{\th...
...& 0\\
\dot{\theta}dt & 0 & 0\\
0 & 0 & 0
\end{array}\right)
=
\dot{\theta}dt$   $\displaystyle \mbox{$\left( \mbox{\boldmath $z$} \wedge \right)$}$

$ \left( \mbox{\boldmath $z$} \wedge \right)$ est l'opérateur matriciel de produit vectoriel par $ z$. Cette formule peut s'étendre par changement de base à n'importe quel axe de rotation $ n$ (unitaire). Posons $ \mbox{$\mbox{$\mbox{\boldmath $\Omega$}$}_{1/0}$}$$ =\dot{\theta}$$ n$. En divisant l'expression [*] par $ dt$ et en faisant tendre $ dt$ vers 0 nous obtenons $ \dot{\mbox{\boldmath $R$}} = \mbox{$\left( \mbox{\boldmath $ \mbox{$\mbox{$\mbox{\boldmath $\Omega$}$}_{1/0}$} $} \wedge \right)$}$.

Nous pouvons écrire la dérivée temporelle dans $ \mathcal R_{0}$: $ \mbox{$\dot{\mbox{$\mbox{\boldmath $u$}_{\in 1}$}}^{(0)}$}$$ =$   $ \mbox{$\mbox{$\mbox{\boldmath $\Omega$}$}_{1/0}$}$$ \wedge$   $ \mbox{$\mbox{\boldmath $u$}_{\in 1}$}$, ou en simplifiant la notation:

\begin{displaymath}\begin{array}{rcl} \dot{\mbox{\boldmath$u$}} &=& \dot{\mbox{\...
...dmath$\Omega$}$}_{1/0}$} \wedge \mbox{\boldmath$u$} \end{array}\end{displaymath} (3.3)

3.1.2 Vitesse dans $ \mathcal R_{0}$ d'un point fixe dans $ \mathcal R_{1}$. Champ des vitesses.

Considérons la vitesse dans $ \mathcal R_{0}$ d'un point $ A$ fixe dans $ \mathcal R_{1}$ en mouvement par rapport à $ \mathcal R_{0}$. Soient $ O_0$ l'origine de $ \mathcal R_{0}$ et $ O_1$ l'origine de $ \mathcal R_{1}$. Nous dérivons en coordonnées homogènes la projection de $ A$ dans $ \mathcal R_{0}$:
$\displaystyle \mbox{\boldmath$O_0A$}$ $\displaystyle =$ $\displaystyle \left(\begin{array}{cc}
\mbox{\boldmath$R$} & \mbox{\boldmath$t$}\\
\mbox{\boldmath$0$} & 1
\end{array}\right) \mbox{\boldmath$O_1A$}$  
$\displaystyle \dot{\mbox{\boldmath$O_0A$}}$ $\displaystyle =$ $\displaystyle \left(\begin{array}{cc}
\mbox{$\left( \mbox{\boldmath$\mbox{$\mbo...
...ight) = \left(\begin{array}{c}
\mbox{$\vec V^{1/0}_{A}$} 0
\end{array}\right)$  

Nous appelons $ \mbox{$\vec V^{1/0}_{A}$}$ vitesse de $ A$ fixe dans $ \mathcal R_{1}$ par rapport à $ \mathcal R_{0}$. On peut noter que $ \mbox{$\vec V^{1/0}_{O_1}$}$$ = \dot{\mbox{\boldmath $t$}}$. Nous en déduisons les relations du champ des vitesses d'un solide:
$\displaystyle \mbox{$\vec V^{1/0}_{A}$}$ $\displaystyle =$ $\displaystyle \mbox{$\vec V^{1/0}_{O_1}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\overrightarrow{O_1A}$}$ (3.4)
$\displaystyle \mbox{$\vec V^{1/0}_{A}$}$ $\displaystyle =$ $\displaystyle \mbox{$\vec V^{1/0}_{B}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\overrightarrow{BA}$}$$\displaystyle \mbox{ pour tous points $A$ et $B$}$ (3.5)

la dernière relation se deduisant trivialement par soustraction $ \mbox{$\vec V^{1/0}_{A}$}$$ -$$ \mbox{$\vec V^{1/0}_{B}$}$.

3.1.3 Accélération dans $ \mathcal R_{0}$ d'un point fixe dans $ \mathcal R_{1}$. Champ des accélérations.

En dérivant la relation [*], et sachant que $ \mbox{$\overrightarrow{O_1A}$}$ est fixe dans $ \mathcal R_{1}$, nous obtenons la relation du champ des accélerations d'un solide:

$\displaystyle \mbox{$\vec \Gamma^{1/0}_{A}$}$$\displaystyle =$   $\displaystyle \mbox{$\vec \Gamma^{1/0}_{O_1}$}$$\displaystyle +$   $\displaystyle \mbox{$\dot{\mbox{$\mbox{\boldmath$\Omega$}$}}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\overrightarrow{O_1A}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge \left( \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$} \wedge \mbox{$\overrightarrow{O_1A}$} \right)$ (3.6)

3.1.4 Dérivée dans $ \mathcal R_{0}$ d'un vecteur non fixe dans $ \mathcal R_{1}$

Soit $ ($$ e$$ _1,$   $ e$$ _e,$   $ e$$ _3)$ une base de $ \mathcal R_{1}$. Nous pouvons écrire:
$\displaystyle \mbox{${}^{1}u$}$ $\displaystyle =$ $\displaystyle \sum_i x_i$   $\displaystyle \mbox{\boldmath$e$}$$\displaystyle _i$  
$\displaystyle \dot{\mbox{\boldmath$u$}}$ $\displaystyle =$ $\displaystyle \sum_i \dot x_i$   $\displaystyle \mbox{\boldmath$e$}$$\displaystyle _i + \sum_i x_i \dot{\mbox{\boldmath$e$}}_i$  

d'où:

$\displaystyle \mbox{$\dot{u}^{(0)}$}$$\displaystyle =$   $\displaystyle \mbox{$\dot{u}^{(1)}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{\boldmath$u$}$ (3.7)

3.1.5 Vitesse dans $ \mathcal R_{0}$ d'un point mobile dans $ \mathcal R_{1}$.

Soit $ \vec V^{/{1}}_{A}$ la vitesse d'un point $ A$ dans le repère $ \mathcal R_{1}$. Celle-ci vient s'ajouter à la vitesse qu'aurait le point s'il était fixe dans $ \mathcal R_{1}$. Nous avons donc:

$\displaystyle \mbox{$\vec V^{/{0}}_{A}$}$$\displaystyle =$   $\displaystyle \mbox{$\vec V^{/{1}}_{A}$}$$\displaystyle +$   $\displaystyle \mbox{$\vec V^{1/0}_{O_1}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\overrightarrow{O_1A}$}$ (3.8)

Notons que le point $ O_1$ étant l'origine du repère $ \mathcal R_{1}$, on a $ \mbox{$\vec V^{/{0}}_{O_1}$}$$ =$   $ \mbox{$\vec V^{1/0}_{O_1}$}$.

3.1.6 Accéleration dans $ \mathcal R_{0}$ d'un point mobile dans $ \mathcal R_{1}$. Accéleration de Coriolis.

En dérivant la relation [*] nous obtenons:

   $\displaystyle \mbox{$\vec \Gamma^{/0}_{A}$}$$\displaystyle = \underbrace{\mbox{$\vec \Gamma^{/1}_{A}$} + \mbox{$\mbox{$\mbox...
...x{$\mbox{\boldmath $\Omega$}$}_{1/0}$} \wedge \mbox{$\overrightarrow{O_1A}$}}}
$

ou encore:

$\displaystyle \mbox{$\vec \Gamma^{/0}_{A}$}$$\displaystyle =$   $\displaystyle \mbox{$\vec \Gamma^{/1}_{A}$}$$\displaystyle +$   $\displaystyle \mbox{$\vec \Gamma^{/0}_{O_1}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge ($$\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\overrightarrow{O_1A}$}$$\displaystyle ) + 2$$\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\vec V^{/{1}}_{A}$}$ (3.9)

avec:

3.2 Cinématique des chaînes articulées

3.2.1 Composition des vitesses

Si nous appliquons la relation [*] à un point fixe dans un repère $ \mathcal R_{2}$, nous pouvons directement écrire
$\displaystyle \mbox{$\vec V^{2/0}_{A}$}$ $\displaystyle =$ $\displaystyle \mbox{$\vec V^{2/1}_{A}$}$$\displaystyle +$   $\displaystyle \mbox{$\vec V^{1/0}_{O_1}$}$$\displaystyle +$   $\displaystyle \mbox{$\mbox{$\mbox{\boldmath$\Omega$}$}_{1/0}$}$$\displaystyle \wedge$   $\displaystyle \mbox{$\overrightarrow{O_1A}$}$  
  $\displaystyle =$ $\displaystyle \mbox{$\vec V^{2/1}_{A}$}$$\displaystyle +$   $\displaystyle \mbox{$\vec V^{1/0}_{A}$}$  

et plus généralement:

$\displaystyle \mbox{$\vec V^{n/0}_{A}$}$$\displaystyle = \sum_{i=1}^{n}$$\displaystyle \mbox{$\vec V^{i/i-1}_{A}$}$ (3.10)

La figure [*] illustre une application de cette formule. La vitesse $ \vec V^{3/0}_{A}$ est la somme des contributions de chaque mouvement relatif. On note que la vitesse dûe à une rotation est perpendiculaire à la droite joignant le point au centre de rotation. La vitesse de translation est reportée tel quel.

Figure: Composition des vitesses.
\resizebox{9cm}{!}{\includegraphics{composevitesses}}

3.2.2 Liaisons cinématiques. Degrés de liberté.

Les liaisons cinématiques définissent les mouvements possibles entre deux solides parmi les trois translations et trois rotations possibles. Les liaisons se caractérisent par leurs degrés de liberté (ddl). La figure [*] montre l'exemple de la liaison pivot glissant, qui autorise deux degrés de liberté: un en translation et un en rotation. La plus contrainte est la liaison encastrement, avec zéro ddl, la plus libre est la liaison libre avec six ddl. Les principales liaisons sont présentées en annexe [*].
Figure: Liaison pivot glissant (images de Roger Bouisset). De haut en bas et de gauche à droite: des surfaces pouvant créer ce type de liaison, les axes principaux de la liaison, la représentation normalisée de la liaison, les mouvements relatifs possibles.
\resizebox{6cm}{!}{\includegraphics{PG1}} \resizebox{6cm}{!}{\includegraphics{PG2}} \resizebox{6cm}{!}{\includegraphics{PG4}}

\resizebox{6cm}{!}{\includegraphics{PG5}} \resizebox{6cm}{!}{\includegraphics{PG6}} \resizebox{6cm}{!}{\includegraphics{PG7}}

3.2.2.1 Cas général

Une liaison permet le mouvement relatif de deux repères qui dans le cas géneral ne sont pas directement les repères principaux des solides. La transformation $ \mbox{${}_{i}^{i-1}\mbox{\boldmath $\mbox{\boldmath $C$}$}$}$ de $ \mathcal R_{i}$ vers $ \mathcal R_{i-1}$ dûe à une liaison peut se décomposer en trois transformations:

$\displaystyle \mbox{${}_{i}^{i-1}\mbox{\boldmath$\mbox{\boldmath$C$}$}$}$$\displaystyle = ($$\displaystyle \mbox{${}_{i}^{i-1}\mbox{\boldmath$C_p$}$}$$\displaystyle )($$\displaystyle \mbox{${}_{i}^{i-1}\mbox{\boldmath$C_l$}$}$$\displaystyle )($$\displaystyle \mbox{${}_{i}^{i-1}\mbox{\boldmath$C_c$}$}$$\displaystyle )$ (3.11)

comme illustré sur la figure [*].
Figure: Une liaison entre les repères i et i+1, avec ses repères intermédiaires.
\resizebox{!}{6cm}{\includegraphics{liaison}}

La matrice $ {}_{i}^{i-1}$$ C_p$ traduit la position de la liaison par rapport à $ \mathcal R_{i-1}$. La matrice $ {}_{i}^{i-1}$$ C_l$ traduit le deplacement dans la liaison, par rapport à une position de référence. Elle peut varier avec le temps et conformement aux ddl. La matrice $ {}_{i}^{i-1}$$ C_c$ (plus précisement, son inverse) traduit la position de la liaison par rapport à $ \mathcal R_{i}$.

La figure [*] présente un exemple de chaîne articulée. Un socle mobile de repère $ \mathcal R_{1}$ peut se déplacer sur le sol de repère $ \mathcal R_{0}$. Un bras de repère $ \mathcal R_{2}$ est articulé par rapport au socle mobile. À doite de la figure, le graphe cinématique représente l'accrochage des solides (noeuds) par les liaisons (arcs). Ce graphe est orienté en partant du repère absolu, qui est toujours à la racine.

Figure: Corps articulés et graphes cinématiques. À gauche, un mécanisme avec ses solides, liaisons et repères intermédiaires. Au centre, le graphe cinématique correspondant. À droite, un graphe cinématique plus complexe.
\resizebox{!}{6cm}{\includegraphics{liaisons3}} \resizebox{!}{6cm}{\includegraphics{humanoid}}  


3.2.2.2 Modèle de Denavit-Hartenberg

La notation de Denavit-Hartenberg, très utilisée en robotique, correspond â un cas simplifié: De plus, l'axe $ x_i$ d'un repère $ \mathcal R_{i}$ est par définition confondu avc la perpendiculaire commune aux axes $ (O_i,$$ z_i$$ )$ et $ (O_{i+1},$$ z_{i+1}$$ )$. La figure [*] illustre la mise en position d'un repère par rapport à son père.
Figure: Liaison selon Denavit-Hartenberg. Quatre paramètres décrivent la position du fils (i+1) par rapport au pére (i).
\resizebox{!}{6cm}{\includegraphics{denavit}}
Pour aller du repère père $ \mathcal R_{i}$ au repère fils $ \mathcal R_{i+1}$, on translate selon $ x$ (paramètre $ a_i$), puis on tourne selon $ x$ (paramètre $ \alpha_i$), puis on translate selon $ z$ (paramètre $ d_{i+1}$) et finalement on pivote selon $ z$ (paramètre $ \theta_{i+1}$). Les paramètres $ a_i$ et $ \alpha_i$ sont constants, les deux autres correspondant à la rotation et la translation selon l'axe. La transformation géometrique vaut:
$\displaystyle \mbox{${}_{i+1}^{i}\mbox{\boldmath$\mbox{\boldmath$C$}$}$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$T$}$$\displaystyle _{x_i,a_i}$   $\displaystyle \mbox{\boldmath$R$}$$\displaystyle _{x_i,\alpha_i}$   $\displaystyle \mbox{\boldmath$T$}$$\displaystyle _{z_{i+1},d_{i+1}(t)}$   $\displaystyle \mbox{\boldmath$R$}$$\displaystyle _{z_{i+1},\theta_{i+1}(t)}$  
  $\displaystyle =$ $\displaystyle ($$\displaystyle \mbox{${}_{i+1}^{i}\mbox{\boldmath$C_p$}$}$$\displaystyle )($$\displaystyle \mbox{${}_{i+1}^{i}\mbox{\boldmath$C_l$}$}$$\displaystyle (t))$  

Notez que nous numérotons les repères en partant du repère absolu $ \mathcal R_{0}$. Il arrive de recontrer l'ordre inverse, particulièrement dans la littérature robotique.

3.2.3 Paramétrage des liaisons. Espace articulaire.

À chaque ddl $ i$ est associé un axe $ n$$ _i$ (vecteur unitaire), une valeur de position $ q_i$ et une valeur de vitesse $ \dot q_i$. Les valeurs aux ddl définissent la position d'une liaison. En translation, ces valeurs sont reportées dans le vecteur translation de la matrice de passage. Le cas des rotations est plus complexe. Pour les liaisons à un ou deux ddl, on utilise les angles d'Euler et on calcule la matrice correspondante. Pour les liaisons à trois ddl et mouvements de grande amplitude, on ne peut employer les angles d'Euler à cause des limitations analytiques de ceux-ci, notamment la perte d'un ddl dans certaines configurations. On a alors recours aux quaternions, ou directement aux matrices. Le paramétrage par angles d'Euler reste possible pour exprimer des petites variations autour de la position courante.

On peut rassembler l'ensemble des valeurs associées aux ddl dans un vecteur $ q$ qui définit l'état du sytème. L'ensemble des états possibles est appelé espace articulaire du système. De même on peut regrouper les vitesses articulaires dans un vecteur $ \dot{\mbox{\boldmath $q$}}$.

3.2.4 Algorithmes de cinématique directe

La cinematique dite directe consiste à calculer des positions et vitesses dans l'espace cartésien â partir de l'état articulaire du système. Dans cette partie nous considèrerons un mécanisme modélisé par la notation de Denavit-Hartenberg (cf. section [*]), constitué d'une chaîne cinématique dont les solides sont numérotés de 0 (repère absolu) à n. Le repère fils est translaté et tourné selon l'axe $ x$ du père, puis translaté et tourné selon le nouvel axe $ z$.

La figure [*] présente un algorithme de calcul des matrices de passage de chaque solide de la chaîne.

Figure: Calcul des matrices de positions dans le formalisme de Denavit-Hartenberg.
\resizebox{!}{2cm}{\includegraphics{algoDHpos} }

La figure [*] présente un algorithme de calcul de vitesses. Les données sont:

Les résultats sont: Au passage, toutes les matrices $ \mbox{${}_{i}^{i-1}\mbox{\boldmath $\mbox{\boldmath $C$}$}$}$ sont calculées.
Figure: Calcul de vitesse dans le formalisme de Denavit-Hartenberg.
\resizebox{!}{4.5cm}{\includegraphics{algoDHvit}}

4. Cinématique inverse

Problématique: trouver des configurations articulaires pour satisfaire des contraintes définies dans l'espace cartésien.

4.1 Équations linéaires

Considérons un mécanisme comportant deux liaisons glissière alignées sur les axes du repère absolu, comme illustré sur la figure [*]. Chaque degré de liberté est caractérisé par son axe $ a$ et sa coordonnée articulaire $ q$. L'axe portant $ a_1$ est fixe tandis que l'axe portant $ a_2$ se translate.
Figure: Un mécanisme à axes orthogonaux.
\resizebox{!}{5cm}{\includegraphics{mecanisme2dortho}}
Nous désirons amener le point $ P$ jusqu'à la position $ P'$ et pour cela nous devons satisfaire une contrainte de déplacement $ \Delta P$$ =$   $ \mbox{$\overrightarrow{OP'}$}$$ -$$ \mbox{$\overrightarrow{OP}$}$$ =$   $ c$$ = (c_x, c_y)^T$ au moyen d'un déplacement articulaire $ \Delta q$$ = (\Delta q_1, \Delta q_2)^T$. Dans ce cas simple la reponse est évidemment $ \Delta q$$ = (c_x, c_y)^T$.

Considérons maintenant un mécanisme similaire, mais à axes quelconques, comme illustré sur la figure [*].

Figure: Un mécanisme à axes non orthogonaux.
\resizebox{!}{5cm}{\includegraphics{mecanisme2dnonortho}}
La résolution d'une contrainte de déplacement nécessite de poser et résoudre un système d'équations linéaires:

$\displaystyle \left( \begin{array}{cc} a_{1x} & a_{2x}  a_{1y} & a_{2y} \end{...
...a q_2 \end{array} \right) =\left(\begin{array}{c} c_x  c_y \end{array}\right)$ (4.1)

Considérons maintenant la contrainte suivante: le point $ P$ doit se positionner sur la droite définie par un point $ P'$ et un vecteur normal $ n$$ =(n_x, n_y)^T$, comme illustré sur la figure [*]. Nous sommes en présence d'une contrainte scalaire, puisqu'on peut l'exprimer par une équation unique $ \Delta P$$ .$$ n$$ =$   $ \mbox{$\overrightarrow{PP'}$}$$ .$$ n$.

Figure: Une contrainte scalaire appliquée au mécanisme 2D: rejoindre une droite.
\resizebox{!}{5cm}{\includegraphics{mecanisme2dcontraintescalaire}}
Posons, développons et regroupons l'équation sur le déplacement:
$\displaystyle \mbox{\boldmath$\Delta P$}$$\displaystyle .n$ $\displaystyle =$ $\displaystyle \mbox{$\overrightarrow{PP'}$}$$\displaystyle .$   $\displaystyle \mbox{\boldmath$n$}$  
$\displaystyle \left(\begin{array}{cc}
\mbox{\boldmath$a_1$} & \mbox{\boldmath$a_2$}
\end{array}\right) \mbox{\boldmath$\Delta q$}$ $\displaystyle =$ $\displaystyle \mbox{$\overrightarrow{PP'}$}$$\displaystyle .$   $\displaystyle \mbox{\boldmath$n$}$  
\begin{displaymath}\left(
\begin{array}{cc}
a_{1x} & a_{2x} \\
a_{1y} & a_{2y}
...
...Delta q_1\\
\Delta q_2
\end{array}\right). \mbox{\boldmath$n$}\end{displaymath} $\displaystyle =$ $\displaystyle \mbox{$\overrightarrow{PP'}$}$$\displaystyle .$   $\displaystyle \mbox{\boldmath$n$}$  
$\displaystyle (a_{1x} \Delta q_1 + a_{2x}\Delta q_2)n_x + (a_{1y} \Delta q_1 + a_{2y}\Delta q_2)n_y$ $\displaystyle =$ $\displaystyle \mbox{$\overrightarrow{PP'}$}$$\displaystyle .$$\displaystyle \mbox{\boldmath$n$}$  
$\displaystyle (a_{1x}n_x + a_{1y}n_y)\Delta q_1 + (a_{2x}n_x + a_{2y}n_y)\Delta q_2$ $\displaystyle =$ $\displaystyle \mbox{$\overrightarrow{PP'}$}$$\displaystyle .$$\displaystyle \mbox{\boldmath$n$}$  
$\displaystyle \left(\begin{array}{cc}
\mbox{\boldmath$a_1$}.\mbox{\boldmath$n$}...
...rray}\right)
\left(\begin{array}{c}
\Delta q_1\\
\Delta q_2
\end{array}\right)$ $\displaystyle =$ $\displaystyle \mbox{$\overrightarrow{PP'}$}$$\displaystyle .$$\displaystyle \mbox{\boldmath$n$}$  

Chaque contrainte scalaire correspond à une ligne d'un sytème d'équation. Une contrainte au sens général peut être vue comme un ensemble de contraintes scalaires. Par exemple, nous pouvons écrire l'équation [*] comme:

\begin{displaymath}
\left(
\begin{array}{cc}
\mbox{\boldmath $a_{1}.\mbox{\bold...
... \mbox{\boldmath $c$}.\mbox{\boldmath $y$}
\end{array}\right)
\end{displaymath}

Nous avons une équation à deux inconnues, ce qui dans le cas géneral fournit un espace de solutions de dimension 1. Plus généralement, pour un système de $ n$ équations a $ m$ inconnues, on peut s'attendre à un espace de solutions de dimension $ m-n$. Toutefois, les systèmes peuvent présenter des "déficiences de rang" quand une colonne de la matrice est combinaison linéaire des autres. Le mécanisme sur la figure [*] a beau posséder trois degrés de liberté, ils sont tous dans le plan $ ($$ x$$ ,$$ y$$ )$ et il ne pourra jamais satisfaire une contrainte en $ z$. Par contre, la dimension de l'espace des solutions dans le plan augmente de 1.
Figure: Mécanisme redondant. Les trois degrés de liberté dans le plan augmentent la dimension de l'espace des solutions. Ce mécanisme ne peut cependant pas satisfaire de contraintes dans la direction z.
\resizebox{!}{5cm}{\includegraphics{mecanisme2dredondant}}

4.2 Équation non linéaires

Les degrés de liberté en rotation induisent des fonctions trigonométriques dans les équations géométriques, rendant celles-ci non linéaires. On en voit quelques conséquences sur la figure [*]. Il y a deux manières de mener le point $ P$ au point $ P'$, mais aucune d'atteindre $ P''$ qui est trop loin.
Figure: Un mécanisme avec rotations. Un même type de contrainte peut avoir une, plusieurs ou aucune solution.
\resizebox{!}{5cm}{\includegraphics{nonlineaire}}

4.2.1 Linéarisation. Matrice Jacobienne.

L'équation de cinématique du solide ([*]) nous donne, en remarquant que $ \frac{d\mbox{$P$}}{dt}=\frac{d\mbox{$P$}}{d\mbox{\boldmath $q$}} \frac{d\mbox{\boldmath $q$}}{dt}$:
$\displaystyle \frac{\delta P}{\delta q_i}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$a_i$}$         (ddl en translation) (4.2)
$\displaystyle \frac{\delta P}{\delta q_i}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$a_i$}$$\displaystyle \wedge$$\displaystyle \mbox{$\overrightarrow{O_iP}$}$       (ddl en rotation) (4.3)

Autrement dit, les variations de coordonnées articulaires en translation se répercutent tel quel sur tout point; le cas des rotations est illustré sur la figure [*], où la variation est orthogonale à la droite menant à l'axe de rotation pour des (infiniment) petites variations d'angle.
Figure: Effet d'une petite rotation.
\resizebox{!}{1.5cm}{\includegraphics{petiterotation}}

Nous considérons la position d'un point $ P$ influencée par des ddl numerotés de $ 1$ à $ n$. Nous pouvons regrouper toutes les dérivées partielles en colonnes dans une matrice appelée matrice jacobienne de vitesse (ou de petit déplacement) au point $ P$:

   $ J$$\displaystyle _p = \frac{d\mbox{$P$}}{d\mbox{\boldmath $q$}} = \left(\begin{arr...
...delta P}{\delta q_1} & \hdots & \frac{\delta P}{\delta q_n}
\end{array}\right)
$

de dimensions $ 3\times n$ et qui permet d'approximer:

$\displaystyle \Delta$   $\displaystyle \mbox{$P$}$$\displaystyle \simeq$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle _p \Delta$   $\displaystyle \mbox{\boldmath$q$}$ (4.4)

Cette formule est exacte si tous les ddl sont des translations. La figure [*] illustre les vecteurs-colonnes de la matrice $ J$$ _p$ sur un exemple de mécanisme.
Figure: Les vecteurs colonnes de la jacobienne des vitesses du point P. Les vecteurs orthogonaux au plan de la figure sont illustrés par un disque plein.
\resizebox{!}{4cm}{\includegraphics{Jp}}

Les contraintes scalaires du type $ \Delta$   $ \mbox{$P$}$$ .$$ n$$ =b$ se traduisent par une équation:

$\displaystyle \left(\begin{array}{ccc}
\frac{\delta P}{\delta q_1}.\mbox{\boldm...
...ts & \frac{\delta P}{\delta q_n}.\mbox{\boldmath $n$}
\end{array}\right)
\Delta$   $ q$$\displaystyle = b
$

4.2.2 Contraintes d'orientation

Similairement à la position d'un point, la variation d'orientation d'un repère peut se représenter sous forme linéaire:

   $ J$$\displaystyle _r \Delta q = \Delta r
$

La quantité $ \Delta r$ est colinéaire à l'axe de rotation et a pour norme l'angle de rotation: $ \Delta r = \theta$   $ n$ correspond à une rotation d'axe $ n$ et d'angle $ \theta$. Les ddl en rotation influent directement sur l'orientation, tandis que les ddl en translation n'ont pas d'influence. Nous avons donc:
$\displaystyle \frac{\delta r}{\delta q_i}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$0$}$         (ddl en translation) (4.5)
$\displaystyle \frac{\delta r}{\delta q_i}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$a_i$}$       (ddl en rotation) (4.6)

Nous considérons l'orientation d'un repère influencée par des ddl numerotés de $ 1$ à $ n$. La jacobienne d'orientation est:

   $ J$$\displaystyle _r = \frac{dr}{d\mbox{\boldmath $q$}} = \left(\begin{array}{ccc}
...
...delta r}{\delta q_1} & \hdots & \frac{\delta r}{\delta q_n}
\end{array}\right)
$

4.2.2.1 Orientation d'un repère

Soit $ \mbox{${}_{n}^{0}\mbox{\boldmath $R$}$}$ la matrice d'orientation du repère considéré. Nous voulons l'amener à une orientation $ \mbox{${}_{n}^{0}\mbox{\boldmath $R'$}$}$ au moyen d'une rotation $ R$$ _{\mbox{\boldmath $n$},\theta}$ telle que: $ \mbox{${}_{n}^{0}\mbox{\boldmath $R'$}$}$$ =$   $ R$$ _{\mbox{\boldmath $n$},\theta} \mbox{${}_{n}^{0}\mbox{\boldmath $R$}$}$. Pour appliquer cette rotation au moyen des ddl disponibles nous resolvons donc:

   $ J$$\displaystyle _r \Delta q = \theta$   $ n$

Notez que cette solution n'est juste que pour les rotations inifiniment petites, car elle ne tient pas compte de la non-commutativité des rotations.

Exemple d'application: orientation d'une caméra.

4.2.3 Orientation d'un vecteur

Nous désirons rendre un vecteur $ u$ colinéaire à un vecteur $ u'$ comme illustré sur la figure [*].
Figure: Alignement d'un vecteur sur un autre.
\resizebox{!}{6cm}{\includegraphics{alignevecteurs}}
La rotation la plus directe transformant $ u$ en $ u'$ a son axe orthogonal à $ u$ et $ u'$, et pour angle l'angle $ \theta$ entre ces deux vecteurs. L'alignement entre les deux vecteurs nous laissant un degré de liberté, nous pourrions appliquer ensuite une rotation arbitraire autour de $ u'$. La rotation autour de $ v$, orthogonal à $ u$ et $ n$, doit quant à elle être nulle. L'alignement de $ u$ sur $ u'$ nécessite donc de poser les équations:

$\displaystyle \left(\begin{array}{ccc}
\frac{\delta r}{\delta q_1}.\mbox{\boldm...
...\\
\end{array}\right)
=
\left(\begin{array}{c}
\theta  0
\end{array}\right)
$

Exemple d'application: orientation d'un axe de perceuse.


4.3 Résolution des équations linéaires

Soit $ J$$ _{(n\times m)}$   $ \delta q$$ _{(m)}=$$ c$$ _{(n)}$ le système de $ n$ équations et $ m$ inconnues à résoudre. Nous considérons une matrice sans déficience de rang, sachant qu'une déficience entraîne une diminution du nombre d'inconnues indépendantes.

4.3.1 Matrice carrée

Si $ n=m$ et sous les hypothèses établies, le système a une solution unique. Il peut se résoudre par la factorisation LU de $ J$.

4.3.2 Plus d'inconnues que d'équations

Dans ce cas le système a une infinité de solutions. La pseudo-inverse de $ J$, notée $ J$$ ^+$, nous permet d'en calculer une:
$\displaystyle \mbox{\boldmath$\delta q$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^+$   $\displaystyle \mbox{\boldmath$c$}$ (4.7)
avec$\displaystyle \;$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^+$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T($$\displaystyle \mbox{\boldmath$J$}$$\displaystyle )$$\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T)^{-1}$ (4.8)

Cette solution minimise $ \delta q$$ ^2$ parmi toutes les solutions.

4.3.3 Plus d'équations que d'inconnues

Dans ce cas on doit trouver un compromis. Une autre formule de pseudo-inverse de $ J$ nous permet d'en calculer un:
$\displaystyle \mbox{\boldmath$\delta q$}$ $\displaystyle =$ $\displaystyle ($$\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T
$$\displaystyle \mbox{\boldmath$J$}$$\displaystyle )^{-1}$$\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T
$   $\displaystyle \mbox{\boldmath$c$}$ (4.9)

Cette solution minimise $ ($$ J$   $ \delta q$$ -$   $ c$$ )^2$.

4.3.4 Singularités

Certains mécanismes peuvent présenter des configurations spéciales appelées singularités, dans lesquelles des colonnes de la matrice Jacobienne se retrouvent linéairement dépendantes. La méthode de résolution employée jusqu'alors peut échouer. Ces cas se traitent, soit en appliquant une légère perturbation au système pour l'éloigner de la singularité, soit en appliquant une méthode de résolution plus perfectionnée comme celle présentée en section [*].


4.3.5 Décomposition en valeurs singulières (SVD)

Les méthodes précédentes peuvent échouer, quand par exemple une matrice $ n\times n$ est de rang $ n-1$, auquel cas aucune inverse ni pseudo-inverse ne peut être calculée. Ces cas se produisent lors de singularités, ou pour certains mécanismes redondants. On peut alors utiliser la décomposition SVD:

   $ J$$\displaystyle =$   $ U$   $ W$   $ V$$\displaystyle ^T
$

La matrice $ W$ est diagonale et contient des valeurs positives appelées valeurs singulières. Les matrices $ U$ et $ V$ sont orthogonales. Les vecteurs-colonnes de $ U$ associés à une valeur singulière non nulle constituent une base de l'image de $ J$. Les vecteurs-colonnes de $ V$ associés à une valeur singulière nulle constituent une base du noyau de $ J$. La solution du système est:

   $ \delta q$$\displaystyle =$   $ V$$\displaystyle ($$ W$$\displaystyle ^{-1})^*$   $ U$$\displaystyle ^T
$   $ c$

$ ($$ W$$ ^{-1})^*$ est une matrice diagonale composée des inverses des valeurs singulières non nulles, et de 0 pour les valeurs singulières nulles.

Pour plus d'inconnues que d'équations la solution minimise $ \delta q$$ ^2$, dans le cas contraire elle minimise $ ($$ J$   $ \delta q$$ -$   $ c$$ )^2$.

La décomposition SVD est hélas un algorithme très coûteux.

4.4 Résolution itérative des équations non linéaires

Dans le cas d'équations non linéaires, la résolution des équations linéaires à l'aide du jacobien ne nous donne qu'une solution approchée. Il convient donc de réitérer le processus. La figure [*] présente l'algorithme itératif de base.
Figure: Algorithme itératif de base pour la résolution d'équations géométriques.
\resizebox{!}{2.5cm}{\includegraphics{algoIteratif}}
Aux alentours des singularités cet algorithme peut présenter un comportement d'oscillation autour de la solution. On peut résoudre ce problème en remplaçant l'instruction $ q$$ \leftarrow$   $ q$$ +$   $ \delta q$ par un algorithme de minimisation de $ \Vert$$ c$$ \Vert$ sur la droite passant par $ q$ et de direction $ \delta q$. Cette idée est exploitée dans les algorithmes les plus performants ("quasi-Newton", ou à base de gradient conjugué).

Les mécanismes sont souvent pourvus de butées qui empêchent les coordonnées articulaires de dépasser certaines valeurs. On peut adapter l'algorithme précédent pour qu'en cas de depassement, la valeur soit fixée à la valeur limite. Dans ce cas le ddl correspondant n'est plus libre et la résolution doit se poursuivre aux moyens des autres ddl. L'algorithme présenté en figure [*] applique cette idée.

Figure: Algorithme itératif avec prise en compte de butées articulaires.
\resizebox{!}{4cm}{\includegraphics{algoIteratifAvecButees}}
Cet algorithme n'est pas garanti de converger vers la solution dans les cas complexes. Il convient alors de le redémarrer en partant de la solution courante et en libérant tous les ddl.

4.5 Utilisation de l'espace libre

4.5.1 Projection sur le noyau de $ J$

Nous nous plaçons dans le cas où les ddl fournissent un espace de solutions appelé espace libre. On peut remarquer que
$\displaystyle \forall$   $\displaystyle \mbox{\boldmath$z$}$$\displaystyle \;\;$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ($$\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^+$$\displaystyle \mbox{\boldmath$J$}$$\displaystyle -$$\displaystyle \mbox{\boldmath$I$}$$\displaystyle )$$\displaystyle \mbox{\boldmath$z$}$ $\displaystyle =$ $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ($   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T($$\displaystyle \mbox{\boldmath$J$}$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T)^{-1}$$\displaystyle \mbox{\boldmath$J$}$$\displaystyle -$   $\displaystyle \mbox{\boldmath$I$}$$\displaystyle )$$\displaystyle \mbox{\boldmath$z$}$  
  $\displaystyle =$ $\displaystyle ($$\displaystyle \mbox{\boldmath$J$}$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T($$\displaystyle \mbox{\boldmath$J$}$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle ^T)^{-1}$$\displaystyle \mbox{\boldmath$J$}$$\displaystyle -$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle )$$\displaystyle \mbox{\boldmath$z$}$  
  $\displaystyle =$ $\displaystyle ($$\displaystyle \mbox{\boldmath$J$}$$\displaystyle -$   $\displaystyle \mbox{\boldmath$J$}$$\displaystyle )$$\displaystyle \mbox{\boldmath$z$}$  
  $\displaystyle =$ $\displaystyle \mbox{\boldmath$0$}$  

L'opérateur $ J$$ ^+$$ J$$ -$$ I$ projette les vecteurs de corrdonnées articulaires sur le noyau de $ J$. Il en résulte que

$\displaystyle \forall$   $ z$$\displaystyle \;$$ J$$ \delta q$$\displaystyle =$$ c$$\displaystyle \;\Rightarrow\;$$ J$$\displaystyle ($$ \delta q$$\displaystyle +($$ J$$\displaystyle ^+$$ J$$\displaystyle -$$ I$$\displaystyle )$$ z$$\displaystyle )=$$ c$

4.5.2 Optimisation de poses

Quand les ddl fournissent un espace de solutions, il peut être souhaitable d'y optimiser certains critères. Pour un personnage articulé, on peut par exemple souhaiter que les coordonnées articulaires soient le plus proche possible de valeurs de référence représentant une position "naturelle". On formule alors un coût $ e$ à minimiser: $ e = \sum_i \alpha_i(q_i-q_{ic})^2$. Le problème se formule mathématiquement par: minimiser $ e$ sous la contrainte $ c$. Il existe des algorithmes perfectionnés pour résoudre ce genre de problèmes. Toutefois, il existe une approche rudimentaire, présentée en figure [*], qui peut donner de bons résultats. La difficulté est de définir ce qu'on entend par "petit" pas.
Figure: Une approche simple pour minimiser un critère e tout en respectant des contraintes.
\resizebox{!}{1.5cm}{\includegraphics{minContr}}
Une autre application de l'optimisation de pose consiste à contrôler le centre de gravité d'un personnage afin que sa projection au sol soit située entre les pieds.


A. Liaisons cinématiques

Liaison ponctuelle
\resizebox{6cm}{!}{\includegraphics{plan-sphere}} \resizebox{6cm}{!}{\includegraphics{cyl-cylortho}}
\resizebox{6cm}{!}{\includegraphics{ponctuel3}} \resizebox{6cm}{!}{\includegraphics{ponctuel2}} \resizebox{6cm}{!}{\includegraphics{ponctuel4}} \resizebox{6cm}{!}{\includegraphics{ponctuel5}}
Liaison pivot
\resizebox{6cm}{!}{\includegraphics{LPsphpt}} \resizebox{6cm}{!}{\includegraphics{LP2}} \resizebox{6cm}{!}{\includegraphics{LP3}}
\resizebox{6cm}{!}{\includegraphics{pivreper}} \resizebox{6cm}{!}{\includegraphics{LPschem}} \resizebox{6cm}{!}{\includegraphics{pivmouvt}}
Liaison glissière
\resizebox{6cm}{!}{\includegraphics{LG1}} \resizebox{6cm}{!}{\includegraphics{LG2}}
\resizebox{6cm}{!}{\includegraphics{LGreperage}} \resizebox{6cm}{!}{\includegraphics{LGschem}} \resizebox{6cm}{!}{\includegraphics{LGmouvt}}
Liaison pivot glissant
\resizebox{6cm}{!}{\includegraphics{PG1}} \resizebox{6cm}{!}{\includegraphics{PG2}} \resizebox{6cm}{!}{\includegraphics{PG4}}
\resizebox{6cm}{!}{\includegraphics{PG5}} \resizebox{6cm}{!}{\includegraphics{PG6}} \resizebox{6cm}{!}{\includegraphics{PG7}}
Liaison sphérique
\resizebox{6cm}{!}{\includegraphics{SP1}} \resizebox{6cm}{!}{\includegraphics{SP2}} \resizebox{6cm}{!}{\includegraphics{SP4}}
\resizebox{6cm}{!}{\includegraphics{SP4}} \resizebox{6cm}{!}{\includegraphics{SP5}} \resizebox{6cm}{!}{\includegraphics{SP6}}
Appui plan
\resizebox{6cm}{!}{\includegraphics{AP1}} \resizebox{6cm}{!}{\includegraphics{AP2}} \resizebox{6cm}{!}{\includegraphics{AP3}}
\resizebox{6cm}{!}{\includegraphics{AP4}} \resizebox{6cm}{!}{\includegraphics{AP5}} \resizebox{6cm}{!}{\includegraphics{AP6}}
Linéaire rectiligne
\resizebox{6cm}{!}{\includegraphics{LR1}} \resizebox{6cm}{!}{\includegraphics{LR2}} \resizebox{6cm}{!}{\includegraphics{LR3}}
\resizebox{6cm}{!}{\includegraphics{LR4}} \resizebox{6cm}{!}{\includegraphics{LR5}} \resizebox{6cm}{!}{\includegraphics{LR6}}
Linéaire annulaire
\resizebox{6cm}{!}{\includegraphics{LA1}} \resizebox{6cm}{!}{\includegraphics{LA2}} \resizebox{6cm}{!}{\includegraphics{LA3}}
\resizebox{6cm}{!}{\includegraphics{LA4}} \resizebox{6cm}{!}{\includegraphics{LA5}} \resizebox{6cm}{!}{\includegraphics{LA6}}
Hélicoidale
\resizebox{6cm}{!}{\includegraphics{LH1}} \resizebox{6cm}{!}{\includegraphics{LH2}} \resizebox{6cm}{!}{\includegraphics{LH3}}
\resizebox{6cm}{!}{\includegraphics{LH4}} \resizebox{6cm}{!}{\includegraphics{LH5}}

B. Glossaire français-anglais

application de A vers B mapping from A to B
base basis
degré de liberté degree of freedom
espace vectoriel vector space
liaison cinématique kinematic joint
liaison appui plan flat joint
liaison glissière prismatic joint
liaison pivot revolute joint (pin joint)
liaison pivot glissant cylindrical joint
liaison rotule spherical joint
produit scalaire dot product
produit vectoriel $ u \wedge v$ cross product $ u \times v$
repère frame, coordinate system
valeur propre eigenvalue
vecteur propre eigenvector
vecteur unitaire unit vector

Bibliographie

1
Press, Teukolski, Vetterling, and Flannery.
Numerical Recipes in C.
Cambridge University Press, 1992.

next_inactive up previous
Francois Faure 2002-10-30