• Aucun résultat trouvé

La commande par impédance est ici introduite. Bien que ce type de commande ne soit pas utilisée dans ce chapitre, elle est présentée ici afin d’être regroupée avec la commande par admittance pour fins de continuité et aussi pour pouvoir mieux apprécier la différence entre les deux types de commande (impédance et admittance). Bien que cette commande ne soit pas utilisée dans cette thèse, elle le sera pour la mise en oeuvre de la commande du robot Kuka LWR 3 disponible au laboratoire de robotique.

Le principe est généralement de reproduire, à l’effecteur du système robotique, un système masse-ressort-amortisseur découplé. Des types particuliers de cette commande sont la commande par compliance et la commande par compliance-amortissement. Dans le premier cas, seul l’élément ressort est simulé alors que dans le second cas, un amor- tissement est ajouté.

Dans un premier temps, la commande en force directe et la commande par com- pliance et amortissement seront abordées. Ces commandes spécifiques seront détaillées pour un seul degré de liberté pour rendre la compréhension plus facile et pour permettre de mieux comprendre le fondement de la commande par impédance.

1.2.1

Commande en force directe

Le but de la commande en force directe est d’appliquer une force donnée sur un environnement. Par exemple, pour un degré de liberté (ddl) :

e = fd− fm (1.1)

et une commande de type proportionnel-intégral-dérivatif (PID) mène à u = KPe + KI

Z

edt + KD de

dt (1.2)

où e est l’erreur, fd est la force désirée, fm est la force mesurée, u est la commande et KP, KI et KD sont respectivement des gains proportionnel, intégral et dérivatif.

Il pourrait par exemple être souhaité de rendre une force nulle à l’utilisateur en ré- glant fd = 0. Lorsque l’opérateur appliquera une force, celle-ci sera captée et le robot réagira pour rendre une force nulle.

Il est aussi possible d’ajouter une pré-compensation pour améliorer les performances. En effet, nous connaissons la force appliquée par l’utilisateur, fm, via le capteur de force. La force à appliquer au robot pour rendre une force nulle à l’utilisateur est donc théoriquement fm. Il serait donc possible d’appliquer la commande :

u = −fm (1.3)

et la commande finale serait :

u = −fm+ KPe + KI

Z

edt + KD de

dt. (1.4)

Cette pré-compensation peut aussi être utile dans le cas d’une force désirée non-nulle. Il serait aussi possible de compenser en partie les termes dynamiques comme nous le verrons plus loin.

1.2.2

Commande par compliance et amortissement

Le but de cette commande est de reproduire un comportement ressort-amortisseur. La force à rendre est donc :

fd = k(x − xd) + c( ˙x − ˙xd). (1.5) où k est la raideur du ressort virtuel et c est son amortissement, x la position et xd la position désirée. Selon le cas, k et/ou c peuvent être réglés à zéro. Souvent, le point xd est fixe donc ˙xd= 0.

Dans un premier temps, nous considérons qu’il n’y a pas de capteur de force. Une approche est d’utiliser directement la commande :

u = −k(x − xd) − c( ˙x − ˙xd). (1.6) Il s’agit d’une commande en boucle ouverte et la qualité du rendu est donc dépendante de la connaissance des paramètres physiques du système et de leur compensation, ce qui n’est pas nécessairement évident en pratique.

Si un capteur de force est disponible, différentes options sont possibles. Il est par exemple possible d’ajouter une compensation u = −fm ou bien d’appliquer une com- mande en force directe avec fd= k(x − xd) + c( ˙x − ˙xd). La commande finale pourrait donc être : u = −f∗+ KPe + KI Z edt + KD de dt (1.7)

où f∗ peut être une pré-compensation de force mesurée fm ou de force désirée fd. Le rendu sera meilleur, grâce à la rétroaction, mais au prix du besoin d’un capteur de force qui peut être coûteux. Il serait aussi possible de compenser en partie les termes dynamiques comme nous le verrons plus loin.

1.2.3

Commande par impédance

La commande par impédance est plus complète et les cas précédents en représentent des cas particuliers. Bien qu’elle puisse être mise en oeuvre de différentes manières, une forme est présentée ici.

