Jak „Drak“ málem nedoletěl. Přístup SpaceX k softwaru NASA překvapil

Společnost SpaceX má z pohledu NASA poněkud neortodoxní pohled na vývoj softwaru. Jak ukázalo několik letů v posledních době, ten má ovšem i své výhody.

Raketa Falcon 9 krátce po startu z mysu Canaveral, odkud 30. května 2020 vynesla na oběžnou dráhu loď Crew Dragon dvěma astronauty. | foto: SpaceX/NASAReuters

V první části našeho článku o softwaru a počítačích, které SpaceX využívá ve své vesmírné technice, jsme se věnovali především lodi Crew Dragon, nosiči Falcon 9 a také principu redundance.

V druhé části se zaměříme na používané programovací jazyky, operační systém a metody, kterými SpaceX svůj software testuje. Na konci najdete techničtější shrnutí zajímavých poznatků a také video s českými titulky k tomuto tématu.

Jako operační systém využívají stroje SpaceX operační systém Linux. Zatímco na osobních počítačích ve světě dominuje systém Windows, ve většině ostatních oblastí obvykle je právě Linux. Najdeme jej všude od síťových prvků, serverů, superpočítačů přes mobilní telefony a televize až po roboty a rakety. Výhodou tohoto systému je vysoká flexibilita a otevřenost, které umožňují vývojářům systém upravovat ku svým potřebám. SpaceX si například systém upravilo pro lepší odezvu pomocí režimu reálného času.

Palubní software Falconu 9 i Dragonu je napsán v programovacím jazyce C++. Jde o jeden z vůbec nejpoužívanějších jazyků, který se vyznačuje vysokým výkonem a univerzalitou. V tomto jazyce byl vyvinut nespočet aplikací a kromě strojů SpaceX je v něm napsán např. i software stíhačky Lockheed Martin F-35.

C++ je jazyk, který dává programátorovi poměrně hodně svobody, ale zároveň na něj kvůli tomu klade více zodpovědnosti za kvalitu kódu. Programátoři tedy musejí věnovat zvýšenou pozornost tomu, aby nevytvořili bugy.

Konkrétně ve SpaceX se tomu snaží předcházet například co nejmenším využíváním dynamické alokace paměti. To je mechanismus, skrze který aplikace může získat větší paměťový prostor pro své výpočty a po jejich ukončení jej vrátit zpět operačnímu systému. Díky tomu mohou mít aplikace tolik paměti, kolik potřebují, ale zároveň se tak operační paměť udržuje co nejméně obsazená a dostupná všem aplikacím. Je to však také typický zdroj bugů. Pokud takzvaně „spadne“ aplikace, původ chyby můžete často vypátrat k tomuto mechanismu.

První stupeň Falconu 9 s číslem B1060 během výroby

Další věcí, na kterou potřebují dávat pozor, je práce s tzv. datovými typy. Různá data v paměti počítače mají různé datové typy, které určují, kolik paměti zabírají, jaký mají formát, co je to vlastně za data (např. celé číslo, reálné číslo, text atd.) a jak se s nimi pracuje. Vhodná volba datových typů pro různá data a jejich korektní vzájemné převody (kdy např. potřebujeme z reálného čísla s desetinnou čárkou vyrobit číslo celé), jsou zásadní pro kvalitu kódu a je to opět typický zdroj chyb.

Co nadělá chyba

Své o tom vědí například programátoři rakety Ariane 5, kteří se nevyhnuli poměrně typické chybě při volbě a převodu datového typu jisté veličiny, což způsobilo destrukci rakety při jejím prvním letu v roce 1996.

Chybu udělali v tom, že převáděli hodnotu horizontálního zrychlení rakety vůči odpališti z původního datového typu 64bitového reálného čísla (který dokáže uchovat astronomicky vysoké číslo) na mnohem menší datový typ 16bitového celého čísla se znaménkem (který dokáže uchovat číslo o maximální hodnotě 32 767). V jistou chvíli však byla hodnota pro tak malý rozsah příliš velká, což vedlo k uložení chybné hodnoty a následně eskalovalo v pokus letového počítače o masivní korekci trajektorie a následnou katastrofu. Hodnota přitom nebyla ve skutečnosti pro let potřeba a sloužila jen pro kontrolu pozice rakety na rampě. 

