Aller au contenu
Calmer l'eau qui ballotte PIR 2026

Calmer l'eau qui ballotte

Quand un réservoir à moitié plein bouge, le liquide se met à osciller et pousse sur les parois. Dans une fusée, ces oscillations perturbent le pilotage. Notre projet pose une question simple : un réseau de neurones peut-il calmer ce ballottement mieux qu'un régulateur PID classique, réglé avec le même soin ?

Dylan Perinetti et Bryan Hounnou
Projet d'initiation à la recherche, 2026

Pilote
Ballottement
—
Déplacement du réservoir
—
Accélération commandée
—
Fig. 1 Le modèle réduit du projet, simulé en direct au pas de 10 ms. Choisissez un pilote : le PID et le réseau sont les contrôleurs entraînés lors des essais pilotes du 2 octobre 2026.

01 Ballottement

Une vague enfermée dans une boîte

Portez une tasse de café en marchant : le liquide monte d'un côté, redescend, monte de l'autre. Comme une balançoire, il a un rythme qui lui est propre, sa fréquence propre. Poussé à ce rythme, il oscille de plus en plus fort : c'est la résonance.

Notre réservoir mesure 50 cm de long. Rempli à moitié, l'eau y fait environ 1,2 aller-retour par seconde. Et elle frotte très peu : sans rien faire, il faut près de 300 oscillations, soit 4 minutes, pour que l'amplitude soit divisée par 2,7.

Attrapez le réservoir et secouez-le de gauche à droite

Fréquence propre f1
—
Période
—
Eau qui ballotte
—
Ballottement
—
Fig. 2 Secouez au rythme du métronome pour faire entrer l'eau en résonance. Plus le réservoir est rempli, plus le rythme propre est rapide, mais il varie peu : de 1,01 Hz à 1,25 Hz entre un quart plein et plein.

Pourquoi les fusées s'en soucient

Une fusée emporte des tonnes d'ergols liquides. Quand ils ballottent, ils poussent sur les parois des réservoirs et dévient la fusée de son orientation. Le système de pilotage doit corriger, ce qui consomme du carburant. C'est critique pour les étages supérieurs réallumables, comme celui d'Ariane 6, qui passent de longues phases en orbite avec des réservoirs partiellement pleins.

Deux parades existent. Des cloisons dans le réservoir freinent le liquide : efficace, mais lourd, et chaque kilo coûte cher dans le spatial. Ou bien on déplace le réservoir au bon moment pour contrer l'oscillation, comme on calme une tasse d'un petit mouvement contraire : c'est le contrôle actif, notre sujet. En 2019, une équipe européenne a ainsi éteint le ballottement d'un vrai réservoir d'eau de 1,2 m en deux oscillations1.

02 Pendule

Un pendule caché dans l'eau

Pour régler et entraîner des contrôleurs, il faut des milliers d'essais : impossible avec un calcul complet de mécanique des fluides. On utilise donc un modèle réduit. Quand l'eau ballotte, une partie m1 du liquide se comporte comme une masse au bout d'un pendule de longueur l1 ; le reste suit le réservoir comme un bloc2.

Fig. 3 Le pendule bat au même rythme que l'eau et pousse le réservoir avec la même force. Remplissez le réservoir : le pendule raccourcit et la part de l'eau qui ballotte diminue. Plein, l'essentiel de l'eau bouge en bloc.

Le mouvement du pendule obéit à une seule équation, tirée des énergies du système (méthode de Lagrange) :

l1θ¨+2ζω1l1θ˙+gsinθ=−acosθ

θ est l'angle du pendule, a l'accélération horizontale imposée au réservoir, g la pesanteur et ζ l'amortissement, minuscule. Le signe moins dit quelque chose de simple : accélérer vers l'avant fait partir la masse vers l'arrière, comme un passager plaqué contre son siège. La fréquence propre suit la théorie des vagues :

ω12=gktanh(kh),k=πL,l1=gω12

