Aller au contenu principal

Mathématiques pour la robotique

Les notes rassemblent les outils mathématiques utilisés pour positionner un robot et résoudre ses modèles. Elles enchaînent la composition des déplacements d'un robot mobile, les modèles direct et inverse d'un bras plan à trois articulations avec leur résolution numérique par la méthode de Newton, la localisation par deux goniomètres résolue par décomposition en valeurs singulières, puis les systèmes sous-contraints et la pseudo-inverse.

À partir d'une position initiale, le robot tourne de θ\theta puis avance de tt puis tourne de α\alpha puis avance de dd. Donner son positionnement dans le repère (x,y,θ)(x,y,\theta).

  • Le robot tourne de θ\theta puis avance de tt. Dans le repère ΩO=(O,i⃗,j⃗)\Omega_O = (O, \vec{i}, \vec{j}) :
T⃗ΩO=(uv)=t.(cos⁡θsin⁡θ)\vec{T}_{\Omega_O} = \begin{pmatrix} u\\ v \end{pmatrix} = t. \begin{pmatrix} \cos{\theta} \\ \sin{\theta} \end{pmatrix}
  • Puis, le robot tourne de α\alpha puis avance de dd. Dans le repère ΩC=(C,x⃗,y⃗)\Omega_C = (C, \vec{x}, \vec{y}) :
D⃗ΩC=(pq)=d.(cos⁡αsin⁡α)\vec{D}_{\Omega_C} = \begin{pmatrix} p\\ q \end{pmatrix} = d. \begin{pmatrix} \cos{\alpha} \\ \sin{\alpha} \end{pmatrix}

Modèles direct et inverse​

On considère un bras plan à 3 articulations rotoïdes, de longueurs de segments t1t_1, t2t_2 et t3t_3.

  • Dans quel espace ? : le mécanisme à 3 degrés de liberté.
  • Quelles sont les variables ? : les entrées sont les angles articulaires (θ1,θ2,θ3)(\theta_1, \theta_2, \theta_3), les longueurs tit_i étant des paramètres.
  • Poser le problème : dans le modèle direct, on souhaite trouver les coordonnées cartésiennes en fonction des θi\theta_i et des longueurs tit_i. Le modèle inverse lui fournit la position des différents joints θ\theta en fonction de la position cartésienne de l'effecteur.

Modèle direct : sorties en fonction des entrées​

Enchaîner les changements de repère revient à composer, pour chaque segment, une rotation et une translation (produit des matrices de transformation).

X=(t1cos⁡θ1+t2.cos⁡(θ1+θ2)+t3.cos⁡(θ1+θ2+θ3)t1sin⁡θ1+t2.sin⁡(θ1+θ2)+t3.sin⁡(θ1+θ2+θ3)θ1+θ2+θ3)\mathcal{X} = \begin{pmatrix} t_1 \cos{\theta_1} + t_2 . \cos(\theta_1 + \theta_2) + t_3 . \cos(\theta_1 + \theta_2 + \theta_3) \\ t_1 \sin{\theta_1} + t_2 . \sin(\theta_1 + \theta_2) + t_3 . \sin(\theta_1 + \theta_2 + \theta_3) \\ \theta_1 + \theta_2 + \theta_3 \end{pmatrix}

Modèle inverse : entrées en fonction des sorties​

Calculer le MGI revient à déterminer : [θ1,θ2,θ3]=FMGI(X1,X2,X3)[\theta_1, \theta_2, \theta_3] = \mathcal{F}_{MGI}(X_1, X_2, X_3)

Le système est non linéaire (fonctions trigonométriques) et peut admettre plusieurs solutions (par exemple coude en haut ou coude en bas).

Posons le système d'équations :

