Comment SpaceX écrit le logiciel



Douglas Hurley et Bob Behnken dans la capsule Endeavour



SpaceX développe rapidement des projets dans plusieurs directions. Le premier étage de la fusée Falcon 9, après le lancement de la charge utile dans l'espace, revient sur Terre pour être réutilisé, comme pour les tests de prototypes de Starship. Le navire Crew Dragon livre l'équipage à l'ISS, la deuxième génération de camions Dragon est en préparation. Un essaim de satellites de communication Starlink produit plus d'une centaine de mégabits par seconde pour les vrais utilisateurs du test bêta ouvert.



Tous ces projets nécessitent un degré élevé d'automatisation, qui est de la responsabilité de l'équipe de développement logiciel. Les experts de SpaceX en parlent avec plaisir: c'est non seulement important pour attirer des candidats à des postes vacants, mais aussi intéressant pour tout le monde.



Complexité de l'espace



Le 14 décembre 1966, lors d'un essai de lancement sans pilote du Soyouz, le 7K-OK n ° 1 débarque sur la rampe de lancement: le «plus léger» de l'un des moteurs ne fonctionne pas. L'automatisation a arrêté la séquence de lancement avant que la fusée ne puisse se séparer de la surface de la rampe de lancement. Le personnel s'est approché de la fusée pour l'inspecter et évaluer la possibilité de la relancer. Le système de sauvetage d'urgence (SAS) de Soyouz s'est soudainement déclenché. Ses moteurs à poudre ont soigneusement transporté le véhicule de descente à une altitude de 700 mètres et l'ont donné à la puissance des parachutes, mais ont également enflammé le liquide inflammable déversé du système de contrôle thermique du compartiment des instruments, qui est resté sur Terre. Le sommet de la fusée s'est allumé. Comme le rappelle Chertok, le souvenir de la catastrophe de Nedelinforcé les gens à quitter la rampe de lancement en courant. Une personne est décédée.



L'élucidation des raisons de l'activation du SAS sur une fusée stationnaire a commencé avant même l'extinction de la rampe de lancement. Pendant le vol, la fusée compare en permanence les écarts du système de référence inertiel par rapport à la trajectoire calculée. Si la différence est trop importante, SAS est déclenché. La fusée posée sur la rampe de lancement continue de bouger: elle tourne avec la Terre, et les gyroscopes sont «liés» aux étoiles. Lors de la conception des systèmes d'urgence, la Terre était supposée stationnaire. En 27 minutes , environ 8 degrés ont « couru », et le signal d'allumage a été reçu sur 32 charges pyrotechniques SAS.



Ce «bogue» a été négligé même sans les complexités des ordinateurs modernes. Tous les systèmes critiques de tout engin spatial sont désormais contrôlés par l'électronique. Ce n'est même pas le " trait d'union le plus cher de l'histoire " de la sonde Mariner 1 de 1962: dans les systèmes modernes, l'espace pour les erreurs s'élève à des dizaines, des centaines de milliers de lignes de code. Toute défaillance logicielle notable dégrade la qualité du travail, voire entraîne la perte de l'appareil.



Il semble que la maturité de la direction et la culture même du développement aérospatial aient annulé toute erreur «enfantine». Mais ce n'est pas le cas. Jusqu'à présent, les roquettes explosent avec une erreur de conversion variable , les rovers se bloquent avec l'inversion de priorité et les sondes orbitalestomber en raison d'une valeur dans le mauvais système de mesure . Même Starliner, un concurrent direct de Crew Dragon, n'a pas réussi à atteindre l'ISS en raison de la qualité du logiciel.





SpaceX a publié cette vidéo avec un amour de sa culture d'essais et d'erreurs



. L'exemple de SpaceX est curieux dans ce contexte. Cette entreprise relativement jeune aux réalisations notables n'aurait pas vu le jour sans des logiciels que de petites équipes développent et testent rapidement.



Falcon sur x86



