L’asservissement consiste à atteindre et maintenir une valeur cible en agissant directement sur le système en fonction de l’écart entre la consigne et la mesure.
Le PID est un type d’asservissement courant en robotique, car il permet de garantir une valeur fixe (le cap) même quand le robot est en déplacement. Comme le PID fonctionne même avec une consigne variable, on peut ainsi avoir en même temps un mouvement reproductible (suivre une trajectoire précise) et une correction des petits accidents de parcours (glissements, jeu dans la mécanique, etc..).
Le PID est également utilisé pour le contrôle de la température d’une pièce : le thermostat fixe la consigne, mais l’être humain étant très sensible aux variations, il faut surtout éviter les oscillations plus chaud / plus froid, et c’est typiquement l’application du PID : atteindre le plus rapidement possible la consigne sans la dépasser et en se stabilisant rapidement.
Cette stabilisation nécessaire est causée par l’inertie, plus ou moins importante, de toute grandeur physique soumise à une contrainte (la température quand on chauffe, la vitesse quand on propulse, etc...).
Voici un exemple du résultat qu’on peut attendre du PID : faire tenir une balle en équilibre sur un plateau. C’est le belge K-my qui nous le présente sur le forum Planète-Sciences.
ferrero ball by k-my and michou
envoyé par k_my
Nous développerons plus tard la théorie, on va commencer par des tests simples.
Un exemple simple : le ressort
Un ressort est un dispositif mécanique qui réagit à sa compression ou à son étirement par une force opposée. Dans la démonstration ci-dessous (issu de l’exemple "Spring" du logiciel Processing), les équations du poids (la force qui soumet une masse à l’effet de la gravité) et du ressort permettent de reproduire son fonctionnement. Il n’y a aucun asservissement ici, et cela nous servira de référence pour comparer avec nos tentatives d’implémentation du PID.
Premier asservissement
Ce second exemple est un asservissement en position : la valeur mesurée est l’abscisse (directement donnée par l’applet graphique, donc considérée comme exacte et la consigne est d’avoir une abscisse nulle pour le mobile. Le mobile est commandé en vitesse, c’est-à-dire qu’un algorithme simplissime va mettre à jour à chaque itération la position du mobile comme s’il s’agissait de sa vitesse réelle : x(n) = x(n-1) + v * t où v est la sortie de l’asservissement et t le temps entre deux tours de boucle.
This browser does not have a Java Plug-in.
Get the latest Java Plug-in here.
Second asservissement
This browser does not have a Java Plug-in.
Get the latest Java Plug-in here.
Application concrête
Nous allons maintenant tester un asservissement PID sur un robot. Pour cela, on utilisera le robot Pobot Easy et une bibliothèque pour Arduino.