Wie SpaceX Software schreibt



Douglas Hurley und Bob Behnken in der Endeavour-Kapsel



SpaceX entwickeln schnell Projekte in verschiedene Richtungen. Die erste Stufe der Falcon 9-Rakete kehrt nach dem Start der Nutzlast in den Weltraum zur Wiederverwendung auf die Erde zurück, ähnlich wie beim Testen auf Starship-Prototypen. Der Crew Dragon liefert die Crew an die ISS, die zweite Generation von Dragon Trucks wird vorbereitet. Ein Schwarm von Starlink-Kommunikationssatelliten produziert für echte Benutzer des Open Beta-Tests über hundert Megabit pro Sekunde.



Alle diese Projekte erfordern einen hohen Automatisierungsgrad, für den das Softwareentwicklungsteam verantwortlich ist. SpaceX-Experten sprechen gerne darüber: Es ist nicht nur wichtig, Bewerber für offene Stellen zu gewinnen, sondern auch für alle anderen interessant.



Komplexität des Raumes



Am 14. Dezember 1966 landete bei einem unbemannten Teststart der Sojus das Schiff 7K-OK Nr. 1 auf der Startrampe: Das "Feuerzeug" an einem der Motoren funktionierte nicht. Die Automatisierung stoppte die Startsequenz, bevor sich die Rakete von der Oberfläche der Startrampe lösen konnte. Das Personal näherte sich der Rakete, um sie zu inspizieren und die Möglichkeit eines Neustarts zu prüfen. Sojus 'Notrettungssystem (SAS) ging plötzlich aus. Seine Pulvermotoren beförderten das Abstiegsfahrzeug vorsichtig auf eine Höhe von 700 Metern und setzten es unter die Kraft von Fallschirmen, entzündeten aber auch die verschüttete brennbare Flüssigkeit des Wärmesteuerungssystems des Instrumentenraums, die auf der Erde verblieb. Die Spitze der Rakete leuchtete auf. Wie Chertok erinnert , die Erinnerung an die Nedelin-Katastrophezwang die Leute, die Startrampe bei einem Lauf zu verlassen. Eine Person starb.



Die Aufklärung der Gründe für die Aktivierung der SAS auf einer stationären Rakete begann bereits vor dem Löschen der Startrampe. Während des Fluges vergleicht die Rakete ständig die Abweichungen des Trägheitsreferenzsystems von der berechneten Flugbahn. Wenn der Unterschied zu groß ist, wird SAS ausgelöst. Die auf der Startrampe stehende Rakete bewegt sich immer noch: Sie dreht sich mit der Erde, und die Gyroskope sind an die Sterne "gebunden". Bei der Planung von Notfallsystemen wurde angenommen, dass die Erde stationär ist. In 27 Minuten " liefen " ungefähr 8 Grad und ein Zündsignal wurde auf 32 pyrotechnischen SAS-Ladungen empfangen.



Dieser "Fehler" wurde auch ohne die Komplexität moderner Computer übersehen. Alle kritischen Systeme eines Raumfahrzeugs werden jetzt von der Elektronik gesteuert. Dies ist nicht einmal der " teuerste Bindestrich in der Geschichte " der Mariner 1-Sonde von 1962: In modernen Systemen beträgt der Platz für Fehler Zehntausende von Codezeilen. Jeder erkennbare Softwarefehler beeinträchtigt die Arbeitsqualität oder führt sogar zum Verlust des Geräts.



Es scheint, dass die Reife der Richtung und die Kultur der Luft- und Raumfahrtentwicklung alle "kindischen" Fehler zunichte gemacht haben. Aber das ist nicht so. Bisher explodieren Raketen mit variablem Konvertierungsfehler , Rover hängen mit Prioritätsinversion und Orbitalsondenfallen aufgrund eines Wertes im falschen Messsystem . Selbst Starliner, ein direkter Konkurrent von Crew Dragon, schaffte es aufgrund der Qualität der Software nicht zur ISS.





SpaceX hat dieses Video mit Liebe zu seiner Kultur des Versuchs und Irrtums gepostet



. Das Beispiel von SpaceX ist vor diesem Hintergrund neugierig. Dieses relativ junge Unternehmen mit bemerkenswerten Leistungen wäre ohne Software, die kleine Teams schnell entwickeln und testen, nicht möglich gewesen.



Falcon auf x86



