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
- —
Au-delà de 15°, le modèle simplifié n'est plus fiable : le vrai liquide déferlerait.
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.
Le mouvement du pendule obéit à une seule équation, tirée des énergies du système (méthode de Lagrange) :
θ 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 :
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.
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 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
- —
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
- —
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.
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.
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.
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.
| Pilote | Critère J | Ballottement restant après 3 oscillations | Déplacement maximal |
|---|
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é.
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.
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
- 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
- Dodge F. T. (2000). The New “Dynamic Behavior of Liquids in Moving Containers”. Southwest Research Institute, San Antonio.
- 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
- 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
- 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
- Char I., Schneider J. (2023). PID-Inspired Inductive Biases for Deep Reinforcement Learning in Partially Observable Control Tasks. NeurIPS 36. arXiv:2307.05891
- 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