Aller au contenu


Photo
- - - - -

Cinematique inverse sous contrainte


1 réponse à ce sujet

#1 MisterC

MisterC

    Nouveau membre

  • Membres
  • 2 messages

Posté 22 novembre 2018 - 06:08

Bonjour,

 

Je suis un élève en ingénierie actuellement en stage dans un département de Biomécanique. Je fais une étude préliminaire au sujet d'un bras mécanique non motorisé. J'utilise pour cela Matlab.

J'ai rédigé différents scriptes qui me permettent d'appliquer un cinématique directe, ou encore une cinématique inverse en fonction d'une position donnée.

Tout cela fonctionne très bien aucun soucis, cependant il faudrait que je ''complexifie'' un de mes scriptes portant sur la cinématique inverse. Mon système est bien entendu sous contraints, il a 5 degrés de liberté. J'aimerai apporter des contraintes d'angles sur chacune de mes articulations. C'est-à-dire, par exemple, empêcher la première articulation de prendre un angle hors de l'intervalle [0;pi/2].

J'ai pu trouvé une ressource intéressante où mon problème est justement traité (p7-9) mais quelque peu difficile à comprendre.  http://www.isir.upmc.fr/UserFiles/File/Bidaud/Cours%20Robotique%20834

 

J'ai un niveau assez avancé en maths et physique mais très peu en robotique. Quelqu'un pourrais m'éclairer sur le modèle que je dois appliquer, ou me fournir une ressource un peu plus abordable à étudier pour commencer.

 

Merci de votre aide en tout cas.



#2 MisterC

MisterC

    Nouveau membre

  • Membres
  • 2 messages

Posté 23 novembre 2018 - 03:22

Pour ceux que ca pourrait intéresser j'ai finalement résolu mon problème et améliorer le scripte. A partir du scripte classique de Matlab pour la cinématique inverse où les angles sont calculés de manière récursive en discret, au lieu de calculer l'écart d'angle deltaQ de la manière suivante:

DeltaQ=pinv(J)*DeltaX,    pinv(J) la pseudo-inverse de la jacobienne de notre système

                                        DeltaX l'ecart entre la position actuelle et la position visée par le bout du bras

 

On ajoute un terme d'optimisation qui est le suivant:

 

alpha *(I-pinv(J)*J)*grad(phi(q)),           alpha coefficient négatif pour minimiser la fonction

                                                             I la matrice identité

                                                             grad(phi) le gradient d'une fonction phi par rapport au différents angles de notre système

 

On a alors:

DeltaQ=pinv(J)*DeltaX+alpha *(I-pinv(J)*J)*grad(phi(q)).

 

 

La fonction phi dépend de l'optimisation (ou contrainte) que l'on cherche à mettre en oeuvre. Dans la cas d'angle limite, phi a cette forme:

 

phi=Somme(((qi-1/2(qimax+qimin))/(qimax-qimin)))^2,         qimax l'angle limite maximum pris par l'angle i

                                                                                            qimin l'angle limite minimum pris par l'angle i

                                                                                            qi la valeur actuel de l'angle il

Ce qui donne au finale:

 

DeltaQ=pinv(J)*DeltaX+2*alpha *(I-pinv(J)*J)*(qi-1/2(qimax+qimin))/(qimax-qimin)^2.

 

Si il y a quelques questions car c'est assez abstrait j'essaierai d'y répondre

Ps: Désolé je sais pas coder en LaTex





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users