Hlavní navigace

Falcon 9 od SpaceX létá na kapalný kyslík, letecký petrolej a Linux

 Autor: Depositphotos, NASA
Na konci května úspěšně do vesmíru odstartovala americká soukromá loď Crew Dragon, která se připojila na oběžné dráze k ISS. Nosičem byla raketa společnosti SpaceX s názvem Falcon 9. Jaký hardware a software ji pohání?
Petr Krčmář 8. 6. 2020
Doba čtení: 5 minut

Sdílet

Celý svět na konci května 2020 s napětím sledoval, zda se podaří start první soukromé vesmírné lodě s lidskou posádkou a zároveň první americký start po devíti letech. Vše se nakonec na druhý pokus podařilo a loď Crew Dragon dopravila na Mezinárodní vesmírnou stanici dva astronauty, kterými jsou Bob Behnken a Doug Hurley.

Nosičem byla znovu použitelná raketa Falcon 9 od společnosti SpaceX. Ta létá na kapalný kyslík, čistý letecký petrolej a také na Linux. Stejně jako spousta jiných kritických zařízení, včetně největších světových superpočítačů, se i tato vesmírná technika spoléhá na Linux.

Vývojáři SpaceX jsou docela otevření a netají se tím, jaký software a technologie ve svých strojích používají. Co se ukrývá pod kryty takové rakety?

Hardware „docela obyčejný“

Vývojáři tvrdí, že používají „docela obyčejné procesory“. Neuvádějí sice přesný model, ale jde prý o samostatné čtyřjádrové čipy, výkonnostně podobné tomu, co byste našli v pět let starých chytrých telefonech.

Je známo, že počítače ve vesmírných lodích nepatří k nejnovějším výkřikům techniky. Na Mezinárodní vesmírné stanici se například používají 20MHz procesory Intel 80386SX, jehož architektura pochází z osmdesátých let. V tomto případě ale nejde o běžný hardware, protože tyto čipy musí být odolné proti radiaci, aby vydržely vesmírné podmínky. Jejich vývoj trvá mnoho let a musí projít řadou zkoušek. NASA například očekává nový obecně použitelný procesor v roce 2021 [PDF] a měl by být založen na architektuře A53, která je známá například z Raspberry Pi 3.

V případě Falcon 9 jsou ovšem nároky výrazně nižší, protože jde o první raketový stupeň. Ten do vesmíru nelétá a drží se v bezpečné blízkosti Země, na kterou se také po odpojení automatizovaně vrací.

Řídicí software Falconu běží na třech samostatných počítačích, které se společně podílejí na procesu rozhodování. Využívají přitom aktorový model, kdy se všechny tři nezávislé systémy musejí shodnout na stejném výsledku. Každé procesorové jádro přitom vykonává svůj kód a pokud se výsledky neshodují, není příkaz odeslán k provedení.

O přijetí povelů se postarají počítače s architekturou PowerPC, které fungují jako soudci. Dostávají povely od všech tří řídicích počítačů a hlídají jejich shodu. Pokud se některá odpověď neshoduje s ostatními, je proces rozhodování restartován a začíná znovu. Pokud dorazí příkazy v pořádku, jsou předány soustavě mikrořadičů, které se už starají o ovládání lodních systémů.

Tento systém je označen jako zabezpečení pomocí redundance. Pro řízení rakety by teoreticky postačoval jediný z těchto počítačů a trojité řešení dovoluje zvýšit spolehlivost bez obrovských investic do specializovaného hardwarového řešení. Podobný přístup volí i výrobci moderních dopravních letadel.

Řídicí software v C++

Většina vývojářů sedí v ústředí v kalifornském městě Hawthorne a v Seattlu. Řídicí software rakety Falcon 9 je kompletně napsán v C++ a naplno využívá možností objektového programování. Vývojáři používají svobodné knihovny, zejména standardní knihovnu C++, ale i některé další. Počet je ale velmi omezený a vždy musí jít o prověřený software špičkové kvality.

Často se také rozhodnou napsat si vlastní knihovnu, pokud potřebují mít kvalitu kódu plně pod kontrolou. Výsledek se pak skládá z mnoha malých komponent, které jsou pevně umístěny v konkrétní hierarchii. Od těch nízkoúrovňových, přes různé subsystémy až po nejvyšší úroveň řízení celé rakety.

