Petit thread pour vous parler des causes de l'échec du démonstrateur européen Schiaparelli qui devait se poser en douceur sur Mars le 19 octobre 2016.
Au lieu de ça, il a creusé un nouveau cratère sur Mars et embarrassé pas mal de monde...
Schiaparelli est une pièce rapportée, un ajout low-cost à la mission TGO d'Exomars, dont le but est de faire valider un certain nombre de technologies et faire gagner à l'Europe un peu d'expérience sur les atterrissages martiens (chose que l'ESA n'a jamais fait).
C'est un démonstrateur, donc la charge utile scientifique est réduite à quelques kilos et la durée de vie à la surface ne devait pas dépasser 1 semaine, le temps que les batteries se vident.
Le but était vraiment de valider l'atterrissage... et ils n'ont pas été déçus.
C'est Thalès Alenia Space (Italie) qui est en charge de concevoir et développer Schiaparelli, et son partenaire GMV (Espagne) qui est en charge du logiciel de Guidage, Navigation et Control (GNC) et des tests de ce logiciel.
La phase de "Entry, Descent & Landing" (EDL) est assez standard et ressemble beaucoup à celles des Viking, Phoenix ou autre Insight.
Bouclier thermique -> parachute -> largage bouclier -> acquisition du sol par radar -> largage et chute libre -> rétropropulsion -> atterrissage.
Pour se repérer dans l'atmosphère martienne, la sonde a 2 moyens: d'abord une estimée globale de sa position depuis le largage de la sonde 3 jours plus tôt en propageant son accélération et sa rotation.
Puis une mesure par rapport au sol grâce au radar. C'est très standard.
Pour connaitre sa vitesse et sa position avant que le radar ne s'allume et détecte le sol, il faut une centrale inertielle. Cette centrale sert à connaitre son accélération au cours du temps, et sa vitesse angulaire.
En intégrant, ça donne la position et l'attitude de la sonde.
99% des satellites ont une centrale inertielle. L'attitude initiale est connue grâce à des viseurs d'étoiles avant le largage, puis l'évolution de l'attitude est donnée grâce à la partie gyromètre de la centrale inertielle.
La partie accéléromètre va moins nous intéresser ici.
Le gyromètre ne connait pas l'attitude de la sonde, il peut juste dire: "là tu tournes de xx degrés par seconde dans telle direction". Et en additionnant régulièrement les décalages mesurés par le gyromètre de la centrale, on arrive à garder le cap. Facile, fiable.
📸gyro laser
On sent bien que pour additionner proprement les mesures du gyro, il faut aller vite sinon chaque mesure sera un peu trop moyennée et on a un risque de dérive. Pour Schiaparelli, la centrale travaille à plusieurs centaines de mesures chaque seconde pour mesurer chaque mouvement.
Il s'agit d'une centrale inertielle miniature (MIMU) construite par Honeywell qui utilise une fibre optique circulaire avec un laser pour déterminer les vitesses de rotation sur chacun des 3 axes. Elle ne pèse ainsi "que" 5 kg et fait la taille d'une boite à chaussures.
Les centrales inertielles ne sont pas magiques et ne fonctionnent que dans une enveloppe précise: température, dynamique, etc. Ainsi, il était écrit noir sur blanc qu'elle ne pouvait pas mesurer des vitesses angulaires supérieures à 187 °/s précisément. Soit un tour en 2 sec.
Mais les ingénieurs ont bien vérifié qu'une telle dynamique, une telle rotation rapide ne devrait pas arriver (spoiler: c'est arrivé). Première erreur.
Puis ils ont quand même vérifié ce qui devait se passer si ça saturait quand même. C'est un bon réflex de vérifier l'improbable.
Ils ont vu que la centrale inertielle pouvait avoir un message (flag) de saturation pour indiquer que ça bouge trop. La centrale reste alors dans cet état pendant 15 millisecondes (c'est un paramètre réglable).
Bon, à priori ça pose pas trop de problèmes si ça arrive...
Mais l'ESA a pointé du doigt que l'équipe industrielle a négligé l'analyse de risque et surtout de ce que la sonde devait faire en case de mesure incohérente (un domaine appelé "FDIR") de la MIMU. L'équipe s'était concentrée sur une panne radar, et avait un peu zappé le reste.
Donc l'industriel a reçu sa centrale inertielle et l'a intégrée comme il faut dans la sonde... sauf que.
Oui, sauf qu'ils ont oublié de la tester, de vérifier sa qualif et de lui faire passer ce qu'on appelle des "test d'acceptance".
S'ils avaient fait ces tests, ils auraient remarqué que la MIMU ne restait pas figée pendant 15 millisecondes en case de saturation, mais pendant 1 seconde complète. 67 fois plus !
Deuxième (défaut d'analyse) et troisième (défaut de test) erreur pour l'instant. On n'a pas fini.
On va revenir au vol pour voir les autres erreurs commises.
La sonde fait donc parfaitement son boulot jusqu'au largage du parachute. Là, logiquement la sonde subit une secousse qui la fait pivoter rapidement en avant/arrière à l'ouverture du parachute.
Cette secousse dépasse pendant quelques millisecondes les 187 °/s. Donc l'IMU lève son flag de saturation pendant une seconde complète.
Ici entouré en rouge, la petite période qui dépasse la vitesse angulaire maximale (trait rouge).
L'équipe n'ayant jamais envisagé que la centrale inertielle tombe en carafe, le logiciel fait comme si de rien n'était. Pendant une seconde, la sonde va croire qu'elle tourne en permanence à -187°/s.
Après une seconde, elle se plante donc d'environ 180° dans son attitude estimée.
En gros, en se trompant de 180° la sonde croit qu'elle vole à l'envers, le radar vers le ciel et le parachute vers le sol.
L'analyse des cas dégradés ayant été incomplète, ce cas de figure n'a jamais été considéré, et encore moins testé. Dorénavant rien de bon ne va arriver.
Ce qui se passe en vrai, c'est que la sonde est pépère attachée à son parachute, dans le bon sens, et oscille gentiment. Après 40s sous parachute, le bouclier thermique est largué, tout est nominal... sauf dans le logiciel, qui imagine une sonde à l'envers.
Le largage du bouclier libère le champ de vue des 4 antennes radar sous la sonde qui vont fournir les vitesses et distance avec le terrain. Le logiciel de navigation attend ça avec impatience pour préparer la phase rétropropulsée.
Même si la sonde croit qu'elle est à l'envers (et trouve ça normal, aucun test ne vérifiait ça), elle reçoit des données radar complètement valides. Elle estime la position du sol en projetant la distance mesurée dans la direction de chaque antenne.
Et vu qu'elle croit que ses antennes regardent vers le ciel, le GNC croit que le sol est au-dessus de lui ! L'algorithme de navigation calcule ainsi une altitude négative, et est convaincu que la sonde est environ 4km... sous le sol. Vous sentez venir la chute (pun intended) ?
De façon surprenante ils avaient cette fois pensé à une erreur possible, et ils vérifient que la vitesse et l'altitude mesurées par le radar correspond grosso-modo à celle estimée par la centrale inertielle en propageant la trajectoire depuis le largage de la sonde de TGO.
Pendant 5 secondes, la sonde dit "beeeenn... non, il y a un problème". Rien ne colle.
Oui mais le logiciel GNC n'a rien prévu en cas d'incohérence répétée, alors qu'il "suffirait" de croire le radar et de ré-initialiser la centrale pour que tout rentre dans l'ordre.
Au bout de 5s d'échec et en l'absence de mode dégradé vers lequel se rabattre, la sonde dit: "bon ben tant pis si c'est pas cohérent. On n'a qu'à dire que je suis quelques km sous la surface".
Il s'avère que -4km d'altitude est plus bas que l'altitude minimale requise pour la phase suivante (tu m'étonnes...).
Donc la sonde se lance: elle largue son parachute, fait sa chute libre puis allume ses rétro-fusées. Elle est en fait beaucoup, beaucoup trop haute et rapide.
La condition pour couper les rétro-fusées est une énergie mécanique en dessous d'un certain seuil. Même si la vitesse est rapide, l'altitude négative pèse beaucoup dans l'équation qui indique de suite que le critère est rempli. La sonde est convaincue qu'elle va se poser.
Alors que la sonde est encore à 3,7km d'altitude, la sonde décide ainsi de couper ses moteurs. Elle ne vérifie pas sa vitesse, elle ne vérifie que son critère d'énergie mécanique, va faire 37s de chute libre et toucher le sol à 150 m/s en formant un beau cratère sur Mars.
Plein de fois, il aurait "suffit" de vérifier quelques éléments simples pour que le GNC sache qu'il faisait n'importe quoi.
L'équipe s'est faite étrillée pour le manque de validation et le manque de modes dégradés envisagés. L'expérience acquise est clairement utile.
Il y a un rapport officiel et les recommandations à ce sujet: sci.esa.int/documents/3343…
Tant que tous les cas tordus n'ont pas été envisagés et intégrés dans le logiciel de vol, soyez convaincus que ces cas arriveront tôt ou tard et tueront votre mission. Space is hard.
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.
