BlockWerk Guides

Pendule Inversé sur Chariot

Un pendule suspendu à un pivot est classique et prévisible : une impulsion l'écarte de sa position d'équilibre, puis il oscille naturellement avant de s'arrêter. Placez ce même pendule debout sur un chariot mobile horizontalement, et vous obtenez le problème d'école par excellence de l'automatique. Le système ne peut demeurer immobile seul : abandonné à lui-même, il chute, et sa vitesse de chute s'accélère au fur et à mesure qu'il bascule. La seule façon de le stabiliser consiste à déplacer le chariot sous la tige pour rattraper en permanence son centre de gravité.

Ce système regroupe tous les défis de la commande moderne : une dynamique instable en boucle ouverte, des correcteurs qui doivent agir avant que l'écart ne s'emballe, la distinction essentielle entre commande de position et amortissement d'attitude, ainsi que l'impact critique des retards purs.

Configuration physique

Un chariot de masse MM roule sur un rail horizontal soumis à un frottement visqueux bb. Une tige de masse mm est reliée au chariot par une liaison pivot dans le plan vertical. La force uu appliquée horizontalement au chariot constitue l'unique entrée de commande. L'angle θ\theta est mesuré par rapport à la verticale ascendante : θ=0\theta = 0 correspond à la position d'équilibre instable, une valeur positive indiquant une inclinaison vers la droite.

SymboleSignificationValeur
MMMasse du chariot0,5 kg0{,}5\ \text{kg}
mmMasse du pendule0,2 kg0{,}2\ \text{kg}
bbCoefficient de frottement du chariot0,1 N⋅s/m0{,}1\ \text{N}\cdot\text{s/m}
llDistance du pivot au centre de gravité0,3 m0{,}3\ \text{m}
IIMoment d'inertie par rapport au centre de gravité13ml2=0,006 kg⋅m2\tfrac{1}{3}ml^2 = 0{,}006\ \text{kg}\cdot\text{m}^2
ggAccélération de la pesanteur9,81 m/s29{,}81\ \text{m/s}^2

Équations du mouvement

En isolant le chariot et la tige, la liaison pivot transmet une force horizontale NN et une force verticale PP.

Principe fondamental de la dynamique appliqué au chariot selon l'axe horizontal :

Mx¨+bx˙+N=uM\ddot{x} + b\dot{x} + N = u