Les problèmes ne sont pas seulement causés par la fiabilité du code - l'espace est hostile même au matériel. Sur Terre, nous sommes protégés des radiations par le champ magnétique et l'atmosphère. Dans l'espace, un flux de particules à haute énergie peut facilement transformer une en zéro dans une cellule mémoire, ou même désactiver complètement des composants. La microélectronique spatiale nécessite au moins une certification spéciale et recourt parfois à des microcircuits spéciaux, par exemple des technologies de semi - conducteurs silicium sur saphir .



SpaceX ignore l'attitude délicate établie envers les équipements spatiaux. Depuis sa création , l' entreprise s'est démarquée par son amour des composants relativement bon marché. Par exemple, en 2005, des journalistes ont rapporté que les ordinateurs d'une fusée Falcon 1 communiquaient via un câble Ethernet ordinaire.



Comme les ingénieurs de SpaceX l'ont déclaré ( 1 , 2 ) lors de la conférence GDC 2015, sur la fusée Falcon 9, trois ordinateurs x86 double cœur sont installés à chaque étape. Dans chaque ordinateur, sur chacun des deux cœurs, un système d'exploitation avec logiciel de vol fonctionne indépendamment l'un de l'autre. La fusée contient également des microcontrôleurs PowerPC. Ils contrôlent divers actionneurs: moteurs, gouvernails en treillis, etc.



Tout cet équipement est intégré dans le système acteur-juge.



  • Presque tout est exprimé sous la forme d'une boucle de contrôle, ce qui est traditionnel pour TAU: plusieurs fois une seconde, des données sont reçues des capteurs, une décision est prise sur eux et les états passés du système, l'ordinateur envoie des signaux aux appareils.
  • . . , .
  • . , , . , .
  • Falcon 9 .


Cette architecture simplifie à la fois les tests sur Terre et fournit le niveau requis de résistance au rayonnement. Il n'y a pas besoin de microcircuits spéciaux coûteux, qui, en outre, peuvent avoir une architecture qui n'est familière qu'à un petit nombre de développeurs sur le marché du travail.



Les ordinateurs de contrôle sont testés sur le soi-disant banc de fusée de table, «une fusée sur une table». Les «cerveaux» du Falcon 9 sont disposés sur une surface plane et connectés lorsqu'ils travaillent dans une vraie fusée. Ensuite, les spécialistes lancent un vol simulé complet, surveillent le comportement du système, ses performances et les éventuelles pannes. Pendant la simulation, l'un des calculateurs de vol peut être désactivé afin de comprendre comment la fusée va réagir à cela.



En outre, l'ensemble du système de contrôle est capable de virtualiser un poste de travail, ce qui permet d'effectuer des tests automatisés de masse et une vérification de code pour le vol en une journée seulement.



Un système similaire à triple redondance est installé dans le vaisseau spatial Dragon, a-t-on dit lors de la GDC 2015. Dans les réponses de 2020, les employés ont vaguement laissé entendre que le vaisseau spatial Crew Dragon est contrôlé par un processeur quadricœur séparé, comparable en puissance de traitement à un smartphone il y a cinq ans.



En général, SpaceX ne rapporte pas les modèles de processeur exacts. Les contrôleurs PowerPC sont peut-être RAD750 résistants aux radiationséprouvés dans les rovers et les sondes, et les processeurs x86 sont des solutions industrielles intégrées avec une faible génération de chaleur et des performances modestes.



Mais l'espace n'est pas nécessaire. L'ISS lui-même est contrôlé par un processeur Intel 80386SX-20 avec un coprocesseur mathématique 80387. Même au moment du lancement de la station, c'était un produit d'il y a dix ans.



Dans l'espace dans un navigateur



Le 30 mai, SpaceX a lancé des humains en orbite pour la première fois. Enfin, il y avait une deuxième option pour livrer l'équipage à la Station spatiale internationale. Depuis 2011, la seule solution pour cela est le Soyouz russe.