Le liquide se partage ainsi entre une masse fixe, qui suit le réservoir, et une masse qui ballotte. Selon le remplissage, le premier mode emporte de 72 % du liquide (h/L = 0,2) à 26 % (h/L = 1). Depuis la séance du 16 octobre 2026, le modèle retenu par le projet compte une masse fixe et deux pendules, un pour chacun des deux premiers modes qu'une secousse horizontale excite : le second ne porte que 4 à 6 % de la masse du premier, mais il n'est presque pas amorti (voir les limites ci-dessous). Reste à décider s'il servira dès le réglage des contrôleurs ou seulement à leur évaluation ; les simulations de cette page n'utilisent encore qu'un pendule.

Les limites du modèle

Le pendule ne représente que le premier mode, celui où l'eau monte contre une paroi pendant qu'elle descend contre l'autre. Le mode suivant qu'excite une secousse horizontale oscille de 1,7 à 2,3 fois plus vite selon le remplissage (1,8 fois à h/L = 0,5), vers 2,1 à 2,2 Hz, et n'est presque pas amorti : un contrôleur qui envoie de l'énergie à ce rythme l'exciterait sans le voir. C'est la raison du second pendule. Le modèle n'est fiable que pour des angles inférieurs à 15° environ, soit 5,3 cm de montée de l'eau à la paroi. Et aux grandes amplitudes, sous h/L = 0,34, la vraie eau accélère quand le pendule, lui, ralentit. C'est pourquoi le modèle doit être confronté à une expérience, plus bas, et ses résultats lus dans son domaine de validité.

Quand ce modèle simple suffit