Inženýři při programování Ariane nevyužili C++, ale jazyk Ada. To je jazyk, který byl navržen tak, aby striktně hlídal programátorovu práci s datovými typy a předcházel bugům. To však nemohlo pomoci proti chybné myšlence. Nutno dodat, že tato chyba mohla být snadno odhalena, pokud by se systém (měřící ono zrychlení) zahrnul do testovacích simulací a kdyby se tyto testy prováděly s realistickými daty odpovídajícími vlastnostem nové rakety. Což se nestalo.

Prvnímu exempláři nosiče Ariane 5 se během jeho letu v roce 1996 stala osudnou klasická programátorská chyba.

SpaceX si na testování softwaru velice zakládá. Každá úprava je důkladně prověřována v testech k tomu určeným a v různých simulacích a celý systém je testován přímo na letovém hardwaru. Testovací týmy mají sestavenou kompletní síť počítačů a elektroniky celé rakety a lodě a testují na ní chování celého systému v průběhu celé doby mise. Simulují tak všechno od zahájení odpočtu až po vypuštění nákladu na orbitě, přistání prvního stupně a deaktivaci druhého.

Využívají k tomu reálná data z předchozích letů (z každé mise nasbírají stovky gigabajtů dat) stejně jako různé krajní scénáře. Během těchto simulací pak také náhodně vypínají různé počítače, aby simulovali jejich selhání, a pozorují, jak se s tím celý systém vyrovná. Tyto simulace neprovádějí jen během vývoje a před starty, ale i během misí, kdy do tohoto testovacího systému mohou přivádět reálnou telemetrii z rakety a lodě a monitorovat jeho chování. To jim může pomoci urychlit identifikaci a řešení případných problémů.

Obzvlášť u Dragonu se to hodí, jelikož mají možnost software na dálku upravit. Jen díky tomu mohla firma úspěšně dokončit svou úplně první misi k ISS (COTS-2). Při příletu k ISS byl tehdy navigační software Dragonu zmatený v důsledku neočekávaných světelných podmínek.

Velmi vážně hrozilo přerušení mise. To by vedlo k vyšetřování, nutnosti opakovat misi a celkově velkému zdržení a také by to poškodilo tehdy se teprve rodící důvěru NASA se SpaceX. Inženýři však byli přesvědčeni, že tento problém zvládnou vyřešit úpravou softwaru ze Země. Podařilo se jim přesvědčit i NASA, ta k tomu dala svolení a mise skončila úspěchem. Pro daného manažera z úřadu to bylo odvážné rozhodnutí, protože na sebe vzal značnou zodpovědnost.

Dragon během mise COTS-2. Málem letěl domů s nepořízenou.

Nedostatek takto komplexního testování byl také zřejmě důvodem, proč některé vady v pro SpaceX konkurenční lodi Starliner společnosti Boeing byly odhaleny až na oběžné dráze.

Jak NASA uvedla během nedávné telekonference k výsledkům vyhodnocení incidentu Starlineru, agentura věnovala větší pozornost (více personálu a času) dohledu nad vývojem softwaru ve společnosti SpaceX než v Boeingu. Muskova firma totiž používá pro NASA neobvyklý způsob vývoje softwaru, a tak v něj měla agentura nižší důvěru než v průmyslu tradiční způsob vývoje používaný u osvědčeného dodavatele. Důvěra ve zkušenosti Boeingu a zaměření dohledu primárně na SpaceX vedlo k nedostatečné kontrole výsledků Boeingu a následným problémům Starlineru.

NASA také uvedla, že se jí některé aspekty interních metod testování ve SpaceX a jejich metody dohledu na kvalitu software zalíbily a hodlá je prosazovat i ve svých projektech.

Tisíce počítačů při jednom startu

Samostatnou kapitolou je systém Starlink určený pro poskytování internetu z oběžné dráhy. Od inženýrů ve SpaceX jsme se dozvěděli, že při každém startu satelitů pro tuto konstelaci vynáší Falcon 9 na oběžnou dráhu víc než čtyři tisíce linuxových počítačů. To znamená, že jeden satelit má v sobě možná až 66 počítačů.

Drak zkrocený webovou stránkou

Software je často přehlíženou stránkou současných kosmických lodí. V poslední době však programátoři a inženýři společnosti SpaceX alespoň trochu dali nahlédnout do nitra systémů, které řídí jejich stroje, včetně nové kosmické lodi pro lety s posádkou Crew Dragon.