Le public de l'émission en ligne a remarqué à quel point le navire Crew Dragon avait l'air plus grand que la capsule à trois places Soyouz. Avec un volume interne similaire, le vaisseau spatial SpaceX mesure 4 mètres de diamètre contre 2,2 mètres pour l'Union. SpaceX a initialement annoncé le vaisseau spatial comme un sept places, mais la NASA lancera quatre astronautes sur les Dragons habités.



En plus des différences physiques, la plus notable était la façon dont les gens faisaient fonctionner le navire. «Soyouz» ne s'écarte pas des traditions de l'ingénierie aérospatiale: l'équipage appuie sur les interrupteurs à bascule et les touches, et les panneaux de signalisation affichent des informations. Cru Dragon fait tout à sa manière. Pour un vaisseau SpaceX futuriste, l'écran tactile est l'élément principal.



Les écrans Crew Dragon sont alimentés par le moteur de navigateur Chromium, c'est-à-dire que les interfaces sont construites en HTML à l'aide de composants Web, JavaScript et CSS. Nous avons écrit notre propre bibliothèque réactive en interne. Le développement des interfaces suit la méthodologie Agile avec une barre haute pour la couverture avec des tests unitaires.





Capture d'écran du simulateur d'ancrage du navigateur.



Avant le premier lancement habité, SpaceX a publiésimulateur basé sur un navigateur de l'amarrage de Crew Dragon à l'ISS. Le simulateur a commencé comme un passe-temps pour deux des développeurs de la société. Puis ils ont décidé de le terminer et de le publier pour le grand public.



Le simulateur reste un simulateur: il n'a rien à voir avec le vrai code. Bien que les deux produits aient été écrits par la même équipe, ce sont deux projets complètement différents.



Tout cela ne signifie pas que le vaisseau spatial vole en JavaScript. Le chrome sur le navire n'est utilisé que comme outil de rendu pour les éléments de l'interface utilisateur. L'interface du logiciel de vol a toute la redondance nécessaire et se trouve à l'extérieur des écrans, disent les responsables de SpaceX. Le backend est écrit en C / C ++.



Un moteur de navigateur régulier dans un vaisseau spatial est une décision audacieuse. Dans les réponses, les employés de SpaceX ont assuréqu'indépendamment de la pile technologique, les normes de développement sont les mêmes, les principes d'écriture de logiciels fiables et efficaces ne changent pas, et pour comprendre les erreurs possibles, les tests se font dans diverses conditions. En cas de refus, il existe des notifications et des procédures appropriées. Enfin, des centaines d'heures de formation d'astronautes sur des simulateurs de vol sur Terre s'ajoutent aux tests.



Par mesure de sécurité, les touches physiques sont situées sous les écrans tactiles. Ils sont conçus pour des situations critiques comme un incendie dans le cockpit d'un navire. Il existe également des boutons physiques «démarrer» et «abandonner» pour la plupart des opérations qui peuvent être appelées à partir des écrans. La NASA a développé des exigences spécifiques pour les écrans eux-mêmes, et la solution de SpaceX y correspond .



Les employés de SpaceX ont également expliquécomment ils sont parvenus à une solution apparemment non conventionnelle pour l'industrie aérospatiale. Le projet a commencé comme un prototype pour présenter un modèle de conception pour la NASA. Ensuite, le prototype a été lancé avec succès sur un véritable matériel de vol. Les développeurs ont aimé les fonctionnalités modernes présentes dans le moteur de navigateur, et il y a suffisamment de développeurs pour cela sur le marché.





Le diagramme montre comment le code JavaScript est isolé des principaux systèmes de contrôle du télescope James Webb



En dehors de l'expérience SpaceX, il n'y a rien de scandaleux à choisir JavaScript pour le champ spatial. Dans le cas du télescope spatial James Webb, le code JS s'exécutera directement sur le véhicule. Il ne contrôlera pas directement, par exemple, les moteurs, il n'appellera que d'autres programmes.



Pourquoi n'y a-t-il pas de son dans l'espace?



Parce que la fusée vole sous Linux.