{t1.cos⁡θ1+t2cos⁡(θ1+θ2)+t3cos⁡(θ1+θ2+θ3)−X1=0t1.sin⁡θ1+t2sin⁡(θ1+θ2)+t3sin⁡(θ1+θ2+θ3)−X2=0θ1+θ2+θ3=X3\begin{cases} t_1 .\cos{\theta_1} + t_2 \cos(\theta_1 + \theta_2) + t_3 \cos(\theta_1 + \theta_2 + \theta_3) - X_1 = 0 \\ t_1 . \sin{\theta_1} + t_2 \sin(\theta_1 + \theta_2) + t_3 \sin(\theta_1 + \theta_2 + \theta_3) - X_2 = 0 \\ \theta_1 + \theta_2 + \theta_3 = X_3 \end{cases}

Pour résoudre ce problème, nous pouvons poser θ3=X3−θ1−θ2\theta_3 = X_3 - \theta_1 - \theta_2, ce qui ramène à deux équations à deux inconnues.

Résolution numérique : méthode de Newton​

Nous cherchons à déterminer xx tel que f(x)=0f(x) = 0. Nous connaissons une approximation de xx, notée x0x_0. Au premier ordre, f(x)≈f(x0)+f′(x0)(x−x0)f(x) \approx f(x_0) + f'(x_0)(x-x_0) ; avec f(x)=0f(x) = 0, nous obtenons :

x=x0−f(x0)f′(x0)x = x_0 - \dfrac{f(x_0)}{f'(x_0)}

Le schéma de Newton est donc (en dimension supérieure, f′f' est remplacée par la matrice jacobienne, que l'on inverse) :

xk+1=xk−f(xk)f′(xk)x_{k+1} = x_k - \dfrac{f(x_k)}{f'(x_k)}

Un exemple simple​

C1C_1 et C2C_2 sont les positions des goniomètres, a1a_1 et a2a_2 sont les mesures angulaires et SS la position du robot.

Localisation par deux goniomètres

Le point SS appartient à la droite issue de CiC_i de direction MiM_i, donc CiS→\overrightarrow{C_iS} est orthogonal à MiM_i tourné de π/2\pi/2. Nous pouvons déterminer les équations suivantes :

M1=(u1v1)=(cos⁡a1sin⁡a1)M2=(u2v2)=(cos⁡a2sin⁡a2)(x−c1xy−c1y)T(cos⁡π/2−sin⁡π/2sin⁡π/2cos⁡π/2)(u1v1)=0(x−c2xy−c2y)T(cos⁡π/2−sin⁡π/2sin⁡π/2cos⁡π/2)(u2v2)=0(sin⁡a1−cos⁡a1sin⁡a2−cos⁡a2)(xy)=(sin⁡a1.c1x−cos⁡a1c1ysin⁡a2.c2x−cos⁡a2c2y)A.S=B\begin{align*} M_1 &= \begin{pmatrix} u_1 \\ v_1 \end{pmatrix} = \begin{pmatrix} \cos{a_1} \\ \sin{a_1} \end{pmatrix} \\ M_2 &= \begin{pmatrix} u_2 \\ v_2 \end{pmatrix} = \begin{pmatrix} \cos{a_2} \\ \sin{a_2} \end{pmatrix} \\ \begin{pmatrix} x - c_{1_x} \\ y - c_{1_y} \end{pmatrix}^T \begin{pmatrix} \cos{\pi/2} & - \sin{\pi/2} \\ \sin{\pi / 2} & \cos{\pi / 2} \end{pmatrix} \begin{pmatrix} u_1 \\ v_1 \end{pmatrix} &= 0\\ \begin{pmatrix} x - c_{2_x} \\ y - c_{2_y} \end{pmatrix}^T \begin{pmatrix} \cos{\pi/2} & - \sin{\pi/2} \\ \sin{\pi / 2} & \cos{\pi / 2} \end{pmatrix} \begin{pmatrix} u_2 \\ v_2 \end{pmatrix} &= 0 \\ \begin{pmatrix} \sin{a_1} & - \cos{a_1} \\ \sin{a_2} & - \cos{a_2} \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} &= \begin{pmatrix} \sin{a_1}.c_{1_x} - \cos{a_1} c_{1_y} \\ \sin{a_2}.c_{2_x} - \cos{a_2} c_{2_y} \end{pmatrix} \\ A.S &= B \end{align*}

Nous cherchons donc à résoudre l'équation A.x=bA.x = b ; cependant, la résolution par x=A−1.bx = A^{-1}.b peut s'avérer impossible ou numériquement instable dans certaines situations (matrice singulière ou mal conditionnée, par exemple si les deux droites sont presque parallèles). Nous allons donc utiliser une décomposition en valeurs singulières (SVD) pour résoudre l'équation : A=U.S.VTA = U.S.V^{T}, avec UU et VV orthogonales et SS diagonale.

Résolution de systèmes sous-contraints​

Soit le système An×m.xm×1=bn×1A_{n \times m} . x_{m \times 1} = b_{n \times 1} avec n<mn < m (moins d'équations que d'inconnues). Par exemple, x1+x2=4x_1 + x_2 = 4 est un système sous-contraint. Il existe une infinité de solutions, et nous cherchons à en caractériser une : celle de norme minimale. La résolution se fait en calculant argmin⁡xH(x)\operatorname{argmin}_x H(x) avec le lagrangien H(x)=xTx+λT(Ax−b)H(x) = x^{T} x + \lambda^T (Ax-b).

Pour résoudre des systèmes sous-contraints, nous allons avoir besoin d'une notion supplémentaire : la pseudo-inverse. La pseudo-inverse (à droite) d'une matrice AA de rang nn se définit comme : AR+=AT(AAT)−1=∑i=1nσi−1viuiTA^+_{R} = A^T (AA^T)^{-1} = \sum \limits_{i=1}^n \sigma_i^{-1} v_i u_i^T, où les σi\sigma_i sont les valeurs singulières de AA et uiu_i, viv_i les vecteurs singuliers associés.

La solution générale d'un système linéaire sous-contraint est donc x=AR+b+∑i=n+1mαivix = A^+_R b + \sum \limits_{i=n+1}^m \alpha_i v_i (avec des αi\alpha_i réels quelconques) =AR+b+[I−AR+A]ω= A^+_R b + [I - A^+_RA] \omega (avec ω\omega quelconque) ; AR+bA^+_R b est la solution de norme minimale. Nous pouvons remarquer que Ax=b⇔A(x+z)=bAx=b \Leftrightarrow A(x+z) = b avec Az=0Az =0, zz est donc choisi dans le noyau de la matrice AA.