Le centre de gravité du pendule se trouve en x−lsin⁡θx - l\sin\theta (θ\theta positif incline le pendule vers l'arrière, vers −x-x). Deux dérivations temporelles donnent l'effort horizontal requis :

N=mx¨−mlθ¨cos⁡θ+mlθ˙2sin⁡θN = m\ddot{x} - ml\ddot{\theta}\cos\theta + ml\dot{\theta}^2\sin\theta

En substituant NN, on obtient la première équation différentielle couplée :

(M+m)x¨+bx˙−mlθ¨cos⁡θ+mlθ˙2sin⁡θ=u(M + m)\ddot{x} + b\dot{x} - ml\ddot{\theta}\cos\theta + ml\dot{\theta}^2\sin\theta = u

Pour la rotation, le théorème du moment cinétique au centre de gravité du pendule donne :

(I+ml2)θ¨−mglsin⁡θ=mlx¨cos⁡θ(I + ml^2)\ddot{\theta} - mgl\sin\theta = ml\ddot{x}\cos\theta

Deux équations différentielles non linéaires couplées. Notez le signe du terme de gravité : passé au second membre, il vaut +mglsin⁡θ+mgl\sin\theta puisque θ\theta est mesuré depuis la verticale montante ; il pousse θ¨\ddot\theta dans le sens où θ\theta pointe déjà — c'est exactement ce qui fait tomber le système au lieu de le ramener.

Linéarisation autour de l'équilibre vertical

Pour de petits angles autour de θ=0\theta = 0, sin⁡θ≈θ\sin\theta \approx \theta, cos⁡θ≈1\cos\theta \approx 1 et θ˙2≈0\dot{\theta}^2 \approx 0 :

(I+ml2)θ¨−mglθ=mlx¨(I + ml^2)\ddot{\theta} - mgl\theta = ml\ddot{x}

(M+m)x¨+bx˙−mlθ¨=u(M + m)\ddot{x} + b\dot{x} - ml\ddot{\theta} = u

Par transformation de Laplace et élimination de X(s)X(s), on extrait la fonction de transfert entre la force de poussée et l'angle d'inclinaison :

Θ(s)U(s)=mlq ss3+b(I+ml2)qs2−(M+m)mglqs−bmglq\frac{\Theta(s)}{U(s)} = \frac{\dfrac{ml}{q}\,s}{s^3 + \dfrac{b(I + ml^2)}{q}s^2 - \dfrac{(M+m)mgl}{q}s - \dfrac{bmgl}{q}}

avec l'inertie effective couplée qq :

q=(M+m)(I+ml2)−(ml)2=0,0132q = (M + m)(I + ml^2) - (ml)^2 = 0{,}0132

Numériquement :

Θ(s)U(s)=4,54545 ss3+0,18182 s2−31,21364 s−4,45909\frac{\Theta(s)}{U(s)} = \frac{4{,}54545\,s}{s^3 + 0{,}18182\,s^2 - 31{,}21364\,s - 4{,}45909}

Les pôles en boucle ouverte se situent en +5,568+5{,}568, −5,607-5{,}607 et −0,143-0{,}143. Le pôle réel instable situé dans le demi-plan droit (+5,568+5{,}568) traduit l'instabilité exponentielle : toute perturbation amplifie l'écart selon e5,568te^{5{,}568t} (temps de doublement d'angle de seulement 0,12 s).

Modèle d'état complet

En incluant la position du chariot, le système linéarisé compte quatre variables d'état (position xx, vitesse x˙\dot{x}, angle θ\theta, vitesse angulaire θ˙\dot{\theta}) et une commande :

x˙=Ax+Bu,x=[xx˙θθ˙]T\dot{\mathbf{x}} = A\mathbf{x} + Bu,\qquad \mathbf{x} = \begin{bmatrix} x & \dot{x} & \theta & \dot{\theta} \end{bmatrix}^\mathsf{T}

A=[01000−(I+ml2)bqm2gl2q000010−mlbqmgl(M+m)q0],B=[0I+ml2q0mlq]A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & -\dfrac{(I+ml^2)b}{q} & \dfrac{m^2gl^2}{q} & 0 \\ 0 & 0 & 0 & 1 \\ 0 & -\dfrac{mlb}{q} & \dfrac{mgl(M+m)}{q} & 0 \end{bmatrix},\qquad B = \begin{bmatrix} 0 \\ \dfrac{I+ml^2}{q} \\ 0 \\ \dfrac{ml}{q} \end{bmatrix}

Commande par retour d'état (LQR)

Le bouclage des quatre variables d'état :

u=−K [x−xrefx˙θθ˙]Tu = -K\,\begin{bmatrix} x - x_\text{ref} & \dot{x} & \theta & \dot{\theta} \end{bmatrix}^\mathsf{T}

avec le gain optimal LQR (Q=diag⁡(5000,0,100,0)Q = \operatorname{diag}(5000, 0, 100, 0)) :

K=[−70,7−37,8105,620,9]K = \begin{bmatrix} -70{,}7 & -37{,}8 & 105{,}6 & 20{,}9 \end{bmatrix}

stabilise complètement le système. Soumis à une perturbation de force, le pendule ne dévie que de 5,4°5{,}4° avant de revenir à la verticale pendant que le chariot se recentre parfaitement.

Marge de retard et stabilité

Avec un retard pur de transport (filtrage, CAN, bus de terrain), la marge de phase de 61,3°61{,}3° à 26,1 rad/s26{,}1\ \text{rad/s} autorise un retard maximal admissible τmax≈41 ms\tau_\text{max} \approx 41\ \text{ms}. À 50 ms50\ \text{ms}, le pendule perd toute stabilité et tombe.

Voir aussi

  • StateSpace : Représentation d'état à 4 variables du procédé.
  • Gain : Matrice de retour d'état LQR KK.
  • PIDController : Correcteur classique sur l'angle seul.
  • Delay : Retard de transport matériel.
  • Saturation : Butée physique d'inclinaison à ±90°\pm 90°.
  • uPlotDisplay : Affichage multi-courbes en temps réel.

Simuler dans BlockWerk

Bac à sable interactif directement dans votre navigateur — aucune installation, moteur WebAssembly.

Simuler dans BlockWerk →