Contrôleur de moteur-fusée en C11, sans OS ni allocation dynamique, validé en Software-In-the-Loop.
Le problème
Un contrôleur de moteur-fusée pilote une séquence où l'erreur n'est pas permise : allumer, maintenir un régime nominal, s'arrêter proprement, et couper immédiatement si une grandeur sort de son domaine sûr. Le logiciel doit être déterministe (même entrée, même comportement, même temps d'exécution) et vérifiable avant de toucher le moindre matériel.
Allumage, puis nominal, puis arrêt. Depuis chacun de ces états, un dépassement de redline déclenche l'abort.
Ce que j'ai fait
Machine à états de séquence : allumage, nominal, arrêt, abort. Chaque transition est explicite ; aucun état n'est atteint « par accident ».
Régulation PID à fréquence fixe : la boucle de contrôle s'exécute à cadence constante, condition pour que les gains réglés restent valides.
Redlines avec arrêt d'urgence : des seuils surveillés à chaque cycle ; un dépassement déclenche la transition vers l'état abort, prioritaire sur tout le reste.
Télémétrie post-essai : les données de l'essai sont conservées pour être analysées après coup.
Validation Software-In-the-Loop : le code de contrôle tourne contre un modèle simulé du moteur, ce qui permet de rejouer des scénarios nominaux comme des pannes sans aucun risque.
Tests sur émulateur STM32 et tests unitaires pour valider le comportement du code tel qu'il tournera sur cible.
Choix de conception
Choix
Pourquoi
C11, sans OS
Maîtrise totale du flot d'exécution et du temps : pas d'ordonnanceur ni de couche cachée entre le code et le matériel.
Aucune allocation dynamique
Pas de malloc donc pas de fragmentation ni d'échec d'allocation en plein vol : toute la mémoire est connue à la compilation (règle 3 de « Power of Ten »).
Règles NASA/JPL « Power of Ten »
Un cadre éprouvé pour le code critique : flot de contrôle simple, boucles bornées, assertions, portée minimale des données. Le code reste analysable.
Machine à états explicite
Rend la séquence lisible, testable état par état, et garantit que l'abort est toujours atteignable.
SIL avant le matériel
Comme un simulateur de vol pour un pilote : on s'entraîne sur les pannes avant qu'elles n'arrivent pour de vrai.
Compétences démontrées
Programmation C embarquée contrainte, conception de logiciel critique et temps réel, automatique (PID), architecture en machine à états, stratégie de test (unitaires, SIL, émulation), application d'un standard de codage industriel.