Es ist nicht nur die Zuverlässigkeit des Codes, die Probleme verursacht - der Speicherplatz ist selbst für Hardware feindlich. Auf der Erde sind wir durch das Magnetfeld und die Atmosphäre vor Strahlung geschützt. Im Weltraum wird ein Strom energiereicher Partikel in einer Speicherzelle leicht eins zu null machen oder sogar Komponenten ganz deaktivieren. Die Weltraummikroelektronik erfordert zumindest eine spezielle Zertifizierung und greift manchmal auf spezielle Mikroschaltungen zurück, beispielsweise Silizium-auf-Saphir- Halbleitertechnologien .



SpaceX ignoriert die etablierte zimperliche Haltung gegenüber Raumfahrtgeräten. Seit seiner Gründung zeichnet sich das Unternehmen durch seine Liebe zu relativ billigen Komponenten aus. Beispielsweise berichteten Journalisten im Jahr 2005, dass Computer in einer Falcon 1-Rakete über ein normales Ethernet-Kabel kommunizierten.



Wie die SpaceX-Ingenieure auf der GDC 2015-Konferenz ( 1 , 2 ) sagten , verfügt die Falcon 9-Rakete in jeder Phase über drei x86-Dual-Core-Computer. In jedem Computer läuft auf jedem der beiden Kerne ein Betriebssystem mit Flugsoftware unabhängig voneinander. Die Rakete enthält auch PowerPC-Mikrocontroller. Sie steuern verschiedene Aktuatoren: Motoren, Gitterruder und so weiter.



All diese Geräte sind in das Schauspieler-Richter-System integriert.



  • Fast alles wird in Form eines Regelkreises ausgedrückt, der für TAU traditionell ist: Oft werden zweite Sekunden Daten von den Sensoren empfangen, eine Entscheidung über sie getroffen und die vergangenen Zustände des Systems, der Computer gibt Signale an die Geräte aus.
  • . . , .
  • . , , . , .
  • Falcon 9 .


Diese Architektur vereinfacht sowohl das Testen auf der Erde als auch den erforderlichen Grad an Strahlungsbeständigkeit. Es besteht keine Notwendigkeit für spezielle teure Mikroschaltungen, die darüber hinaus eine Architektur aufweisen können, die nur einer kleinen Anzahl von Entwicklern auf dem Arbeitsmarkt vertraut ist.



Steuercomputer werden auf der sogenannten Tischraketenbank "einer Rakete auf einem Tisch" getestet. Falcon 9 "Gehirne" werden auf einer ebenen Fläche ausgelegt und verbunden, während sie in einer echten Rakete arbeiten. Anschließend starten die Spezialisten einen vollständigen simulierten Flug, überwachen das Verhalten des Systems, seine Leistung und mögliche Fehler. Während der Simulation kann einer der Flugcomputer ausgeschaltet werden, um zu verstehen, wie die Rakete darauf reagiert.



Darüber hinaus kann das gesamte Steuerungssystem eine Workstation virtualisieren, wodurch automatisierte Massentests und Codeüberprüfungen für den Flug in nur einem Tag möglich sind.



Ein ähnliches dreifach redundantes System ist in der Dragon-Raumsonde installiert, hieß es auf der GDC 2015. In den Antworten von 2020 deuteten die Mitarbeiter vage an, dass die Crew Dragon-Raumsonde von einem separaten Quad-Core-Prozessor gesteuert wird, dessen Rechenleistung mit der eines Smartphones vor fünf Jahren vergleichbar war.



Im Allgemeinen meldet SpaceX keine genauen Prozessormodelle. Möglicherweise sind PowerPC-Controller strahlungsbeständig RAD750x86-Prozessoren, die sich in Rovers und Sonden bewährt haben, sind industrielle Embedded-Lösungen mit geringer Wärmeerzeugung und bescheidener Leistung.



Aber Platz wird nicht viel benötigt. Die ISS selbst wird von einem Intel 80386SX-20-Prozessor mit einem 80387-Mathe-Coprozessor gesteuert . Selbst zum Zeitpunkt des Starts der Station war sie ein Produkt von vor zehn Jahren.



In den Weltraum in einem Browser



Am 30. Mai startete SpaceX zum ersten Mal Menschen in die Umlaufbahn. Schließlich erschien eine zweite Möglichkeit, die Besatzung zur Internationalen Raumstation zu bringen. Die einzige Lösung dafür ist seit 2011 der russische Sojus.