Pour débuter en simplicité, la force à rendre pour un degré de liberté est :

fd= k(x − xd) + c( ˙x − ˙xd) + m(¨x − ¨xd). (1.8) où m est l’inertie désirée.

Il serait possible de rendre cette force en boucle ouverte (avec un modèle) ou en boucle fermée (avec ou sans modèle) en utilisant un capteur de force. Bien que cela paraisse simple, il en est tout autrement dans la réalité. En effet, en pratique, il est très difficile d’obtenir l’accélération du système, ¨x, en raison du bruit de mesure. Cette commande n’est donc généralement pas utilisée telle quelle.

Avant de voir la commande à utiliser en pratique, nous allons d’abord nous attarder à la compensation des termes dynamiques. En considérant l’équation dynamique

u = M ¨x + hN, (1.9)

la commande à appliquer pour compenser ces termes (et donc améliorer le rendu) est simplement :

où M est l’inertie réelle et hN représente un terme de gravité et autres termes dyna- miques. Comme nous l’avons vu, il est cependant difficile d’obtenir une bonne esti- mation du terme ¨x. La compensation du terme inertiel n’est donc généralement pas possible en pratique sans l’utilisation d’un capteur de force.

Cependant, si un capteur de force est disponible, il est possible d’utiliser une astuce pour pouvoir compenser le terme inertiel et rendre une masse virtuelle choisie, ce qui n’est pas possible avec les autres cas spécifiques discutés dans les sections précédentes. Il s’agit d’exploiter l’équation dynamique théorique (où m est la masse virtuelle) :

fm = k(x − xd) + c( ˙x − ˙xd) + m(¨x − ¨xd) (1.11) et d’y isoler ¨x :

¨

x = ¨xd+ m−1[fm− k(x − xd) − c( ˙x − ˙xd)] . (1.12) La pré-compensation des termes dynamiques devient donc :

u = Mx¨d+ m−1[fm− k(x − xd) − c( ˙x − ˙xd)]



+ hN. (1.13)

Il devient cependant impossible d’ajouter une rétro-action. Il est cependant possible d’ajouter la compensation u = fm pour obtenir :

u = Mx¨d+ m−1[fm− k(x − xd) − c( ˙x − ˙xd)]



+ hN + fm. (1.14) Cette commande est en quelque sorte en boucle ouverte, ce qui implique que les para- mètres du système doivent être bien connus afin de rendre la dynamique désirée.

Pour un système général à plusieurs ddls la commande serait (Yoshikawa, 1990) :

τ = MJ−1h− ˙J ˙θ + ¨xi+ hN(θ, ˙θ) + JT(Mv∆¨x + Cv∆ ˙x + Kv∆x), (1.15) le système dynamique désiré est :

fm = Mv∆¨x + Cv∆ ˙x + Kv∆x (1.16) l’accélération est déduite :

¨

x = ¨xd+ Mv−1(Cv∆ ˙x + Kv∆x − fm) (1.17) et finalement la loi de commande est :

τ = MJ−1h− ˙J ˙θ + ¨xd+ Mv −1

(Cv∆ ˙x + Kv∆x − fm)

i

Le terme M réfère à la matrice d’inertie généralisée du système, Mv à la matrice d’inertie virtuelle, Kv à la matrice de raideur virtuelle, Cv à la matrice d’amortissement virtuelle, J à la matrice Jacobienne, ˙J à la dérivée temporelle de la matrice d’inertie, θ

le vecteur de positions articulaires, ˙θ le vecteur de vitesses angulaires, hN le vecteur des termes de gravité, de Coriolis et des forces centripètes, x, ˙x et ¨x sont respectivement les vecteurs de positions, vitesses, et accélérations cartésiennes mesurées alors que xd, ˙xdet ¨

xd sont respectivement les vecteurs de positions, vitesses, et accélérations cartésiennes désirés. De plus,

∆x = xd− x (1.19)

∆ ˙x = ˙xd− ˙x ∆¨x = ¨xd− ¨x.