Aller au contenu


MisterC

Inscrit(e) (le) 22 nov. 2018
Déconnecté Dernière activité nov. 28 2018 05:59
-----

Messages que j'ai postés

Dans le sujet : Cinematique inverse sous contrainte

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