Das Publikum der Online-Sendung bemerkte, wie viel das Crew Dragon-Schiff größer aussah als die dreisitzige Sojus-Kapsel. Mit einem ähnlichen Innenvolumen hat das SpaceX-Raumschiff einen Durchmesser von 4 Metern gegenüber 2,2 Metern in der Union. SpaceX bewarb das Raumschiff zunächst als Siebensitzer, aber die NASA wird vier Astronauten auf den bemannten Drachen starten.



Neben den physischen Unterschieden war die Art und Weise, wie Menschen auf dem Schiff navigierten, am auffälligsten. "Sojus" weicht nicht von den Traditionen der Luft- und Raumfahrttechnik ab: Die Besatzung drückt die Kippschalter und Tasten, und auf den Signaltafeln werden Informationen angezeigt. Cru Dragon macht alles auf seine eigene Art und Weise. Für ein futuristisches SpaceX-Raumschiff ist das Hauptelement der Touchscreen.



Crew Dragon-Bildschirme werden von der Chromium-Browser-Engine unterstützt, dh die Schnittstellen werden mithilfe von Webkomponenten, JavaScript und CSS in HTML erstellt. Sie haben intern ihre eigene reaktive Bibliothek geschrieben. Die Entwicklung von Schnittstellen folgt der Agile-Methodik mit einem hohen Balken für die Abdeckung mit Unit-Tests.





Screenshot des Browser-Docking-Simulators.



Vor dem ersten bemannten Start wurde SpaceX veröffentlichtbrowserbasierter Simulator für das Andocken von Crew Dragon an die ISS. Der Simulator begann als Hobby für zwei Entwickler des Unternehmens. Dann beschlossen sie, es zu beenden und veröffentlichten es für die breite Öffentlichkeit.



Der Simulator bleibt ein Simulator: Er hat nichts mit dem realen Code zu tun. Obwohl beide Produkte vom selben Team geschrieben wurden, handelt es sich um zwei völlig unterschiedliche Projekte.



All dies bedeutet nicht, dass das Raumschiff in JavaScript fliegt. Chrom auf dem Schiff wird nur als Rendering-Tool für UI-Elemente verwendet. Die Flugsoftware-Schnittstelle verfügt über alle erforderlichen Redundanzen und befindet sich laut SpaceX-Vertretern außerhalb der Displays. Das Backend ist in C / C ++ geschrieben.



Eine normale Browser-Engine in einem Raumschiff ist eine gewagte Entscheidung. In den Antworten versicherten SpaceX-MitarbeiterUnabhängig vom technologischen Stack sind die Entwicklungsstandards dieselben, die Prinzipien zum Schreiben zuverlässiger und effizienter Software ändern sich nicht, und um mögliche Fehler zu verstehen, werden Tests unter verschiedenen Bedingungen durchgeführt. Im Falle von Ablehnungen gibt es entsprechende Benachrichtigungen und Verfahren. Schließlich werden Hunderte von Stunden Astronautentraining auf Flugsimulatoren auf der Erde zu den Tests hinzugefügt.



Für alle Fälle befinden sich physische Tasten unter den Touchscreens. Sie sind für kritische Situationen wie ein Feuer im Cockpit eines Schiffes ausgelegt. Für die meisten Vorgänge, die über die Anzeigen aufgerufen werden können, gibt es außerdem physische Schaltflächen zum Starten und Abbrechen. Die NASA hat spezielle Anforderungen für die Bildschirme selbst entwickelt, und die Lösung von SpaceX entspricht diesen .



SpaceX-Mitarbeiter erklärten ebenfallswie sie zu einer scheinbar unkonventionellen Lösung für die Luft- und Raumfahrtindustrie kamen. Das Projekt begann als Prototyp, um ein Beispieldesign für die NASA vorzustellen. Dann wurde der Prototyp erfolgreich auf einer echten Flughardware gestartet. Die Entwickler mochten die modernen Funktionen, die in der Browser-Engine vorhanden waren, und es gibt genügend Entwickler dafür auf dem Markt.





Das Diagramm zeigt, wie JavaScript-Code von den Hauptsteuerungssystemen des James Webb-Teleskops isoliert ist.



Abgesehen von der SpaceX-Erfahrung ist die Auswahl von JavaScript für den Speicherplatz nichts Ungewöhnliches. Im Fall des James Webb - Weltraumteleskop, das JS - Code läuft direkt am Fahrzeug. Es steuert beispielsweise Motoren nicht direkt, sondern ruft nur andere Programme auf.



Warum ist im Raum kein Ton zu hören?



Weil die Rakete unter Linux fliegt.



