Asservissement polaire d'un robot

Date: 2013-05-25

Tags: Galiléo microcontrolleur

But

En sachant notre position actuelle, on veut atteindre une autre position, et l’atteindre à tous les coups, quel que soient l’état du terrain, des pneus (dérapage), des contraintes internes (jeu mécanique) ou des contraintes extérieures (choc non prévu).

On est donc obligés d’utiliser d’avoir un retour et de contrôler le robot en position.

Asservissement en Position

Pour atteindre une position, on calcule la différence entre la position actuelle et la position à atteindre, la dériver et l’intégrer. Ensuite on somme toutes ces variables, chacune avec son propre facteur, ainsi on a :

S=Pε+Iε,dt+DdεdtS = P \cdot \varepsilon + I \cdot \int \varepsilon,dt + D \cdot \frac{d\varepsilon}{dt}

Asservissement en Vitesse

De la même façon, on dérive le ε (l’erreur entre l’entrée et la sortie), et on asservit en vitesse. Ça peut-être utile si la chaîne de traction de chaque roue est légèrement différente, avec un robot qui dérive un peu en ligne droite (avec les roues parfaitement parallèles).

C’est forcément à utiliser en plus d’un asservissement en position, souvent le système est cloisonné en deux parties :

Contrôle(s)

Pour détecter les instabilités, les chocs et protéger les moteurs, il est utile d’avoir un retour sur le couple développé par les moteurs, que l’on peut obtenir avec le courant qu’ils consomment.

Ça permet aussi, en limitant le courant, d’avoir de “jolis” trapèzes de vitesse, avec une accélération constante. Sans contrôle du courant, on a V=Vmax(1etτ)V = V_{max} (1-e^{\frac{t}{\tau}}), qui impose un couple et un courant énormes à faible vitesse, risquant de faire déraper le robot, et d’abîmer le moteur si le robot se met a osciller.

Les cartes moteur LMD18200 de Galiléo ont une sortie en tension, proportionnelle au courant consommé par le moteur. Mais les moteurs MFA ont un courant très bruité par le collecteur et le PWM, et les moteurs Maxon ont tellement de couple que les roues dérapent avant que le courant n’ait le temps d’augmenter…

Principe de l’asservissement polaire

On contrôle les erreurs de position (et aussi de vitesse et d’intégrale avec les coefficients D et I), roue par roue, et l’erreur d’angle.

Ça permet de rouler droit, sans dévier, même si le robot prend du lacet et oscille, il garde le cap et la position finale voulus.

Schéma bloc asservissement polaire

Coefficients

Ici, l’écart statique est difficile à accepter, mais les instabilités liées à l’intégrateur sont “dangereuses”, du coup il faut être subtil dans le choix des coefficients. On peut avoir un écart statique négligeable sans intégrateur, et accepter jusqu’à quelques mm d’erreur statique.

Au final, ce qui fonctionne le mieux, c’est un coefficient P obtenu (par calcul/simulation/dichotomie à l’arrache) pour ne pas avoir trop d’erreur statique et un seul dépassement maximum, et ensuite, rajouter un D pour corriger le dépassement et augmenter la vitesse.

Le I est remplacé par le temps de lecture des codeurs optiques, en quelques ms, l’écart est déjà intégré (de quelques pas à quelques dizaines de pas).

Astuces

Pour qu’un asservissement soit fiable, il faut deux choses : Que le système fonctionne déjà pas trop mal sans asservissement, et que les conditions soient assez proches à chaque utilisation.

Composants utilisés pour l’asservissement

Electronics Électronique puissance semiconducteur semiconductors power Hardware CPE INSA Xavier Bourgeois

Xavier