Software a počítače, které pohánějí Crew Dragon, Falcony a Starlink (1. část)
Počítače a software jsou nepochybně jednou z nejdůležitějších součástí raket a kosmických lodí. O počítačích řídících stroje SpaceX jsme se kvůli americkým regulacím ITAR a ochraně duševního vlastnictví SpaceX nedozvěděli mnoho konkrétních informací, v průběhu času se ale SpaceX přece jen o nějaké informace podělilo. Naposledy například při AMA (Ask Me Anything – Zeptej se mě na cokoliv) na sociální síti Reddit po misi DM-2, kde softwaroví inženýři firmy odpovídali na otázky fanoušků. Pojďme si tedy projít, co víme o softwaru a počítačích v raketách a lodích SpaceX. Článek je zaměřen i na čtenáře, kteří nejsou kovanými počítačovými experty.
Když se řekne Crew Dragon, tak se řadě lidí vybaví jeho tři dotykové displeje a modré ovládací grafické rozhraní. Stále se vede mnoho diskuzí o vhodnosti ovládání kosmické lodi pomocí dotykových obrazovek namísto tlačítek, přepínačů a joysticků. SpaceX tuto variantu zvolilo proto, že jejich cílem bylo navrhnout loď tak, aby žádné ovládání nevyžadovala a zároveň aby posádka měla neustále dostupné co největší množství informací. Loď je zcela autonomní a jediné ovládání ze strany astronautů by se mělo týkat maximálně vnitřních systémů kabiny, jako je například hlasitost audiosystému. Řízení letu lodi a jejích kritických systémů astronauty by mělo nastat jen v nouzové situaci a SpaceX se snažilo, za vydatné pomoci astronautů samotných, vyvinout co nejlepší grafické rozhraní pro tyto úkoly. Výsledné rozhraní pro ovládání letu lodi a dokování s ISS si můžete vyzkoušet v povedeném simulátoru. (Najdete oba skryté vtípky?)
Je ale potřeba připomenout, že klíčové funkce lodi se dají ovládat tlačítky umístěnými pod displeji. Pomocí nich má posádka možnost spustit hasicí systém, vystřelit padáky při návratu do atmosféry, přerušit let k ISS, spustit nouzovou deorbitaci, resetovat palubní počítače a vykonat další nouzové úkony. Páka pod prostředním displejem jim umožňuje spustit únikový systém. Mají rovněž k dispozici tlačítka, která spouštějí a ruší příkazy zadané pomocí displejů. Pokud tedy astronaut spustí nějaký příkaz na displeji a ten se následně porouchá, tak má stále možnost daný příkaz zrušit stiskem tlačítka pod displejem. Přehlednost a ovladatelnost displejů byla také testována v prostředí vibrací a testovací týmy a astronauti provedli mnoho testů s rukavicemi a i v natlakovaných skafandrech.
Ulises Siriczman vytvořil z dostupných snímků a videí model celé ovládací konzole a rovněž také interaktivní nástin grafického rozhraní.
Grafické uživatelské rozhraní Dragonu je vytvořené ve webových technologiích, konkrétně jazycích JavaScript, HTML a CSS. Na displeje v kabině je zobrazováno pomocí webového prohlížeče Chromium, otevřené varianty známého prohlížeče Google Chrome. Můžeme tedy říct, že Dragon s astronauty komunikuje pomocí webové stránky. Ovládat kosmickou loď webovou aplikací se může zdát zvláštní, v dnešní době jsou však webové aplikace zcela běžné nejen na internetových službách a chytrých telefonech, ale dobývají stále více různých zařízení. Jejich známou nevýhodou jsou vyšší nároky na výpočetní výkon ve srovnání s jinými technologiemi tvorby grafických rozhraní. Avšak displeje jsou vybavené vlastními počítači, takže výkon není problém.
Výhodou tvorby grafických uživatelských rozhraní ve webových technologiích je snadnost a rychlost vývoje. A ta byla ve vývojovém procesu SpaceX důležitá, protože jim umožňovala rychlé úpravy rozhraní podle připomínek astronautů. Doslova přes noc tak mohli zapracovat změny a hned další den je představit k testům. Díky tomu nejen rychle postupovali kupředu, ale také efektivně využívali čas astronautů. A ti sami si tento přístup pochvalovali. A nejen Bob a Doug, posádka Dragonu Endeavour z mise DM-2. Vývoje se zúčastnili i astronauti mise Crew-1, která by měla odstartovat v září. Byl to Michael Hopkins, velitel této mise, kdo dostal cenu za nalezení toho nejzajímavějšího bugu. Stalo se to během tzv. Hackathonu, týdenní akce v centrále SpaceX, kdy posádky obou misí intenzivně testovaly ovládání Dragonu při letových simulacích s cílem najít co nejvíce chyb a nedostatků a posunout vývoj software co nejvíce kupředu.
Zajímavé je, že tato forma uživatelského rozhraní původně vznikla pouze jako demonstrátor pro NASA. Když jej ale inženýři zkusili spustit na počítačích Dragonu, zjistili že funguje výborně. Myšlenka vývoje ve webových technologiích se jim díky jednoduchosti a snadno dostupným talentům zalíbila a rozhodli se u ní zůstat.
Pravděpodobně nejpodstatnější vlastností řídicího systému rakety a lodi je samozřejmě spolehlivost. Ta je v případě strojů SpaceX zajištěna především redundancí systémů, tedy využitím více stejných komponent, které pak pracují společně a mohou se vzájemně zastoupit. Konkrétně Falcon 9 má celkem tři oddělené letové počítače. Každý z těchto počítačů čte data ze senzorů a systémů rakety, provádí potřebné výpočty, činí rozhodnutí, jak pokračovat a generuje povely pro vykonání oněch rozhodnutí. Všechny tři počítače jsou vzájemně propojené a posílají si své výsledky a vzájemně je porovnávají. Musí panovat tzv. shoda většiny, tedy dva ze tří počítačů se musí ve svých výsledcích shodovat. Pokud shoda panuje, počítač, který má momentálně vedoucí roli, výsledky a povely schválí a ty jsou následně všemi třemi počítači najednou odeslány zbytku rakety a pak se spustí nové kolo výpočtů. Tento mechanismus zajišťuje, že pokud jeden ze tří počítačů selže, zbylé dva jsou stále schopny raketu spolehlivě řídit. Zároveň se mohou pokusit chybující počítač navrátit do funkčního stavu například restartem. Pokud selže vedoucí počítač, převezme vedení jeden z ostatních. Všechny tři počítače mají dvoujádrové procesory architektury PowerPC. Obě jádra opět provádějí stejné výpočty a porovnávají je mezi sebou a kontrolují shodu. Takže zatímco hardwarová redundance je trojnásobná, softwarová/výpočetní redundance je šestinásobná.
Co se stane, pokud selže druhý počítač? Inženýři tuto možnost výslovně nespecifikovali, je ale možných několik strategií. Buď je možné se pokusit chybující počítače znovu zprovoznit, opět například restartem, a během tohoto pokusu o obnovu nechat raketu řídit poslední funkční počítač (ten, který v předchozím kole rozhodování poskytl správné výsledky), nebo rovnou spustit proces přerušení mise. Existuje samozřejmě i možnost pokusit se dokončit misi i jen s jedním funkčním počítačem. Systém je toho schopen. Řízení převezme poslední funkční/správně počítající počítač a pokusí se dokončit misi. A protože procesory letových počítačů jsou dvoujádrové, kdy opět na obou jádrech běží stejný výpočet, tak jistá kontrolní redundance je stále zachována. Zda je tato strategie využívána, závisí především na důvěře SpaceX a NASA ve schopnost stroje spolehlivě a bezpečně dokončit misi jen s jedním počítačem. Přistávající Falcon nebo Dragon samozřejmě využije všechny dostupné prostředky, tato otázka se týká pokračování v naplánované misi. Je ale nutno podotknout, že současné selhání dvou počítačů je málo pravděpodobné. Pokud k tomu dojde, je to pravděpodobně známka nějakého problému přesahujícího jen počítače.
V každém případě při problémech s počítači či jinými systémy závisí osud mise na rozhodnutí systému Autonomous Flight Safety System (AFSS) – Autonomní systém bezpečnosti letu. Jde o systém zcela nezávislý na letových počítačích, který běží na sadě několika mikrokontrolérů (malých počítačů), získává stejná data ze senzorů a výsledky výpočtů a povely z letových počítačů a kontroluje bezpečný průběh mise. Dohlíží nejen na funkci letových počítačů, ale také na parametry letu (jako je odchylka od trajektorie, rozdíly v zrychlení apod.) a kontroluje, zda nejsou mimo stanovené limity. Tyto limity se obecně mohou u každého letu lišit, a pokud jsou překročeny, přeruší AFSS misi. Tedy u Falconu na rampě přeruší odpočet, u již letícího Falconu spustí sebedestrukci případně předcházenou aktivací záchranného systému Crew Dragonu, pokud jej raketa nese.
Aby měly všechny počítače vždy co nejspolehlivější data, je také většina senzorů redundantních, stejně jako počítače, které z nich data čtou a následně je posílají letovým počítačům. Stejně tak jsou redundantní i počítače řídící jednotlivé subsystémy rakety (motory, roštová kormidla, manévrovací trysky atd.) podle povelů letových počítačů. Falcon 9 je tedy řízen celým stromem nejméně 30 počítačů. Na vrcholu stromu jsou letové počítače ovládající síť podřízených počítačů. Každý z nich má svůj vlastní komunikační kanál ke každému letovému počítači zvlášť. Všechny povely mu tedy chodí třikrát. Všechny povely jsou před vykonáním opět porovnány, čímž dochází nejen k další kontrole výsledků letových počítačů, ale i ke kontrole přenosu dat. Ten je rovněž zabezpečen pomocí opravných kódů (způsob kódování dat využívající připojení dodatečných dat umožňujících detekovat a do jisté míry opravit případné chyby v datech vzniklé během přenosu). Pokud podřízený počítač detekuje neshodu, zvolí povel od toho počítače, který byl v předchozím kole rozhodování vyhodnocen jako funkční.
Nezapomeňme také, že má raketa celých devět motorů a je schopná se vyrovnat se selháním jednoho z nich. V takovém případě raketa ztrátu kompenzuje pomocí ostatních motorů, jak jsme toho byli svědky při misi Starlink v1-5. SpaceX tedy hodně spoléhá na redundanci, což je ovšem nejvíce používaná praktika na zvýšení spolehlivosti různých systémů.
Letové počítače Crew Dragonu jsou tři, každý z nich je tvořen dvěma samostatnými čtyřjádrovými procesory. Jsou tedy výkonnější než ty ve Falconech a poskytují větší softwarovou redundanci. Díky tomu loď dokáže bezpečně tolerovat ztrátu rovnou dvou počítačů. Kromě toho dokáže spolehlivě a bezpečně pracovat při ztrátě libovolných dvou motorků Draco, libovolných dvou displejů a libovolných dvou akčních členů (zařízení vykonávající nějakou činnost v lodi, což jsou například ventilátory vzduchotechniky, radiátory tepla, ventily atd.).
Ovládací displeje mají vlastní počítače založené na procesorech Nvidia Tegra vybavených grafickým procesorem pro podporu vykreslování. Celkově Dragon nese nejméně 54 počítačů. Nebylo řečeno, o jaké konkrétní procesory se jedná, inženýři ale prozradili že letové počítače se výkonem rovnají pět let starým chytrým telefonům.
Využívání redundantních počítačů zvyšuje nejen odolnost systému proti různým softwarovým a hardwarovým problémům, ale je to zároveň ochrana proti chybám způsobeným radiací. Ta je u vesmírných strojů jedním z hlavních nebezpečí pro jejich počítače. Systémy jsou proti ní chráněny libovolnou kombinací stínění, redundance a využití počítačů speciálně navržených pro zvýšenou odolnost proti radiaci. SpaceX radiačně odolnou elektroniku nepoužívá. Důvodů je několik. Tyto speciální počítače jsou velmi drahé, například maličký radiačně odolný mikrokontrolér pro cubesaty stojí okolo tisíce dolarů, řídící počítač pro marsovský rover Curiosity stál okolo dvou set tisíc dolarů. Naproti tomu obyčejné procesory PowerPC, které SpaceX využívá, se dají postavit výrazně laciněji. Cena ale není jediný aspekt. Dalšími jsou výkon a náročnost vývoje software. Radiačně odolné počítače jsou většinou založené na starších technologiích. Mají tedy menší výkon a podporují menší množství programovacích jazyků a vývojových nástrojů. To dělá vývoj softwaru pro ně náročnějším a dražším. Využití běžně dostupných levných procesorů umožňuje SpaceX levně sestavit redundantní systémy a dále to díky mnohem širšímu ekosystému nástrojů usnadňuje a zrychluje vývoj. Navíc to umožňuje intenzivnější testování, protože je možné dělat testy ve velkém. NASA na tuto strategii přistoupila, SpaceX ale muselo vypracovat studii o vlivu radiace na zvolený hardware.
Vícenásobná redundance systémů v prostředí, kde se stroje SpaceX pohybují, poskytuje zřejmě dostatečnou ochranu proti vlivu radiace. Pro kontext si připomeňme, proč je vlastně radiace pro počítače nebezpečná. Dnešní počítače jsou tvořeny množstvím polovodičových prvků (tranzistorů) spínajících elektrické proudy, čímž realizují binární logiku. Sluneční vítr a záření spolu s kosmickým zářením jsou tvořené jednak elektromagnetickým zářením o různých vlnových délkách (od rádiových vln až po záření gamma) a dále pak různými druhy částic. Pokud nějaká taková částice zasáhne polovodičový prvek, tak pomocí různých mechanismů závislých na konkrétní částici dojde k přeměně její energie na elektrický náboj či proud. Ten pak může způsobit poruchu v datech. Pokud částice zasáhne paměťový bit, může způsobit změnu jeho hodnoty z 0 na 1 nebo obráceně což potenciálně může mít velký dopad. Může to způsobit chybu ve výpočtech a nebo i pád aplikace. Tato porucha bitu může nastat jak v operační paměti RAM počítače, tak i v paměťovém úložišti a poškodit tak data uložená k budoucímu použití. Může k tomu dojít i ve vyrovnávací paměti procesoru a nebo v jeho registrech. Dopad částice tak může procesoru data změnit doslova pod rukama během výpočtu. Vliv takovýchto poruch je možné omezit využitím pamětí se zabudovanými opravnými kódy (ECC paměti). Není známo, jestli je SpaceX využívá, ale je to pravděpodobné.
Případné chyby ale budou s velkou pravděpodobností detekovány právě porovnáváním výpočtů počítačů. Následně mohou být vyřešeny restartem chybujícího počítače, při kterém dojde k přepsání chybných dat v paměti počítače korektními daty z pamětí ostatních počítačů. Právě proto jsou do systému zabudované mechanismy pro automatické restarty počítačů. Hodilo se to například při předposlední misi k ISS (CRS-20), kdy radiace dočasně vyřadila z provozu jeden z letových počítačů Dragonu. V Crew Dragonu mají astronauti možnost provést restart i pomocí tlačítek pod displeji a během výcviku tyto úkony trénovali.
Tento typ chyb způsobených zářením je tedy možné napravit. To ale neplatí o všech typech. Některé částice záření totiž dokážou narušit atomovou mřížku polovodiče a tím zhoršit jeho vlastnosti a způsobovat postupnou degradaci počítače. Navíc, pokud polovodičový prvek zasáhne částice s velmi vysokou energií, nebo zasáhne citlivé místo, přenesená energie jej může trvale poškodit. Ztráta jednoho tranzistoru nutně počítač nezničí, polovodičové obvody mají zabudovanou jistou toleranci. Samozřejmě dostatečně velká dávka může celý počítač zničit okamžitě. Ale i jedna porucha na kritickém místě obvodu může počítač ochromit. Své o tom ví rover Curiosity, který měl poruchu jednoho ze svých dvou počítačů. Pravděpodobně v důsledku radiace došlo k trvalému poškození kritické části jeho paměťového úložiště. To následně zablokovalo přístup do velké části úložného prostoru což pak uvedlo řídicí software do chybného stavu. Obsluha roveru pak musela předat řízení druhému počítači a poškozenou část úložiště izolovat.
Dodejme ještě, že vývoj integrovaných obvodů směřuje spíše k větší zranitelnosti vůči radiaci než naopak. Neustálé zlepšování výrobních technologií vede na neustálé zmenšování tranzistorů a jejich integraci do obvodů v čím dál větších počtech. To zvyšuje výkon a zároveň snižuje spotřebu, ale také to snižuje odolnost proti radiaci. Čím menší totiž tranzistor je a na čím menším napětí pracuje, tím méně energie je potřeba ke způsobení chyby. Více částic kosmického záření pak má potenciál způsobit poruchu.
V druhé části tohoto článku se podíváme, jaký operační systém a programovací jazyky SpaceX používá, jak přistupuje k testování softwaru, a také se dozvíte pár technických zajímavostí o satelitech Starlink.
- Software ve SpaceX: Programovací jazyky, uživatelská rozhraní pro Dragon i Starship, útrapy při přistáních - 18. 6. 2021
- Jak SpaceX vyvíjí, testuje a používá software pro Crew Dragon a Starlink - 14. 6. 2021
- Historky ze SpaceX: Selhání třetího Falconu 1 kvůli úplné maličkosti bylo pro SpaceX těžkou ránou - 11. 4. 2021
Vi se neco o tom bugu kterej nasel Michael Hopkins?
Byl to ten “nejlepší” bug, víc o tom neřekli.
Trend znizovania odolnosti pocitacov na kozmicke ziarenie ma dost prekvapuje, cakal som skor scenar, kde sa sice nachylnejsia ale mensia(v dnesnej dobe) elektronika schovaja lahsie za fyzicku radiacnu ochranu. Kto vie ci sa zvoli podobny scenar aj u dragonu xl, ktory uz bude lietat mimo radiacnu ochranu Zemskeho mag. pola.
Ten “trend” se týká samotné elektroniky – nikoliv jejího stínění.
Stínění se samozřejmě používalo, používá a používat bude. Jeeenže – nedá se s rozumnou hmotností odstínit dokonale (vždy se něco za stínění dostane: ať už přímo – proto, že to interaguje s hmotou málo, nebo proto, že mělo to “něco” prostě kliku a nic ze stínění to cestou netrefilo, nebo to prostě mělo příliš vysokou energii, nebo nepřímo ve formě sekundárního záření – narazilo do stínění, ale z toho stínění to vyrazilo a poslalo na cestu zase něco jiného, atd). Ve výsledku tedy samotnou elektroniku v důsledku stínění zasahuje méně záření … ale pnějaké pořád ano.
A pak už je to na té samotné elektronice, jestli to “nějak” vydrží nebo ne a teprve tady přichází na řadu ten “trend”: Samotná elektronika se se zmenšováním polovodičů (a s tím spojeným snižováním energií potřebných pro změnu stavů, a energií které vydrží) stává citlivější na JEDNOTLIVÉ zásahy.
Moderni mala elektronika je mene odolna na radiaci a potrebuje lepsi stitneni. U maleho tranzistoru, kde je nizky naboj, se snaze nahodne prepne na opacny bit. Neplati to jen pro chipy, ale trpi tim i HDD.
Pěkný článek, ale mám dotaz: jaké oba skryté vtípky v tom dokovacím simulátoru jsou? Předpokládám, že jedním z nich je (POZOR SPOILER – PLACKA/ŽELVA), ale co je ten druhý?
roadster
Rozhlédněte se po prostoru.
Jeee, super 😉 Jen škoda, že má střechu :/
V dřívějších dobách se v letectví a kosmonautice používala i hardwarová redundance, tedy že např. dva ze tří řídících počítačů byly z jednoho HW a třetí byl z jiného HW i od jiného výrobce.
Je dostupná informace zda jsou ty počítače u SpaceX identické nebo mají jinou architekturu/výrobce?
To mi bohužel není známo. Formulace některých vět co jsem četl a slyšel by tomu mohla napovídat ale potvrdit to nemůžu.
Tak pokud je to skutecne x86 (tuto zminku jsem v diskuzi nevidel, ale pravda celou jsem ji nedocetl) a ma vykon 5 let stareho mobilu, tak zbyva jeden vyrobce, VIA, a neco z teto nabidky https://www.viatech.com/en/products/boards/embedded-boards/
Treba raketoplan taky nemel redundanci v dodavateli HW, mel 5 pocitacu IBM, 4 se stejnym SW a 5. zalozni s vlastnim kodem. 5. nebyl nikdy pouzit.
Mícháte dvě věci dohromady. Letové počítače používají x86 (takže klidně nějaký běžný Intel nebo AMD), ale displeje Crew Dragonu používají architekturu ARM (procesory Nvidia Tegra) a těch se týkalo to přirovnání o 5 let starých mobilech.
Tak jsem jeste trochu hledal tu x86 a zadna tam neni. x86 pouzival Falcon1. Falcon9 a Dragon pouziva PowerPC. Tegra je tedy asi jen na tom “entertaiment” dispayi.
Asi máte pravdu. Zkoušel jsem teď pátrat, a i když se na spoustě míst zmiňuje, že SpaceX používá x86, tak nikde není uveden dobrý zdroj této informace. Na wiki je uvedeno, že Dragony používají x86 pro control a PowerPC pro actuation, ale opět chybí zdroj. A na Redditu nějaký bývalý zaměstnanec SpaceX, který tam dlouho pracoval na avionice, řekl, že x86 se používal akorát na Falconu 1, a současné počítače jsou PowerPC. Z toho příspěvku jste vycházel vy, předpokládám. Text článku upravíme.
Ano, vychazim ze zmineneho odkazu. Jen bych netvrdil, ze je to byvaly zamestnanec, v te diskuzi AMA ma stitek “SpaceX Avionics”, tak prepokladam, ze vystupuje za SX.
Ne, ten člověk pracoval ve SpaceX jen mezi 2008 a 2014. Ten štítek mu přidali moderátoři toho subredditu, aby jeho příspěvky měly jakousi automatickou důvěryhodnost a on nemusel pokaždé vysvětlovat, že pracoval ve SpaceX, takže o dané věci asi něco ví. Nijak to ale neindikuje, že reprezentuje firmu nebo že v ní pořád pracuje. Toho AMA se účastnil jen jako normální diskutující, nezastupoval SpaceX.
Super článek, díky 🙂