Die Falcon 9-Software wird regelmäßig aktualisiert. Fast jeder Raketenstart fliegt mit einem leicht aktualisierten Code. Obwohl Updates so häufig sind, wird die "Basis" für jeden spezifischen Start nicht speziell angepasst. Dies wird von anderen SpaceX-Abteilungen durchgeführt, die ihre eigenen Anpassungen an den Flugkonfigurationen vornehmen: Sie stellen die Windvariablen am Starttag ein, ändern die Fehlertoleranzgrenzen und so weiter.



Crew Dragon wird vom Linux-Betriebssystem mit dem Patch PREEMPT_RT für den Echtzeitbetrieb gesteuert. SpaceX wird nicht verwendeteinige Standarddistributionen von Drittanbietern. Das Unternehmen hat einen eigenen Kernel und zugehörige Dienstprogramme zusammengestellt. In den Jahren der Entwicklung wurde der Kernel kaum verändert. Es gab nur geringfügige Änderungen und einige spezielle Treiber für die Arbeit mit der Hardware.



Zu den verwendeten Open Source-Projekten gehören der Das U-Boot- Betriebssystem-Loader , das Buildroot- Distributions-Build-System , die C ++ - Standardbibliothek und die Musl C- Bibliothek . Im Allgemeinen verwendet SpaceX jedoch weniger Software, die außerhalb des Unternehmens geschrieben wurde, und wählt Open-Source-Projekte nur mit der höchstmöglichen Qualität aus.



Bei SpaceX werden Tests in Python geschrieben, in LabVIEW getestet und fliegenin C ++. Beim Schreiben in C ++ verwenden sie die objektorientierten Techniken der Sprache, obwohl sie es vorziehen, alles so einfach wie möglich zu halten.



SpaceX auf Codeebene bietet die Möglichkeit eines normalen Betriebs mit dem Verlust von Sustainer- oder Shunt-Motoren mit Kompensationsalgorithmus. Zustandsautomaten enthalten alle Arten von Notfällen. Zum Beispiel kann die Zustandsmaschine des Schiffes „Dragon“ gelegt autonomen Übergang von der näher an der Station zu sorgen , wenn es einige Ausfälle sind.



SpaceX sagt es keine „AI“ in Dragon ist (wahrscheinlich bedeutet neuronale Netzwerk - Algorithmen), obwohl eine Art von Machine - Vision für die Navigation verwendet wird. Entwickler erklärtdas schließt die Verwendung von Programmen für maschinelles Lernen irgendwann in der Zukunft nicht aus.



Starlink



Das Starlink Satellite Internet Project besteht aus noch mehr Computern. Bei jedem Start startet die Rakete Falcon 9 60 Satelliten in den Orbit, die mehr als 4.000 Linux-Computer enthalten. SpaceX hat Zehntausende von Linux-Knoten und mehr als tausend Mikrocontroller in eine erdnahe Umlaufbahn gebracht.





Die Animation zeigt , wie die Solar - Panel des Satelliten wird



vor sechs Monaten im Einsatz, Starlink- wurde Erzeugung über 5 TB Telemetrie pro Tag, und die Konstellation nur größer geworden. Die Anzahl der Satelliten wächst und es wird daran gearbeitet, die Menge der gesendeten Daten zu reduzieren. Um die Datenmenge zu verringern, die an Bord gespeichert und zur Erde gesendet wird, werden einige der Probleme auf dem Gerät selbst diagnostiziert.



Jeder der Starlink-Satelliten wird von einem Hall-Effekt-Motor angetrieben. Aus diesem Grund nimmt der Satellit die gewünschte Position im Schwarm ein und vermeidet Kollisionen mit Weltraummüll. Diese Manöver müssen jedoch noch korrekt ausgeführt werden, und die Kommandoabteilung der größten Satellitenkonstellation ist winzig.



Daher waren die Programmierer verwirrtwie man Kollisionen vermeidet und die Position von Satelliten automatisch kontrolliert. In dem entwickelten System werden die Satelliten gefragt, welches Fenster sie betreten sollen - und sie gehen unabhängig voneinander dorthin. Außerdem empfangen Satelliten mehrmals täglich Daten von der Erde über Annäherungen an andere Objekte in der Umlaufbahn. Dann berechnen die Satelliten unabhängig voneinander die notwendigen Manöver und entfernen sich von Weltraummüll.



