Jak zaprogramowano sondę Curiosity
- Adam Jadczak,
- 16.08.2012, godz. 10:11
Rozmowa z Markiem Tuszyńskim, kierownikiem zespołu tworzącego oprogramowanie dla sondy Curiosity w Jet Propulsion Laboratory, która w listopadzie 2011 r. wystartowała z Ziemi, a 6 sierpnia 2012 r. wylądowała na Marsie.
Czym dokładnie zajmował się Pana zespół w trakcie przygotowań do misji sondy Curiosity?
Moje stanowisko to Project Delivery Manager. Tworzyliśmy oprogramowania sterujące sondą zarówno podczas lotu i lądowania, jak i w trakcie misji na Marsie. Nasze oprogramowanie kieruje wszystkimi urządzeniami sondy - silnikami poruszającymi nią samą i poszczególnymi jej elementami, radarami, systemami multimedialnymi i tymi odpowiedzialnymi za komunikację z Ziemią. Pierwotnie sonda Curiosity miała wylecieć dwa lata wcześniej. Na czas nie było jednak gotowych wiele elementów, w tym oprogramowanie. W 2009 r. powierzono mi zadanie dokończenia tworzenia systemów sondy. Zaczęliśmy praktycznie od nowa - przepisaliśmy oprogramowanie, stworzyliśmy nowe procedury, od nowa opisane zostały też wymagania systemowe.
Jak powstaje oprogramowanie dla sondy, która ma wylądować na innej planecie? Na co musieli Państwo zwrócić uwagę?
Zobacz również:
System fault protection w Curiosity ma zapobiegać problemom związanym z uszkodzeniami mechanicznymi. Wiele elementów sondy odpowiada za badanie jej samej - sprawdzanie, czy wszystko działa poprawnie. Jeśli coś jest nie tak, system sam decyduje jaki jest prawdopodobny problem uszkodzenia i jak go rozwiązać. Może np. wymienić jedną z części, albo wyłączyć uszkodzony moduł do czasu połączenia z Ziemią.
Po napisaniu każdego z modułów systemu Curiosity, w kolejnym etapie sprawdzaliśmy to, co powstało. Osoby tworzące jeden z elementów oprogramowania Curiosity sprawdzały pracę innych kolegów i odwrotnie. Do testów wykorzystaliśmy także oprogramowanie klasy SCA (Static Code Analysis), znacznie bardziej zaawansowane od kompilatorów kodu. Po tym etapie łączyliśmy wszystkie moduły w gotowe systemy. Kolejny test był przeprowadzony albo na docelowym urządzeniu, albo w środowisku wirtualnym. W ostatnim etapie zainstalowaliśmy oprogramowanie na poszczególnych elementach sondy Curiosity, a później złożyliśmy całą sondę i przetestowaliśmy różne scenariusze, które mogą ją spotkać w trakcie misji.
Dlaczego po wylądowaniu przez 20 godzin wgrywano nowe oprogramowanie dla Curiosity? Jak często będzie aktualizowane oprogramowanie sondy w czasie jej ponad dwuletniej misji?
154 modułów oprogramowania zarządzającego sondą powstało w ciągu trzech lat pracy nad nią. To jeden z największych projektów w Jet Propulsion Laboratory. Jest ich tak dużo, bo tak wiele instrumentów ma na pokładzie Curiosity. Tak naprawdę można powiedzieć, że składają się na nią trzy sondy: na czas przelotu, lądowania i do badania Marsa.
750 tys. linii kodu zostało napisanych przez programistów NASA. Marek Tuszyński liczy tylko te, napisane ręcznie, bez linii kodu z komentarzami, czy generowanych automatycznie.
Język programowania C wykorzystano do stworzenia oprogramowania kierującego sondą.
BAE RAD 750 - to komputer sterujący Curiosity ze zintegrowana płytą główną z procesorem Power PC 133 MHz, 256 kB pamięci podręcznej EEPROM, 256 MB DRAM pamięci operacyjnej oraz 2 GB pamięci Flash.
VxWorks firmy Wind River - to system operacyjny sondy.
40 Mb/s - to docelowa prędkość transmisji danych z Ziemią. Po wylądowaniu było to 5 Mb/s.
W czasie misji tej sondy ogranicza nas też pojemność pamięci. W ramach uaktualnienia oprogramowania wykasowaliśmy więc zbędne już elementy, a załadowaliśmy dodatkowe moduły odpowiedzialne za nawigację po Czerwonej Planecie, czy unikanie przeszkód, na które może napotkać Curiosity. Wymagają one sporo miejsca. Do tego celu można więc wykorzystać zwolnioną pamięć.
Kiedy więc Curiosity ruszy z miejsca?
Za około tydzień. Na początek na krótkim dystansie, aby skalibrować moduł odpowiedzialny za ruch.