Informatyka w kosmosie
... czyli popularnonaukowa opowieść o tym, jak informatyka pomaga ludzkości w podboju kosmosu.
niedziela, 15 października 2017
Gdybym urodził się w USA, prawdopodobnie pracowałbym dzisiaj nad oprogramowaniem do sond kosmicznych. Hobbystycznie interesuję się kosmosem i choć sam nie prowadzę obserwacji astronomicznych, to śledzę wszystko, co się w astronomii dzieje. Pełen podziwu jestem zwłaszcza dla konstruktorów latającego w kosmos sprzętu. Bez komputerów podbój kosmosu na dłuższą metę byłby niemożliwy. Nawet przy badaniu najbliższych nam planet, odległość od Ziemi jest na tyle duża, że o jakimkolwiek sterowaniu sondą w czasie rzeczywistym nie może być mowy. Maszyny wysyłane poza orbitę Księżyca muszą więc umieć radzić sobie bez człowieka...
Wyzwania
Przestrzeń kosmiczna to miejsce niebezpieczne nie tylko dla człowieka. Ekstremalne warunki stawiają wyzwania również przed elektroniką i oprogramowaniem, które w dodatku muszą wytrzymać w takim środowisku dziesiątki lat.
Podstawowym zagrożeniem dla elektroniki jest promieniowanie kosmiczne. Ze Słońca płynie we wszystkich kierunkach strumień silnie naładowanych cząsteczek, zwany wiatrem słonecznym. Może on zakłócać pracę urządzeń poprzez przekazywanie im niepożądanego ładunku elektrycznego oraz samoistną zmianę wartości bitów w rejestrach i układach pamięci. Na Ziemi chroni nas przed nim pole magnetyczne, które tworzy wokół planety ochronny płaszcz. Lecąc dalej, tracimy tę osłonę. Kolejnym źródłem silnego promieniowania jonizującego są gazowi giganci, Jowisz i Saturn. Musi ono być brane pod uwagę przy projektowaniu wszystkich misji, które mogą przelecieć w ich pobliżu.
Kosmos to generalnie zimne miejsce, dlatego elektronika musi stabilnie pracować w temperaturach sięgających kilkudziesięciu stopni poniżej zera. W wewnętrznym Układzie Słonecznym jest dla odmiany gorąco. Nawet jeśli jakaś misja zmierza w kierunku planet zewnętrznych, trajektoria lotu może wymagać zbliżenia się do Słońca, aby uzyskać optymalną prędkość i zminimalizować zużycie paliwa. Z tego powodu najlepiej, aby komputery były wyposażone zarówno w układy chłodzenia, jak i ogrzewanie.
Sondy i statki kosmiczne potrzebują energii. W wewnętrznym układzie słonecznym zasilanie może pochodzić z ogniw słonecznych, jednak im dalej, tym bardziej ich wydajność spada. Już na Marsie ilość światła słonecznego wynosi około 43% ziemskiej wartości, co odpowiada mniej więcej silnemu zachmurzeniu na Ziemi. Na dzień dzisiejszy podjęto tylko jedną próbę wykorzystania energii słonecznej w zewnętrznym układzie słonecznym - sonda Juno, która w ubiegłym roku weszła na orbitę polarną wokół Jowisza, zasilana jest specjalnymi ogniwami słonecznymi, potrafiącymi wycisnąć, co się da z niewielkiej ilości światła (4% tego, co otrzymuje Ziemia). Alternatywnym źródłem energii są tzw. RTG (ang. Radioisotope Thermoelectric Generator, radioizotopowy generator termoelektryczny), które pozyskują energię z naturalnego rozpadu substancji promieniotwórczych, np. plutonu-238. Ich zaletą jest bardzo długi czas działania, wynoszący kilkadziesiąt lat, natomiast wadą - stosunkowo niska ilość produkowanej energii (kilkaset watów), która w dodatku maleje z czasem, wraz ze zużyciem paliwa oraz degradacją samego RTG).
Do tego wszystkiego należy duże odległości, które sprawiają, że komunikacja w czasie rzeczywistym jest niemożliwa. Sygnały radiowe podróżują z prędkością światła, co wprowadza duże opóźnienia w transmisji. Już w przypadku komunikacji Ziemia-Mars wynoszą one od 3 do 21 minut w jedną stronę, w zależności od wzajemnego ułożenia planet. Dla Jowisza jest to od 33 do 53 minut1. Aby dotrzeć w okolice Plutona, sygnał radiowy potrzebuje 5 godzin, zaś do najdalszej sondy, Voyagera 1 - aż 19,5 godziny2!
Wszystkie te wyzwania wymagają stosowania specyficznych rozwiązań.
Deep Space Network
Deep Space Network to amerykański system łączności kosmicznej, który można określić mianem kosmicznego Internetu. Używany jest do komunikacji ze wszystkimi misjami bezzałogowymi NASA poza orbitą okołoziemską. Składa się on z zestawu ogromnych anten rozlokowanych w trzech ośrodkach na Ziemi, odległych od siebie o mniej więcej 120 stopni szerokości kątowej: Goldstone (USA), Madryt (Hiszpania), Canberra (Australia). Pozwala to na monitoring nieba we wszystkich kierunkach. Swoje własne sieci DSN posiadają też inne agencje kosmiczne.
NASA stosuje kilka rodzajów anten. Każdy ośrodek musi posiadać:
- 1 antenę o średnicy 34 metrów typu HEF (High Efficiency Antenna)
- min. 2 anteny o średnicy 34 metrów typu BWG (Beam Waveguide Antenna)
- 1 antenę o średnicy 26 metrów,
- 1 antenę o średnicy 70 metrów.
Tak duże anteny są wymagane, aby wychwycić słabe sygnały sond kosmicznych, zwłaszcza tych znajdujących się na peryferiach Układu Słonecznego. Nie mogą też one śledzić wszystkich misji naraz - każda misja ma ściśle przydzielone okna czasowe, które może wykorzystać na nadawanie oraz ściąganie danych. Z tego powodu np. transmisja 8 GB danych zebranych przez sondę New Horizons podczas przelotu obok Plutona trwała aż 16 miesięcy, od lipca 2015, do listopada 2016. Aby zaoszczędzić przepustowość sieci DSN, wszystkie współczesne misje wyposażone są w tryb pracy autonomicznej, dzięki czemu nie wymagają one stałego nadzoru z Ziemi. Technologia ta została po raz pierwszy zastosowana w eksperymentalnej misji Deep Space 1 z 1999 roku, która służyła za poligon doświadczalny dla szeregu nowych rozwiązań. Wyzwaniem jest komunikacja z kilkoma starszymi, ale wciąż aktywnymi misjami, pozbawionymi takiego systemu. Mowa tu np. o bliźniaczych sondach Voyager z 1977 roku, dzierżących tytuł najdalszych obiektów wykonanych ręką ludzką. Voyagery są szczególnie trudne. Ich RTG produkują już bardzo mało energii, co wraz ze znaczną odległością (Voyager 1 - 140 j.a.3, prawie 3 razy dalej niż Pluton) sprawia, że ich sygnał jest niezwykle słaby i może być wychwycony tylko przez największe anteny.
Od kilkunastu lat NASA inwestuje szczególnie dużo środków w eksplorację Marsa. Na powierzchni aktywne są na dzień dzisiejszy dwa łaziki (Opportunity z 2004 roku oraz Curiosity z 2012). Wokół planety krążą trzy orbitery NASA (Mars Reconaissance Orbiter, 2001 Mars Odyssey, MAVEN) i trzy kolejne należące do innych agencji kosmicznych. Orbitery NASA, oprócz prowadzenia badań, tworzą marsjańską sieć telekomunikacyjną dla lądowników i łazików. Najnowszy z nich, MAVEN, posiada nadajniki pozwalające przesyłać dane na Ziemię z prędkością dochodzącą 2048 kbit/s. W przypadku misji kosmicznych jest to imponująca wartość.
Więcej o sieci Deep Space Network można poczytać na oficjalnej stronie internetowej deepspace.jpl.nasa.gov. Strona, oprócz artykułów, zawiera też bardzo ciekawą aplikację DSN Now pokazującą w czasie rzeczywistym, z czym aktualnie "rozmawiają" poszczególne anteny.
Kosmiczna elektronika
Zwrot kosmiczna technologia kojarzy nam się z czymś nowoczesnym i zaawansowanym. Jednak w NASA pewnie kiwają z politowaniem głowami, słysząc takie określenia. Misje kosmiczne trwają od kilku do kilkunastu lat, z czego istotną część tego czasu stanowi przelot do miejsca docelowego. Od zamontowania urządzenia w sondzie do momentu jego wykorzystania w trakcie misji może minąć nawet kilka lat, natomiast same komponenty zbudowane są na bazie jeszcze starszych projektów. Jako przykład weźmy sobie sondę New Horizons, która dwa lata temu jako pierwsza odwiedziła Plutona, a za rok z kawałkiem przeleci obok niewielkiego obiektu z Pasa Kuipera. Została ona wystrzelona na początku 2006 roku, a jej montaż zakończył się pół roku wcześniej. Komputery pokładowe sondy pracują pod kontrolą procesorów Mongoose-V. Czy mówi Wam coś ta nazwa? Zapewne nie, dlatego przedstawię parametry:
- architektura: 32-bitowa,
- prędkość zegara: 10 lub 15 MHz,
- zestaw instrukcji: MIPS R3000,
- 2 KB pamięci cache dla danych,
- 4 KB pamięci cache dla instrukcji,
- kontroler RAM,
- system wykrywania i naprawy błędów,
- ochrona przed promieniowaniem.
Mongoose-V jest przystosowaną do warunków kosmicznych wersją procesora MIPS R3000 z... 1988 roku. Stanowił on serce pierwszej konsoli PlayStation, a jego parametry nie pozwalają nawet na uruchomienie na nim starożytnego Windowsa 95. Identyczne procesory są także wykorzystywane w misjach Mars Reconaissance Orbiter oraz 2001 Mars Odyssey.
Bazą do budowania procesorów odpornych na promieniowanie nie bez powodu są starsze procesory. Charakteryzują się one dużo niższą gęstością upakowania tranzystorów, dzięki czemu do zakłócenia przetwarzania danych wymagany jest dużo większy ładunek elektryczny. Duże znaczenie ma też wybór odpowiedniej technologii, gdyż różne rozwiązania mają różną podatność na np. przestawienie się losowego bitu czy zapotrzebowanie na energię. Oczywiście wciąż dokonuje się tu postęp wraz z chęcią przeprowadzania coraz ambitniejszych eksperymentów naukowych, jednak nie jest on tak szybki, jak w przypadku domowej elektroniki. Marsjański łazik Curiosity z 2012 roku, ze względu na ilość zabranej aparatury naukowej, posiada ponad 10-krotnie szybszy zegar procesora niż Opportunity (aktywny od 2004 roku do dziś). Za około trzy lata na Marsa dotrzeć ma kolejny łazik bazujący na tym samym projekcie, lecz wyposażony w inne przyrządy naukowe.
Rozwój komputerów pokładowych używanych w amerykańskich misjach najlepiej obrazuje porównanie parametrów kilku amerykańskich sond:
Misja | Wystrzelony | Aktywny | Procesor | Zegar | RAM | System operacyjny |
---|---|---|---|---|---|---|
Galileo (orbiter, Jowisz) | 1989 | 1995-2003 | RCA 1802 | 1,6 MHz | 16/32 KB | Brak |
Sojourner (łazik, Mars) | 1996 | 1997 | Intel 80C85 | 2 MHz | 512 KB | Brak |
Pathfinder (lądownik, Mars) | 1996 | 1997 | IBM RAD6000 | 20 MHz | 128 MB | VxWorks |
Opportunity (łazik, Mars) | 2003 | 2004-dziś | BAE RAD6000 | 20 MHz | 128 MB | VxWorks |
New Horizons (sonda, Pluton) | 2006 | 2015-dziś | Mongoose-V | 12 MHz | 16 MB | Nucleus RTOS |
Curiosity (łazik, Mars) | 2011 | 2012-dziś | BAE RAD750 | 200 MHz | 256 MB | VxWorks |
Juno (orbiter, Jowisz) | 2011 | 2016-dziś | BAE RAD750 | 200 MHz | 128 MB | VxWorks |
Procesory RAD750 to odporna na promieniowanie wersja procesorów PowerPC 750, które zadebiutowały na rynku w 1997 roku i stosowane były m.in. ówczesnych komputerach Apple'a.
Choć obecnie przetwarzanie danych naukowych odbywa się głównie na Ziemi, NASA inwestuje w rozwój platformy sprzętowej pozwalających na wykonywanie zaawansowanych obliczeń w przestrzeni kosmicznej. Jest to SpaceCube, której wersja 1.x działa na teleskopie Hubble'a. W fazie projektowania jest wersja 2.0, której moduł wygląda tak:
Mimo tych wszystkich zabezpieczeń, zdarzają się awarie spowodowane przez promieniowanie. Kluczem do wyjścia z opresji jest stosowanie redundancji. Instalowane są po dwie sztuki każdego komputera pokładowego, a wyniki ich pracy są na bieżąco porównywane. Jeśli wystąpi niezgodność, oba komputery są resetowane, a sonda wysyła telemetrię i wchodzi w tryb bezpieczeństwa, który wymaga interwencji z Ziemi. Jeśli uszkodzenie jest nieodwracalne, wgrywana jest poprawka do oprogramowania, która nakazuje omijać niesprawny moduł lub fragment pamięci.
Kosmiczne oprogramowanie
Oprogramowanie sond kosmicznych to przykład systemów czasu rzeczywistego. Charakteryzują się one tym, że występują w nich bezwzględne ograniczenia czasu reakcji potrzebnego na obsłużenie określonych zdarzeń. Jest to bardzo ważne przy wszelkiej automatyce związanej ze sterowaniem (ale nie tylko). Jeśli pojazd napotka np. przeszkodę, od tego czy oprogramowanie będzie w stanie na to zareagować np. w czasie poniżej 100 milisekund może zależeć cała misja.
Aby napisać oprogramowanie czasu rzeczywistego, potrzebujemy odpowiedniego języka programowania, który daje programiście pełną kontrolę nad wszystkimi aspektami działania. Przykładowo, najpopularniejszy język programowania świata, Java (w której sam programuję), nie może być wykorzystany, ponieważ jako programista nie mogę w nim samodzielnie zarządzać pamięcią. Maszyna wirtualna Javy sama decyduje o tym, kiedy i ile pamięci zwolnić, uruchamiając specjalny proces odśmiecania pamięci. Wprowadza on niewielkie, losowe opóźnienia, których nie możemy kontrolować. W systemie czasu rzeczywistego takie rozwiązanie jest niedopuszczalne. Gdyby odśmiecanie pamięci włączyło się w środku krytycznego procesu, moglibyśmy nie zmieścić się w limicie czasu.
Historycznie, podstawowym językiem programowania dla systemów czasu rzeczywistego była Ada, która została użyta np. do stworzenia oprogramowania dla sondy Cassini-Huygens. Oprogramowanie wspomnianej już wcześniej sondy Deep Space 1 z 1999 roku napisane zostało w Common Lispie. NASA stosowała też bardziej egzotyczne języki. Sonda Galileo z 1989 roku oraz wahadłowce zostały zaprogramowane w języku HAL/S, którego interesującą cechą był tzw. "tryb trójliniowy", pozwalający zapisywać równania matematyczne z indeksami górnymi i dolnymi:
E 2 2
M X = A + B
S I
Obecnie NASA coraz chętniej sięga po niektóre "tradycyjne" języki, jak C i C++. Po okrojeniu ich z niektórych "niebezpiecznych" konstrukcji oraz funkcji biblioteki standardowej, można w nich napisać program czasu rzeczywistego. Dlaczego jednak NASA zaczęła je wybierać, skoro - w przeciwieństwie do Ady - ich kompilatory nie wykonują dodatkowych analiz potrafiących wyłapać wiele błędów? Powodem jest zwiększające się zapotrzebowanie na specjalistyczne oprogramowanie i dostępność odpowiednich programistów na rynku. Bardzo fajnym, choć skrajnym przykładem takiej sytuacji jest oferta pracy w NASA z 2017 roku. NASA ogłosiła poszukiwanie osoby biegłej w językach programowania stosowanych w połowie lat 70. XX wieku (Fortran, Algol, COBOL, ówczesne assemblery) do opieki nad oprogramowaniem Voyagerów, ponieważ ostatnia osoba z oryginalnego zespołu projektowego, Larry Zottarelli, niebawem miała przejść na emeryturę4.
Zakończenie
Podbój kosmosu to wyjątkowe i jedyne w swoim rodzaju wyzwanie dla informatyki. Mam nadzieję, że udało mi się pokazać, jak bardzo różni się ona od tego, co znamy z domowego zacisza, począwszy od sprzętu, na podejściu do tworzenia oprogramowania skończywszy. Gdy następnym razem spojrzysz w rozgwieżdżone niebo, pomyśl o tych niepozornych urządzeniach, wielokrotnie wolniejszych od Twojego laptopa, które są naszą bramą do poznania wszechświata.
-
1 jednostka astronomiczna = średnia odległość Ziemi od Słońca, ok. 150 milionów km. ↩
-
Why NASA Needs a Programmer Fluent In 60-Year-Old Languages ↩
zobacz inne wpisy w temacie
Komentarze (3)
macwozni
# czwartek, 23 listopada 2017, 14:43
Czy przypadkiem nie miałeś na poprzednim blogu podobnego wpisu. Tak mi się coś takiego przypomina.
A w Fortran-ie sam piszę na co dzień. Co prawda w wersji Fortran 2003, ale jednak.
BTW
W przyszłym roku powinna wejść do życia specyfikacja Fortran 2015.
Od wersji 2003 Fortran wspiera programowanie obiektowe, a od wersji 2008 automatyczne zrównoleglanie w pamięci rozproszonej.
BTW2
Aktualnie jedyny rozwijany framework do testów dla Fortrana (napisany w Fortran 2003 i python) został stworzony przez NASA....
zyxist
# niedziela, 10 grudnia 2017, 19:39
Tak, miałem i już od dłuższego czasu planowałem go jeszcze raz napisać, w rozbudowanej i odświeżonej wersji, co też zrobiłem :). Miło powitać dawnego czytelnika, i chyba nie tylko czytelnika, jeśli dobrze rozszyfrowuję ksywę.
macwozni
# środa, 24 stycznia 2018, 12:52
Dokładnie - nie tylko czytelnika ;)
A swoją drogą brakuje mi grafiki zmieniającej się na noc jak na starym blogu.