Le logiciel Falcon 9 est régulièrement mis à jour. Presque chaque lancement de fusée vole avec un code légèrement mis à jour. Bien que les mises à jour soient si fréquentes, la «base» de chaque lancement spécifique n'est pas spécifiquement adaptée. Ceci est fait par d'autres départements de SpaceX, qui apportent leurs propres ajustements aux configurations de vol: ils définissent les variables de vent le jour du lancement, modifient les limites de tolérance aux pannes, etc.



Crew Dragon est contrôlé par le système d'exploitation Linux avec le patch PREEMPT_RT pour un fonctionnement en temps réel. SpaceX n'utilise pasune distribution tierce standard. La société a assemblé son propre noyau et les utilitaires associés. Au cours des années de développement, le noyau n'a guère été modifié. Il n'y avait que des changements mineurs et quelques pilotes spécialisés pour fonctionner avec le matériel.



Parmi les projets open source utilisés sont le Das U-Boot système d'exploitation chargeur , le Buildroot système de construction de distribution , la bibliothèque standard C ++ et le MUSL C bibliothèque . Mais en général, SpaceX n'utilise pas tellement de logiciels écrits en dehors de l'entreprise et choisit des projets open source uniquement avec la meilleure qualité possible.



Chez SpaceX, les tests sont écrits en Python, testés dans LabVIEW, et ils volenten C ++. Lorsqu'ils écrivent en C ++, ils utilisent les techniques orientées objet du langage, bien qu'ils préfèrent que tout soit aussi simple que possible.



SpaceX au niveau du code offre la possibilité d'un fonctionnement normal avec la perte de moteurs de soutien ou de manœuvre avec algorithme de compensation. Les machines d'État contiennent toutes sortes d'urgences. Par exemple, la machine à états du navire «Dragon» a posé une transition autonome du plus près de la station pour se soucier s'il y a des pannes.



Les responsables de SpaceX disent qu'il n'y a pas d '"IA" dans Dragon (probablement des algorithmes de réseau neuronal implicites), bien qu'une sorte de vision industrielle soit utilisée pour la navigation. Les développeurs ont expliquécela n'exclut pas l'utilisation de programmes d'apprentissage automatique dans le futur.



Starlink



Le projet Internet par satellite Starlink, c'est encore plus d'ordinateurs. À chaque lancement, la fusée Falcon 9 lance 60 satellites en orbite, qui contiennent plus de 4 000 ordinateurs Linux. SpaceX a mis des dizaines de milliers de nœuds Linux et plus d'un millier de microcontrôleurs en orbite terrestre basse.





L'animation montre comment le panneau solaire du satellite est



déployé Il y a six mois, Starlink a généré environ 5 To de télémétrie par jour, et la constellation n'a fait que s'agrandir. Le nombre de satellites augmente et des travaux sont en cours pour réduire la quantité de données envoyées. Pour réduire la quantité de données stockées à bord et envoyées sur Terre, certains des problèmes sont diagnostiqués sur l'appareil lui-même.



Chacun des satellites Starlink est alimenté par un moteur à effet Hall. De ce fait, le satellite prend la position souhaitée dans l'essaim et évite la collision avec les débris spatiaux. Mais ces manœuvres doivent encore être effectuées correctement et le service de commandement de la plus grande constellation de satellites est minuscule.



Par conséquent, les programmeurs étaient perplexescomment éviter les collisions et contrôler automatiquement la position des satellites. Dans le système développé, on demande aux satellites dans quelle fenêtre entrer - et ils s'y rendent indépendamment. En outre, plusieurs fois par jour, les satellites reçoivent des données de la Terre sur les approches d'autres objets en orbite. Ensuite, les satellites calculent indépendamment les manœuvres nécessaires et s'éloignent des débris spatiaux.



La duplication des systèmes internes dans le cas du satellite Starlink n'est effectuée que jusqu'à une certaine limite. En raison du nombre total de compagnons, l'équipe ne remarquera pas la perte d'un soldat. Si un nœud échoue, l'utilisateur sur Terre se connectera à un autre satellite visible dans le ciel.