Chaque hypothèse du modèle se juge avec un nombre sans dimension, calculé pour notre réservoir.

  • Tension de surface négligeable. Le nombre de Bond, qui compare la pesanteur à la capillarité, vaut environ 34 000 à l'échelle du réservoir. La capillarité ne déplace la fréquence propre que de 0,015 %. Elle peut en revanche jouer sur l'amortissement.
  • Forçage faible. L'accélération du réservoir reste au plus de l'ordre du dixième de la pesanteur (a/g ≤ 0,102 à la saturation de l'actionneur, un nombre de Froude), et le réservoir va bien moins vite que les vagues : son mouvement ne provoque pas directement de ressaut.
  • Amortissement visqueux faible. La viscosité n'agit que dans des couches d'environ un demi-millimètre le long des parois : d'après la formule théorique, sans parois avant et arrière, le ζ du premier mode vaut de 0,0005 à 0,0013 selon le remplissage. Cette valeur reste incertaine, car la formule est une borne basse : il faudra caler ζ sur une expérience (voir plus bas).
  • Réponse linéaire loin de la résonance, et en boucle fermée, quand le contrôleur amortit. Près de la résonance, sans contrôle, la fréquence glisse avec l'amplitude et la réponse peut devenir non linéaire.
  • Profondeur suffisante pour h/L ≥ 0,25 environ : au-dessus, un ou deux modes suffisent à décrire le liquide. À 0,2, le modèle est extrapolé.

03 Boucle

Mesurer, décider, agir, cent fois par seconde

Un régulateur ne voit pas l'eau. Toutes les 10 ms, il lit ses mesures et choisit l'accélération à donner au réservoir. C'est une boucle fermée, comme un conducteur qui regarde la route et corrige sans cesse.

  • Ce qu'il commande : l'accélération horizontale du réservoir.
  • Ce qu'il mesure : l'effort horizontal que le liquide exerce sur le réservoir, dont on retire la part due au liquide qui suit le réservoir en bloc. Lui donner plutôt l'effort total, plus proche de ce que lit un vrai capteur, reste à trancher. Il connaît aussi la position et la vitesse du réservoir, calculées en intégrant l'accélération appliquée.
  • Ce qu'il ne mesure pas : les angles des pendules. Ils n'existent que dans le modèle, pas dans un vrai liquide.

Rien n'est parfait dans cette boucle, et c'est voulu : la mesure est bruitée et arrive avec un pas de retard, l'actionneur ne peut pas dépasser 1 m/s² et met 16 ms à répondre, et le réservoir ne doit pas s'éloigner de plus de 10 cm. Ces imperfections sont codées dans le simulateur, identiques pour tous les contrôleurs.

Vitesse
Fig. 4 La boucle de commande en fonctionnement, avec le PID réglé. Au ralenti, on voit chaque pas de 10 ms : la mesure brute, bruitée, puis l'erreur, son intégrale et sa dérivée, enfin la commande, écrêtée puis lissée par l'actionneur.

Où est le rappel ?

C'est une question qui s'est posée en séance. Il y a deux rappels, et ils ne sont pas au même endroit. Celui du liquide est physique : c'est la pesanteur, présente dans chaque pendule (le terme g sin θ de son équation), qui ramène la surface à l'horizontale. Celui du réservoir n'existe pas dans la physique de notre modèle : rien ne le ramène à sa place (il faudrait un support élastique). Sa position est un double intégrateur : c'est l'accélération intégrée deux fois, et le moindre écart de vitesse la fait dériver.

Le rappel du réservoir est donc écrit dans la loi de commande. En négligeant l'actionneur, sa position obéit à :

ΔX¨+KvΔX˙+KxΔX=uF

ΔX est l'écart à la position du réservoir au début du contrôle et uF la commande que le PID calcule à partir de l'effort. Kx joue le rôle d'un ressort et Kv celui d'un amortisseur, mais tous deux sont virtuels : ce ne sont que des termes du contrôleur. On les retrouve, exprimés sans dimension, dans les gains « Rappel » et « Freinage » de la figure 5. Sans eux, la position dérive. Et un contrôleur qui ne lirait que l'effort ne pourrait pas la ramener : l'effort dépend de l'accélération du réservoir, pas de sa position ni de sa vitesse. Il faut donc les obtenir à part : le simulateur les calcule en intégrant l'accélération appliquée depuis un repos connu ; sur un banc, un codeur les mesurerait.

04 PID

Le PID, réglé à la main puis par la machine

Le PID est le régulateur le plus répandu dans l'industrie. Il additionne trois réactions à l'écart e entre ce qu'on veut (pas de ballottement) et ce qu'on mesure : une réaction proportionnelle à l'écart actuel (P), une autre à l'accumulation des écarts passés (I), une dernière à leur vitesse de variation (D).

Pour freiner l'oscillation, il faut pousser le réservoir en phase avec la vitesse du liquide. Au rythme du ballottement, l'accumulation d'un écart qui oscille et sa vitesse de variation sont toutes deux décalées d'environ un quart d'oscillation, l'une en retard, l'autre en avance : I et D peuvent donc chacun freiner, selon le signe de leur gain. Dans le réglage pilote du projet, c'est surtout I qui s'en charge, avec un gain d'environ 0,4 ; celui de D reste petit, environ 0,1. Ces gains sont sans dimension : ce sont ceux que charge le bouton « Réglage du projet » de la figure 5. Pourquoi l'optimisation préfère I reste à analyser.

Un PID qui ne regarde que l'eau fait dériver le réservoir : 45 cm dans un premier essai, pour un réservoir de 50 cm. On ajoute donc le ressort et l'amortisseur virtuels vus plus haut, qui le ramènent là où il était au début du contrôle. Restent cinq gains à régler. Pour les juger, un critère J additionne, sur six oscillations, le carré du ballottement, du déplacement, de la vitesse et de l'accélération du réservoir : plus J est bas, mieux l'eau est calmée sans trop secouer le réservoir.

Critère J sur 32 essais
—
Réglage du projet
—
Sans contrôle
—
Évaluations
—
Fig. 5 Bougez les gains et regardez le critère : il est calculé à chaque réglage sur 32 scénarios de validation du projet (remplissages, amplitudes et bruits différents). « Laisser la machine régler » lance en direct l'algorithme de Nelder-Mead utilisé dans le projet : un petit groupe de réglages d'essai qui se déforme et roule vers le minimum. Il peut battre de peu le réglage du projet sur ces 32 essais, car il ne voit qu'eux ; le réglage du projet a été choisi sur 1 024 scénarios. Coller à ses exemples au détriment du reste, c'est le surapprentissage.

Le réglage est une recherche de point bas. Cette carte montre le critère J pour toutes les combinaisons des gains P et D, les trois autres étant fixés à leur valeur optimisée. Les zones sombres sont les bons réglages.

Cliquez sur la carte pour lâcher une bille : elle suit la pente, comme la descente de gradient qui sert aussi à entraîner les réseaux de neurones.

Bille
—
Fig. 6 Carte calculée avec le simulateur du projet, sur 32 scénarios de validation, à partir de 1 681 réglages.
Et le LQR ?

Le régulateur linéaire quadratique (LQR) est la réponse classique de l'automatique. On écrit le modèle linéaire sous forme d'état : angles et vitesses des pendules, position et vitesse du réservoir. On choisit ce qu'on pénalise, comme dans notre critère J. Un calcul, l'équation de Riccati, donne alors les gains optimaux d'un retour sur tout l'état, sans tâtonner. Un seul jeu de gains traite à la fois le ballottement et la position du réservoir.

Mais il lui faut un modèle d'état, qui dépend ici du remplissage. Il lui faut aussi tout l'état, or les angles des pendules ne se mesurent pas : ils n'existent que dans le modèle. Il faut donc les estimer avec un observateur, par exemple un filtre de Kalman, et l'ensemble n'a plus aucune marge de robustesse garantie, alors que le LQR en temps continu, avec tout l'état mesuré, en garantit. Enfin, il ignore la saturation de l'actionneur et la course limitée.

Dans le projet, le LQR sert de référence. Il est calculé avec l'état vrai du simulateur, sans observateur : c'est une référence idéale, pas un contrôleur qu'on pourrait installer. Et il n'est optimal que sur un horizon infini, sans contrainte active. Notre critère ne porte que sur six oscillations : la vraie borne est l'optimum sur cet horizon fini, obtenu par un autre calcul de Riccati. En régime linéaire, un contrôleur qui passerait dessous trahirait une erreur. Hors de ce cadre (saturation, grandes amplitudes, erreurs de modèle), faire mieux que le LQR est légitime : c'est là qu'un réseau pourrait gagner.

05 Réseau

Un réseau de neurones aux commandes

Un réseau de neurones est une fonction à régler : il reçoit des nombres, en calcule d'autres, et ses paramètres s'ajustent par apprentissage. Chaque neurone fait une somme pondérée de ses entrées puis la « plie » avec une fonction simple, la tangente hyperbolique. Nos réseaux sont petits : deux couches de 16 ou 32 neurones, de 389 à 1 377 paramètres.

Le plus général, C4, reçoit les mêmes informations que le PID (l'écart, son intégrale, sa dérivée, la position et la vitesse du réservoir), plus le remplissage, l'amplitude estimée et sa dernière commande. Il sort directement l'accélération. Le voici en fonctionnement : chaque neurone s'allume selon sa valeur.

Fig. 7 Le réseau C4 entraîné (1 377 paramètres), en direct. Les traits relient les neurones : plus un poids est fort et plus le neurone d'où il part est actif, plus le trait est visible ; orangé pour un poids positif, bleu pour un poids négatif. Les neurones se colorent de même selon leur valeur.

L'autre lecture du « réseau type PID », C3, garde la formule du PID mais laisse le réseau en choisir les cinq gains à chaque instant, selon le remplissage, l'amplitude estimée, la position du réservoir et la dernière commande. On peut donc regarder ce qu'il décide : il durcit ou relâche le PID en cours de route.

Fig. 8 Les gains choisis par C3 au fil de l'essai (barres) et ceux du PID fixe le mieux réglé (traits). Ils sont exprimés en unités réduites, sans dimension.

Apprendre à travers le simulateur

Apprendre, c'est régler les paramètres pour rendre J le plus petit possible, exactement comme pour les gains du PID, mais avec des centaines de réglages au lieu de cinq. L'astuce du projet : le simulateur est lui-même écrit avec PyTorch, une bibliothèque qui sait dériver automatiquement. Le réseau pilote des centaines de réservoirs simulés pendant six oscillations, on calcule J, puis on remonte le calcul à l'envers, à travers toute la simulation, pour savoir dans quel sens modifier chaque paramètre. C'est la commande prédictive différentiable3 : elle demande beaucoup moins d'essais que l'apprentissage par renforcement, qui apprend par essais et erreurs sans connaître les équations.

Réseau
Fig. 9 Les vrais entraînements du 2 octobre 2026 : le critère J sur les 1 024 scénarios de validation, au fil des épisodes simulés. Trois jeux de réglages d'apprentissage (A, B, C) par réseau. Le PID réglé sert de repère.

06 Duel

Le duel, à armes égales

Un réseau qui bat un PID mal réglé ne prouve rien. Toute la méthode est construite pour que la comparaison soit loyale : même simulateur, mêmes imperfections, même information (si un réseau connaît le remplissage, un PID le connaît aussi), même critère, mêmes scénarios et même budget de calcul. Les essais finaux se feront sur un jeu de 1 720 scénarios jamais vus, scellé par une empreinte numérique avant que quiconque l'ouvre.

À vous de choisir les conditions. Les quatre réservoirs reçoivent exactement la même vague et le même bruit de mesure.

Scores de l'essai, sur six oscillations
PiloteCritère JBallottement restant après 3 oscillationsDéplacement maximal
Fig. 10 Un seul essai, à titre d'illustration. Les conclusions du projet reposent sur des milliers de scénarios, pas sur un tirage.

07 Résultats

Ce que disent les premiers essais

Sur le modèle réduit, un PID bien réglé divise le critère J par huit par rapport au réservoir libre : le ballottement passe sous 5 % de son amplitude en un peu plus d'une oscillation, au lieu de jamais dans la fenêtre observée. Son amortissement équivalent, environ 0,34, dépasse celui obtenu par l'expérience européenne de 2019 sur un vrai réservoir (0,11 à 0,12) ; mais notre modèle est idéalisé.

Fig. 11 J moyen sur les 1 024 scénarios de validation, essais pilotes du 2 octobre 2026 (une seule graine par réseau). À gauche, toute l'échelle ; à droite, le détail entre contrôleurs.

Le réseau C3, qui règle le PID en direct, descend 3,2 % sous le PID réglé. C'est encourageant, mais rien n'est démontré :

  • chaque réseau n'a été entraîné qu'une fois, avec un seul tirage du hasard ; le protocole en prévoit cinq et retient le résultat médian ;
  • le jeu de validation a aussi servi à arrêter les entraînements, il avantage donc les réseaux ;
  • dans ces essais, l'actionneur ne sature jamais, alors que l'avantage du réseau est attendu justement quand il sature ;
  • connaître le seul remplissage ne rapporte que 1,8 % (C2a) : la fréquence propre varie trop peu pour que cela compte ;
  • le modèle réduit n'a pas encore été confronté à l'expérience publiée qui doit le valider et caler son amortissement (plus bas).

Prochaines étapes, d'ici la soutenance du 27 novembre 2026 : valider les dix décisions de méthode, confronter le modèle réduit à cette expérience, finir les réglages et les entraînements, geler les contrôleurs, puis passer l'examen final sur le jeu scellé.

08 Vrai liquide

Et le vrai liquide ?

Le modèle réduit ne connaît que les premiers modes du liquide et ignore les vagues qui déferlent. Il faut donc le confronter au vrai liquide. Le projet ne calculera pas l'écoulement complet : cette simulation a été écartée le 16 octobre 2026, faute de temps.

Avant tout contrôle, il faut montrer que le modèle dit vrai sans contrôle. Pour cela, notre seul lien avec le vrai liquide sera une expérience publiée : celle de Bäuerlein et Avila, dans un réservoir de même longueur que le nôtre, 50 cm, rempli à h/L = 0,8 et secoué de 0,5 à 2 Hz4. On y comparera la fréquence propre, la réponse en fréquence et l'amortissement, qu'ils mesurent 1,5 fois plus fort que la formule théorique, parois avant et arrière comprises : de quoi valider le modèle réduit et caler son amortissement. Caler des pendules sur une référence plus complète se pratique déjà : Toth et al. identifient une masse fixe et des pendules sur un modèle du liquide aux éléments finis, pour qu'un robot transporte sans ballottement un verre à Martini5.

Les contrôleurs, eux, ne seront pas confrontés au vrai liquide : ils seront comparés dans le modèle réduit seulement, sur le jeu scellé. Leur classement vaudra donc là où ce modèle est fiable, pour des vagues modérées qui ne déferlent pas. Les essayer dans un calcul complet du liquide reste une perspective, pour un travail futur.

09 Perspectives

Si le temps le permet : passer en 3D

Le projet se limite volontairement à un réservoir rectangulaire secoué dans une seule direction. Un vrai réservoir de lanceur est un cylindre, secoué dans toutes les directions, et son liquide peut se mettre à tourner : c'est le ballottement tournant, invisible dans un modèle plan.

Comme axe d'amélioration, nous avons préparé la suite : le même pendule équivalent, devenu sphérique, dans un réservoir cylindrique, avec le PID du projet appliqué sur les deux axes. On peut le secouer, faire tourner la vague et la regarder se calmer, en 3D.

Aller à la page Réservoir 3D : le réservoir cylindrique d'un lanceur, secoué dans deux directions.

10 À propos

L'équipe et les sources

Projet d'initiation à la recherche mené par Dylan Perinetti et Bryan Hounnou, d'octobre à novembre 2026. Toutes les simulations de cette page tournent dans votre navigateur avec un portage en JavaScript du simulateur du projet : sur les 1 024 scénarios de validation, il donne les mêmes critères que le code PyTorch, à 10−15 près. Les contrôleurs sont ceux des essais pilotes ; les résultats définitifs remplaceront ces chiffres.

Où en est le projet : cette page a été mise à jour après la quatrième séance, le 16 octobre 2026 (modèle à deux pendules, rappel du réservoir, cas test sans contrôle, simulation complète du liquide écartée). Prochaine échéance : une version quasi finale du rapport intermédiaire, le 23 octobre.

Les auteurs

Co-auteurs du projet.

Portrait de Dylan Perinetti

Dylan Perinetti

Élève ingénieur en aéronautique

Entreprise (alternance)
Air France, apprenti ingénieur
Association
AD ASTRA, président

LinkedIn de Dylan Perinetti

Portrait de Bryan Hounnou

Bryan Hounnou

Élève ingénieur en aéronautique

Entreprise (alternance)
Safran, apprenti ingénieur
Association
AD ASTRA, trésorier

LinkedIn de Bryan Hounnou

L'agent IA personnel de Dylan

Le site a été conçu et programmé par l'agent IA personnel de Dylan, qui s'appuie sur plusieurs modèles d'IA. Les chiffres, les équations et les choix scientifiques viennent tous du dossier du projet. Voici la part de l'agent et celle de l'équipe.

Ce que l'agent a fait

  • La programmation du site et des simulations, portées en JavaScript depuis le code du projet.
  • La vérification croisée des sources et des formules, par des relectures automatiques.
  • La mise en forme des documents de séance.

Ce que l'équipe a fait et validé

  • Les choix scientifiques.
  • Les réglages.
  • La rédaction finale.
  • La validation de chaque contenu publié ici.

Les sources

  1. Konopka M., De Rose F., Strauch H., Jetzschmann C., Darkow N., Gerstmann J. (2019). Active slosh control and damping – Simulation and experiment. Acta Astronautica, 158, 89-102. doi:10.1016/j.actaastro.2018.06.055
  2. Dodge F. T. (2000). The New “Dynamic Behavior of Liquids in Moving Containers”. Southwest Research Institute, San Antonio.
  3. Drgoňa J., Kiš K., Tuor A., Vrabie D., Klaučo M. (2022). Differentiable predictive control: Deep learning alternative to explicit model predictive control for unknown nonlinear systems. Journal of Process Control, 116, 80-92. doi:10.1016/j.jprocont.2022.06.001
  4. Bäuerlein B., Avila K. (2021). Phase lag predicts nonlinear response maxima in liquid-sloshing experiments. Journal of Fluid Mechanics, 925, A22. doi:10.1017/jfm.2021.576
  5. Toth F., Scharner A., Schirrer A., Hametner C., Jakubek S. (2024). Rapid sloshing-free transport of liquids in arbitrarily shaped containers. Acta Mechanica, 235(12), 7039-7058. doi:10.1007/s00707-024-04068-w
  6. Char I., Schneider J. (2023). PID-Inspired Inductive Biases for Deep Reinforcement Learning in Partially Observable Control Tasks. NeurIPS 36. arXiv:2307.05891
  7. Chen Y., Xue M.-A. (2018). Numerical Simulation of Liquid Sloshing with Different Filling Levels Using OpenFOAM and Experimental Validation. Water, 10(12), 1752. doi:10.3390/w10121752

Ces références en citent d'autres, qui en citent encore. Aller à la page Biblio