V současnosti stále probíhá vývoj softwaru, kdy jsou nové verze testovány přímo na orbitě vybranými satelity, pokud se osvědčí, jsou jimi aktualizovány všechny satelity. V této vývojové fázi satelity Starlink generují 5 terabajtů (5 000 GB) telemetrických dat denně.

Přenos uživatelských dat je zabezpečený pomocí šifrování. Samotné satelity i pozemní systémy mají hardware navržený tak, aby na něm mohl běžet jen software podepsaný SpaceX. Bezpečnost systému se neustále vyvíjí a zlepšuje.

Oproti Falconům a Dragonům nemají Starlinky v sobě mnoho redundance (ale nějakou ano). SpaceX spoléhá spíše na to, že mají k dispozici mnoho satelitů, takže jim případně mohou přidělit úkoly těch, které by snad měly poruchu. Satelity jsou také naprogramované tak, aby automaticky zvýšily svůj aerodynamický odpor a urychlily tak svůj pád do atmosféry a sebezničení, pokud by ztratily spojení se Zemí.

Výpis technologií a metod používaných ve SpaceX

  • Letový software je napsaný v C++ a assembleru. Jsou využívány knihovny třetích stran, ale jen ty, které SpaceX vyhodnotilo jako mimořádně kvalitní (standardní knihovna, Das U-Boot, Buildroot, MUSL). Při programování se snaží vyhnout dynamické alokaci paměti. Využívají OOP a modulární návrh. Řídí se těmito pravidly pro psaní spolehlivého softwaru. Některá pravidla v seznamu samozřejmě ignorují, takže například neomezují délky funkcí na jednu tisknutelnou stránku.
  • Rozhraní Crew Dragonu je napsáno v JavaScriptu, HTML a CSS a je vykreslováno jádrem prohlížeče Chromium. Mají vlastní React knihovnu. Displeje mají zabudované vlastní počítače založené na Nvidia Tegra (pravděpodobně verze 2).
  • Falcon 9 a Dragon 1 využívají dvoujádrové procesory PowerPC a mikrokontroléry založené na PowerPC (pravděpodobně). Falcon nese nejméně 30 počítačů, Dragon 54. Crew Dragon využívá čtyřjádrové procesory PowerPC. Jde o běžně dostupné procesory (COTS), nikoliv radiačně chráněné.
  • Falcony a Dragony využívají trojnásobnou redundanci počítačů a mikrokontrolérů. U letových počítačů běží letový software na všech jádrech, redundance je tedy dvojnásobná. Crew Dragon využívá tři počítače, každý s dvěma samostatnými procesory. Redundantní je i většina senzorů a akčních členů.
  • Falcony a Dragony běží na Linuxu s patchem CONFIG_PREEMPT_RT a vlastními ovladači. Velkou pozornost věnovali scheduleru, který je v jednu chvíli pěkně potrápil. Aplikace se snaží dělat jednovláknové. Jádro je verze 3.2 (dva roky stará informace), ořezali z něj více než 80 % kódu. Distribuci mají vlastní.
  • Většina kódu je (nyní) na misích stejná, provádějí se ale úpravy s ohledem na charakter mise, počasí, bezpečnostní limity apod.
  • Dragon sdílí s Falconem mnoho kódu.
  • Dragon používá navigaci podle hvězd a LIDAR.
  • Počítače v řídící místnosti mise mají Windows + LabView. Podpůrné nástroje v C# a dalších technologiích.
  • Testy v Pythonu.
  • Testy se provádějí přímo na letovém hardware s reálnou telemetrií, kdy se simuluje mise od začátku do konce.
  • Starlink má end-to-end šifrování, satelity i pozemní hardware můžou spouštět pouze podepsaný software. Bezpečnost se neustále rozvíjí.
  • Ovládací rozhraní Starlinku hodně vychází z rozhraní Crew Dragonu.
  • Pro Starlink vyvíjejí vlastní ASICy (zákaznické integrované obvody).

Konec druhé a závěrečné části. První díl najdete zde.

Článek byl převzat z webu ElonX.cz, před vydáním byl redakčně upraven. Originál najdete zde.

U následujícího videa si lze zapnout i české titulky.

Autor:
  • Nejčtenější

Vyzkoušeli jsme podvod z Aliexpressu. Může vás přijít draho, i po letech

v diskusi je 110 příspěvků

14. března 2024

Nakoupili jsme na Aliexpressu a pěkně se spálili. Jednu USB paměť, dvě externí SSD a jeden externí...