Lors du développement et des tests, chacun des satellites de la flottille Starlink n'est pas considéré comme un satellite séparé, mais comme un serveur dans le centre de données. Certaines des tâches sont essentielles: gestion, mises à jour logicielles, alimentation et sécurité. Des tests séparés sont écrits pour ces applications. De nombreuses autres fonctionnalités permettent une approche plus flexible, similaire au développement de services Web. Par conséquent, l'équipe déploie une version de test sur un petit nombre de satellites et compare leur comportement par rapport au reste de la constellation. De plus, si des problèmes surviennent, le logiciel est amélioré ou rétabli à la version précédente.



Ce processus de test est nécessaire pour améliorer rapidement le système. Les développeurs de SpaceX affirment que plusieurs fois, il était possible de trouver et de réparer des pannes impossibles à prévoir sur Terre.



Le satellite Starlink y fuit les données des utilisateurs et un piratage informatique menace d'être exploité. SpaceX a prévu cela et a ajouté un cryptage de bout en bout. En outre, chacun des composants - satellites, passerelles et terminaux utilisateur - n'exécute que le code signé, de sorte qu'un attaquant ne s'enregistre pas dans le système pendant une longue période.



Culture de développement



La plupart des ingénieurs logiciels de SpaceX travaillent à Seattle, Washington et Hawthorne, en Californie, et certains dans des bureaux au Texas.





SpaceX Software Development Team, 2013 L'



industrie aérospatiale traditionnelle est submergée à la fois par la vitesse de développement et la taille des divisions de SpaceX. Comme en 2019 ( podcast , marque 44:00), le directeur des logiciels de l'US Air Force, Nicholas Chillan, a déclaré que là où les agences gouvernementales auraient besoin d'au moins 2500 programmeurs, SpaceX en embauche 50. Parallèlement, l'équipe de développement écrit des logiciels pour neuf machines différentes et vérifie le code en 24 heures.



SpaceX tente d'attirer les développeurs de l'industrie du jeu. Lors de la GDC 2015, les représentants de l'entreprise ont déclaré que les titulaires d'un diplôme en informatique n'avaient pas de compétences en gestion de la mémoire. De manière inattendue, le rythme de travail et les méthodes d'optimisation des développeurs de jeux sont adaptés à l'espace. Comme le dit Elon Musk, comparé à un MMO, l'amarrage de deux navires est simple.



Dans le cadre de l'AMA de Reddit en 2013, les collaborateurs ont évoqué la structure des départements de développement logiciel.



  • 7 35 . : Falcon 9, Grasshopper Dragon. , , . .
  • SpaceX.  — - . , , , . , SpaceX .  — - : C#, MVC4, EF, SQL; Javascript, Knockout, Handlebars, LESS; REST API, «super sexy».
  • 2013 9 , . , . .
  • . .  — .


L'entreprise embauche constamment des développeurs et des ingénieurs, et tous les postes ne nécessitent pas une éducation spéciale. Il y a de nombreux accents différents dans les bureaux de SpaceX , y compris de l'espace de l'ex-URSS. L'entreprise peut embaucher non seulement le titulaire d'un passeport américain, bien qu'il existe des restrictions sur le régime de contrôle des exportations pour les technologies militaires . Pour être embauché, un étranger aura besoin d'un permis de séjour - une carte verte américaine. Il faudra plusieurs années pour le récupérer à partir de zéro. S'il y a déjà un "vert", alors la question est uniquement dans la capacité à montrer le niveau de qualification lors de l'entretien.



Le PDG et CTO de SpaceX, Elon Musk, est connu pour son aversion pour les semaines de travail de 40 heures. Il a déclaré à plusieurs reprisescela fonctionne de 80 à 120 heures par semaine. Quelle est la pop, la paroisse aussi. Une plainte commune à propos de Glassdoor à propos de SpaceX  est le mauvais équilibre entre vie et travail. Dans des témoignages anonymes, les employés et les stagiaires parlent d' épuisement professionnel fréquent et du quart de travail désormais courant de 12 heures .



All Articles