Různé komponenty jsou od sebe striktně odděleny, někdy běží ve stejném počítači, jindy jsou rozmístěny v různých počítačích a komunikují spolu pomocí rozhraní.

Uživatelské rozhraní je Chromium a JavaScript

Astronauti mají během letu k dispozici dotykové displeje, na kterých je vidět řídicí a informační rozhraní. Na displeje je promítán obraz vytvářený prohlížečem Chromium a rozhýbaný pomocí JavaScriptu. Prostředí nevyužívá žádnou standardní javascriptovou knihovnu, ale je napsáno přímo ve SpaceX.

Tyto komponenty jsou využity jen pro zobrazení informací na displejích a nepoužívají se v systémech řízení rakety. Přesto je prý i tento software testován stejně přísně, jako zbytek kódu. Výkon a spolehlivost jsou tu na prvním místě, vše je navíc vyzkoušeno i během stovek hodin tréninku posádky na simulátoru.

Přesto jsou v kabině k dispozici ještě klasická tlačítka a přepínače, kdyby došlo z jakéhokoliv důvodu k situaci, kdy by byly dotykové displeje nepoužitelné. Posádka by i v tu chvíli byla schopna zajistit kritické akce, jako například reakci na požár v kabině.

Rozhraní jsme zatím zblízka neviděli, ale vývojáři mají v plánu vše ukázat veřejnosti. Pokud k tomu dostanou svolení, měli bychom vidět přesně to, co viděli během letu oba astronauti.

Testování a zase testování

Vývojáři zdůrazňují, že veškerý hardware i software je velmi důkladně testován. Software projde po každé změně sérií jednotkových (unit) testů, funkčním testováním a systémovými testy zahrnujícími běžné i nestandardní situace. Při testování používají vlastní nástroje napsané v Pythonu.

Software v lodi řídí úplně všechno od zážehu motorů až po vstřikování kyslíku. Jakákoliv drobná chyba může způsobit obrovské škody, proto je kvalita kódu na prvním místě. Interní heslo ve SpaceX zní: „jen paranoik přežije“.

Každý let je svým způsobem unikátní a používá vlastní konfiguraci řízení letu či navigační parametry. Obvykle nejde o změny v software, ale jen o změnu nastavení některých voleb. V jistých případech ale může mise znamenat i úpravu kódu, například kvůli novým požadavkům NASA nebo při změně hardware.

Z každého letu Dragonu jsou také pořízeny stovky gigabajtů telemetrických dat, která jsou poté kontrolována. Tak vývojáři poznají, že se celý systém choval podle návrhu a očekávání.

Za vším je Linux

Počítače v raketě používají k běhu linuxové jádro, které je doplněné o patch PREEMPT_RT pro zlepšení výkonu pro real-time operace. Kromě této změny jde prakticky o standardní jádro, které je navíc doplněné o některé další drobnosti. Nejdůležitější úpravy zahrnují ovladače pro specifický hardware používaný ve SpaceX.

Několikrát bylo zmíněno, že v raketách SpaceX není použita žádná konkrétní linuxová distribuce, ale vývojáři si udržují vlastní repozitáře a vše si sestavují sami podle vlastní potřeby. Velká pozornost je věnována ladění priorit pro běh jádra a procesů, aby nedocházelo ke kolizím.

Řídicí software je zároveň pokud možno psán jednovláknově, aby se předešlo problémům se synchronizací. Zároveň je psán co možná nejvíce deterministicky a vyhýbá se například alokování paměti za běhu.

Hackinbg

Intenzivně jsou tu využívány distribuované systémy. Jako příklad posloužil projekt Star Link, ve kterém jsou při každém vypuštění 60 družic do vesmíru vyneseny 4000 linuxových počítačů. Celá síť družic tak dnes obsahuje na 30 000 linuxových počítačů a více než 6000 mikrořadičů. Podobná infrastruktura se používá také v projektech Falcon a Dragon, takže jde o prověřené a dobře otestované řešení.

(Zdroje: rozhovor na Reddit, ZDNet)