Skip to main content

Mathématiques pour la robotique

À 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 directe / inverse

  • Dans quel espace ? : Le mécanisme à 3 degrés de liberté
  • Quels sont les variables ? : Les entrées vont être le tuple de θ\theta ainsi que les longueurs des 3 paramètres tt
  • **Poser le problème ** : Dans le modèle directe on souhaite trouver les coordonées cartésiennes en fonction des θ\theta et des longueurs tt. Le modèle inverse lui fournit la position des différents joints θ\theta en fonction de la position cartésienne de l'effecteur.

Modèles direct : sorties en fonction des entrées

Enchainer le changement de repère revient à ajouter la matrice de rotation multiplié par celle des translations.

X=(t1.cosθ+t2.cos(θ1+θ2)+t3.cos(θ1+θ2+θ3)t1.sinθ+t2.sin(θ1+θ2)+t3.sin(θ1+θ2+θ3)θ1+θ2+θ3)\mathcal{X} = \begin{pmatrix} t_1. \cos{\theta} + t_2 . \cos(\theta_1 + \theta_2) + t_3 . \cos(\theta_1 + \theta_2 + \theta_3) \\ t_1 . \sin{\theta} + 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èles 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)

Lorsqu'il y a plusieurs solutions dans un problème nous sommes face à un système non linéaire

Posons le système d'équations

{t1.cosθ1+t2cos(θ1+θ2)+t3cosθ1+θ2+θ3X1=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.

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é x0x_0. Nous avons f(x0)f(x)=f(x0).(x0x)f(x_0) - f(x) = f'(x_0).(x_0-x) avec f(x)=0f(x) = 0 nous obtenons :

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

Le schéma de Newton est donc

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

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.

Un exemple simple

Nous pouvons déterminer les équations suivantes

M1=(u1v1)=(cosa1sina1)M2=(u2v2)=(cosa2sina2)(xc1xyc1y)(cosπ/2sinπ/2sinπ/2cosπ/2)(u1v1)=0(xc2xyc2y)(cosπ/2sinπ/2sinπ/2cosπ/2)(u2v2)=0(sina1cosa1sina2cosa2)(xy)=(sina1.c1xcosa1c1ysina2.c2xcosa2c2y)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} \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} \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 avec x=A1.bx = A^{-1}.b peut s'avérer trop complexe dans certaines situations. Nous allons donc utiliser une décomposition SVD pour résoudre l'équation, la décomposition s'écrit alors svd(A)=U.S.VTsvd(A) = U.S.V^{T}. Détails sur la décomposition SVG

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. Par exemple x1+x2=4x_1 + x_2 = 4 est un système sous contraints. Il existe une infinité de solution et nous cherchons à en carctériser une. La résolution va se réaliser en résoluvant argminH(x)arg min H(x) avec H(x)=xTx+λT(Axb)H(x) = x^{T} x + \lambda^T (Ax-b).

Pour résoudre des systèmes sosus contraints nous allons avoir besoin d'une notion supplémentaire : la pseudo inverse. La pseudo inverse (droite) se définit comme : AR+=AT(AAT)1=i=1Nσ1viuiTA^+_{R} = A^T (AA^T)^{-1} = \sum \limits_{i=1}^N \sigma^{-1} v_i u_i^T.

La solution d'un système linéaire sous contraint est donc x=AR+b+i=n+1mαiviαi=AR+b+[IAR+A]ωx = A^+_R b + \sum \limits_{i=n+1}^m \alpha_i v_i \forall \alpha_i = A^+_R b + [I - A^+_RA] \omega. Nous pouvons remaquer que Ax=bA(x+z)=bAx=b \Leftrightarrow A(x+z) = b avec Az=0Az =0, zz est donc choisi dans le noyau de la matrice AA.