Nejsilnější raketa úspěšně prošla prvním testovacím letem do vesmíru

v diskusi je 138 příspěvků

14. března 2024  12:12,  aktualizováno  15:31

Společnost SpaceX poprvé dostala svůj Starship do vesmírného prostoru. Po dvou předchozích...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Svět uznal nároky Beneše. Československo vyhrálo spor s Polskem o Javorinu

v diskusi je 42 příspěvků

12. března 2024

Před 100 lety se Československo dočkalo mezinárodního uznání ve sporu s Polskem o Javorinu....

Tato novinka ve vyhledávání Googlu lidi pěkně vytáčí. Máme řešení

v diskusi je 153 příspěvků

12. března 2024  10:45

Jedna z novinek, kterou přineslo evropské Nařízení o digitálních trzích, je změna v tom, jak Google...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Od Amazonu po Voyo. Velký test streamovacích služeb našel obří rozdíly

v diskusi je 48 příspěvků

19. března 2024

Premium V jedné můžete vybírat z dvou set filmů a seriálů, ve druhé z osmi tisíc. V jedné je speciální...

VIDEO: Střílej po mně! Kameraman natočil téměř celý útok v centru Prahy

Premium Ve čtvrtek zemřelo rukou střelce Davida K. 14 obětí, 25 lidí je zraněných, z toho deset lidí těžce. Jedním z prvních na...

Máma ji dala do pasťáku, je na pervitinu a šlape. Elišku čekají Vánoce na ulici

Premium Noční Smíchov. Na zádech růžový batoh, v ruce svítící balónek, vánoční LED svíčky na baterky kolem krku. Vypadá na...

Test světlých lahvových ležáků: I dobré pivo zestárne v obchodě mnohem rychleji

Premium Ležáky z hypermarketů zklamaly. Jestli si chcete pochutnat, běžte do hospody. Sudová piva totiž dopadla před časem...

Kuličková myš, VHS a další technologické skvosty nedávné minulosti

v diskusi je 16 příspěvků

19. března 2024

S některými bylo možné se běžně setkat ještě před deseti lety, jiné je možné koupit a používat...

Od Amazonu po Voyo. Velký test streamovacích služeb našel obří rozdíly

v diskusi je 48 příspěvků

19. března 2024

Premium V jedné můžete vybírat z dvou set filmů a seriálů, ve druhé z osmi tisíc. V jedné je speciální...

Zemřel astronaut Stafford, který si ve vesmíru „podal“ ruku s Leonovem

v diskusi nejsou příspěvky

18. března 2024  19:10

Ve věku 93 let po dlouhé nemoci zemřel někdejší astronaut Thomas Stafford, který byl zapojený do...

Apple přidá do svých zařízení generativní AI, využije k tomu Google

v diskusi je 1 příspěvek

18. března 2024  13:34

Apple jako jedna z mála technologických společností nezachytil příchod vlny generativní umělé...

Dětský šampon, který neštípe v očích: Přečtěte si!
Dětský šampon, který neštípe v očích: Přečtěte si!

40 uživatelů eMimina se pustilo do testování jemného šamponu KIND od značky Mádara, který je vhodný pro miminka už od prvních dnů. Jak si šampon...

Nutný výchovný pohlavek, souhlasí Bouček i Havlová s přerušením projevu na Lvu

Moderátor Libor Bouček ostře zareagoval na kauzu ohledně délky proslovu režisérky Darji Kaščejevové na předávání cen...

Švábi, vši a nevychované děti. Výměna manželek skončila už po pěti dnech

Nová Výměna manželek trvala jen pět dní, přesto přinesla spoustu vyhrocených situací. Martina ze Znojma se pokoušela...

Vyzkoušeli jsme podvod z Aliexpressu. Může vás přijít draho, i po letech

Nakoupili jsme na Aliexpressu a pěkně se spálili. Jednu USB paměť, dvě externí SSD a jeden externí HDD. Ve třech...

Chtěli, abych se vyspala s Baldwinem kvůli jeho výkonu, říká Sharon Stone

Herečka Sharon Stone (66) jmenovala producenta, který jí řekl, aby se vyspala s hercem Williamem Baldwinem (61). Měla...

Byla to láska na první pohled, říká hvězda Gilmorek o manželství s modelkou

Milo Ventimiglia (46), představitel Jesse ze seriálu Gilmorova děvčata nebo Jacka Pearsona ze seriálu Tohle jsme my, je...