Die Vervielfältigung interner Systeme beim Starlink-Satelliten erfolgt nur bis zu einer bestimmten Grenze. Aufgrund der Gesamtzahl der Gefährten wird der Trupp den Verlust eines Soldaten nicht bemerken. Wenn ein Knoten ausfällt, stellt der Benutzer auf der Erde eine Verbindung zu einem anderen am Himmel sichtbaren Satelliten her.



Während der Entwicklung und des Testens wird jeder der Satelliten in der Starlink-Flottille nicht als separater Satellit betrachtet, sondern als Server im Rechenzentrum. Einige der Aufgaben sind kritisch: Verwaltung, Software-Updates, Stromversorgung und Sicherheit. Für diese Anwendungen werden separate Tests geschrieben. Viele andere Funktionen ermöglichen einen flexibleren Ansatz, ähnlich wie bei der Entwicklung von Webdiensten. Daher stellt das Team einen Testaufbau für eine kleine Anzahl von Satelliten bereit und vergleicht deren Verhalten im Vergleich zum Rest der Konstellation. Wenn Probleme auftreten, wird die Software verbessert oder auf die vorherige Version zurückgesetzt.



Dieser Testprozess ist erforderlich, um das System schnell zu verbessern. SpaceX-Entwickler behaupten, dass es oft möglich war, Fehler zu finden und zu beheben, die auf der Erde nicht vorherzusagen waren.



Der Starlink-Satellit verliert Benutzerdaten durch sich selbst, und Computer-Hacking droht das Abhören. SpaceX hat dies bereitgestellt und eine End-to-End-Verschlüsselung hinzugefügt. Außerdem führt jede der Komponenten - Satelliten, Gateways und Benutzerterminals - nur den signierten Code aus, sodass sich ein Angreifer lange Zeit nicht im System registriert.



Entwicklungskultur



Die meisten Softwareentwickler von SpaceX arbeiten in Seattle, Washington, und Hawthorne, Kalifornien, und einige in Büros in Texas.





SpaceX Software Development Team, 2013 Die



traditionelle Luft- und Raumfahrtindustrie ist sowohl von der Entwicklungsgeschwindigkeit als auch von der Größe der SpaceX-Geschäftsbereiche überwältigt. Wie im Jahr 2019 ( Podcast , Mark 44:00) sagte der Chief Software Officer der US Air Force, Nicholas Chillan, dass SpaceX dort, wo Regierungsbehörden mindestens 2.500 Programmierer benötigen würden, 50 Mitarbeiter anstellt. Gleichzeitig schreibt das Entwicklungsteam Software für neun verschiedene Maschinen und überprüft den Code in 24 Stunden.



SpaceX versucht, Entwickler aus der Spielebranche anzuziehen. Auf der GDC 2015 sagten Unternehmensvertreter, dass diejenigen mit einem Abschluss in Informatik nicht über Kenntnisse im Bereich Gedächtnismanagement verfügten. Unerwarteterweise sind das Arbeitstempo und die Optimierungsmethoden der Spieleentwickler für den Weltraum geeignet. Wie Elon Musk sagt , ist das Andocken von zwei Schiffen im Vergleich zu einem MMO elementar.



Im Rahmen der AMA bei Reddit im Jahr 2013 sprachen die Mitarbeiter über die Struktur der Softwareentwicklungsabteilungen.



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


Das Unternehmen stellt ständig Entwickler und Ingenieure ein, und nicht jede Position erfordert eine spezielle Ausbildung. In SpaceX-Büros gibt es viele verschiedene Akzente, auch aus dem Raum der ehemaligen UdSSR. Das Unternehmen kann nicht nur den Inhaber eines amerikanischen Passes einstellen, obwohl das Exportkontrollsystem für militärische Technologien eingeschränkt ist . Um eingestellt zu werden, benötigt ein Ausländer eine Aufenthaltserlaubnis - eine US-Greencard. Es wird einige Jahre dauern, bis es von Grund auf neu ist. Wenn es bereits ein "Grün" gibt, besteht die Frage nur in der Fähigkeit, das Qualifikationsniveau beim Interview anzuzeigen.



Elon Musk, CEO und CTO von SpaceX, ist bekannt für seine Abneigung gegen 40-Stunden-Arbeitswochen. Er hat wiederholt erklärtdas funktioniert 80-120 Stunden pro Woche. Was ist der Pop, so ist die Gemeinde. Eine häufige Beschwerde über Glassdoor über SpaceX  ist die schlechte Balance zwischen Leben und Arbeit. In anonymen Testimonials sprechen Mitarbeiter und Praktikanten über häufiges Burnout und die heute übliche 12-Stunden-Schicht .



All Articles