Lądowanie Curiosity to była betka. Mars 2020 pokaże, czym jest precyzja
W lipcu przyszłego roku zostanie wystrzelona misja Mars 2020. Po trwającej pół roku podróży lądownik z ważącym 1 tonę łazikiem rozpocznie sekwencję lądowania na dnie dawnego jeziora. Na miejsce lądowania wybrano Krater Jezero.
Lądowanie będzie najbardziej ryzykownym i najmniej przewidywalnym momentem całej misji. Ci, którzy pamiętają słynne „7 minut horroru” podczas lądowania łazika Curiosity mogą wzruszyć ramionami sądząc, że NASA po prostu powtórzy to, co zrobiła w 2012 roku. Jednak pomiędzy oboma lądowaniami jest pewna zasadnicza różnica. Curiosity lądował w bezpiecznym płaskim terenie Krateru Gale. Mars 2020 wyląduje w miejscu znacznie trudniejszym, pełnym głazów i innych niebezpieczeństw.
Aby zwiększyć powodzenie przyszłorocznego lądowania misję Mars 2020 wyposażono w technologię Terrain Relative Navigation, czyli autopilota. Autopilot ten to efekt 15 lat pracy inżyniera Andrew Johnsona z Jet Propulsion Laboratory. Specjalista pracował przez 15 lat nad urządzeniem, które będzie potrzebne przez... 10 sekund. Jednak te 10 sekund zdecydują o tym, czy lądowanie na Marsie się uda czy też nie, mówi Johnson.
Gdy łazik znajdzie się na wysokości 4,2 kilometra nad powierzchnią Marsa i będzie opadał na spadochronach, jego komputer pokładowy zacznie szybko wykonywać fotografie powierzchni Czerwonej Planety. Rozdzielczość każdego zdjęcia będzie wynosiła 6 metrów na piksel, a system lądowania będzie je analizował, szukając głazów, szczelin, kraterów, klifów i innych przeszkód. Fotografie te zostaną też porównane ze zdjęciami wykonanymi wcześniej z orbity. Gdy komputer pokładowy zidentyfikuje 15 charakterystycznych cech terenu, przełączy swój system wizyjny na większą rozdzielczość.
Na całą opisaną powyżej sekwencję będzie tylko 10 sekund. W tym czasie muszą zostać wykonane zdjęcia, ma być przeprowadzona ich analiza, komputer dokona oceny miejsca lądowania, porówna przewidywane miejsce lądowania z tym, wybranym na podstawie zdjęć z orbity i zdecyduje, czy należy zmieć tor lotu. Wszystko w ciągu wspomnianych 10 sekund, gdyż po tym, gdy od lądownika oddzieli się osłona termiczna nie będzie możliwe dokonywanie żadnych korekt lotu.
To wszystko może wyglądać na niepotrzebne ryzyko i komplikowanie sekwencji lądowania, ale ma swoje głębokie uzasadnienie. O ile bowiem wcześniej łazik był w stanie określić swoje miejsce lądowania z dokładnością do 3000 metrów, nowa technologia ma pozwolić na zmniejszenie marginesu błędu do zaledwie 40 metrów. I NASA nie chodzi tutaj o bicie rekordów. Tylko bowiem taka technologia pozwala nam na lądowania w tak interesujących z naukowego punktu widzenia miejscach, jak Krater Jezero, mówi Johnson.
NASA szacuje, że bez opracowanego przez Johnsona systemu wizyjnego szansa na udane lądowanie Jezero wynosiłaby 85%. Dzięki Terrain Relative Navigation wrasta ona do 99%.
Skąd takie zaufanie do systemu, którego nie można było nigdy wcześniej przetestować w miejscu, w którym będzie używany? Wszystko dzięki wyczerpującym testom, jakie system przechodził w kwietniu i maju bieżącego roku na Pustyni Mojave, w tym w Dolinie Śmierci. Johnson i jego koledzy odbyli ponad 600 lotów śmigłowcem na wyskości do 5 kilometrów nad Ziemią. Do śmigłowca był przyczepiony marsjański system wizyjny, którego zadaniem było wykonywanie fotografii, ich analiza, porównywanie, znalezienie miejsca do lądowania, ocena ryzyka i przeprowadzenie symulowanego lądowania.
Komentarze (18)
Ergo Sum, 8 października 2019, 17:57
hmmm... czyli mam rozumieć że testowali to tylko w w jednym miejscu ??????!!!!!
Jajcenty, 8 października 2019, 19:00
Kurcze wybaczcie mi, albowiem nie wiem co piszę, ale dla mnie to robi wrażenie czegoś w rodzaju projektu na zaliczenie - góra dwa tygodnie dla studenta. Jeszcze 5-10 lat temu, zgoda, to dość wymagające zadanie, ale teraz? Absolutnie każdy może sobie wytrenować CNN, te wszystkie SSD, YOLO rozpoznają obiekty niemalże w czasie rzeczywistym. Nie chwaląc się udaje mi się mierzyć odległości w odkuwce na przenośniku w tempie 3-7 fps, a jest to zadanie ciężkie obliczeniowo. Reasumując, jak ślepy koń w wielkiej Pardubickiej, nie widzę przeszkód?
Ten filmik nie zmienia mojego zdziwienia. Duża zaleta, że to rozwiązanie dojrzałe, wygrzane i ... wojskowe
darekp, 8 października 2019, 20:54
Pustynia Mojave ma 65 tys. km kwadratowych powierzchni - tyle co województwa mazowieckie i wielkopolskie razem wzięte. Chyba ujdzie, chociaż ja przez ostrożność też wolałbym pewnie testować w kilku różnych krainach geograficznych. Ale może rzeczywiście oni mają dostateczne doświadczenie, żeby tak wybrać.
Na AI się nie znam, ale gdy się ryzykuje sprzętem wartym miliony/miliardy to IMHO co najmniej 1-2 lata należałoby by przeznaczyć na same testy oprogramowania.
KONTO USUNIĘTE, 8 października 2019, 21:25
Inteligencję pochwalić, ale sprytu ani, ani. Nie to, co u tego:
Jak w kawale:
Przychodzi młody Ferenstin do ojca: tato zamknąłem sprawę Goldbluma przeciw Blumenfeldowi, z którą Ty męczyłeś się 15 lat. Na co ojciec: Bożżższe, dzięki tej sprawie wybudowałem dom i opłaciłem Twoje studia, a Ty zacząłeś karierę od fuszerki.
Jajcenty, 8 października 2019, 21:35
Te dwa lata testów da się skrócić zwiekszając liczbę rdzeni. Można jakoś tak zrobić żeby NN konkurowały ze sobą w wielu wątkach i wychodzą takie przerażające AI - jak dołączą do tego układy wykonawcze z Boston Dynamics, to możemy powoli kopać sobie dołek.
Też tak czuję, może nie tak celowo przeciągnięte, pomysł powstał 15 lat temu był rozwijany do tej pory w innym celu niż lądowanie na Marsie, ale aktualna implementacja jest na pewno nowsza
cyjanobakteria, 8 października 2019, 22:21
Nie jestem ekspertem w dziedzinie AI, ale może uznali, że Mojave najbardziej przypomina powierzchnię Marsa i jego geologiczne formacje. Zdaje się, że testują tam sporo sprzętu NASA. Jeżeli tak, to jakie ma znaczenie testowanie w innych warunkach? Najbardziej miarodajny będzie test na Marsie ;-)
W artykule jest mowa, że wykonali 600 lotów śmigłowcem. Zakładam, że przeprowadzali kilkaset udanych lądowań w ich trakcje. Jak podają pewność wzrosła z 85% do 99%, a zysk z kolejnych testów maleje i najwyraźniej trudno było wycisnąć więcej.
Czekam z niecierpliwością na kolejne video, 10 sekund horroru ;-)
Poprzednie to jest jedno z moich ulubionych klipów na YT i widziałem je setki razy ;-)
radar, 12 października 2019, 01:52
CNN to pomału będzie przeszłość, za bardzo podatne są na ataki.
Mam wrażenie, że nie chodzi tylko o trenowanie sieci, ale o testy całości oprogramowania, sieć to zaledwie czątka, ważna, ale niewielka.
Jajcenty, 12 października 2019, 08:22
Nie sądzę by Marsjanie o tym wiedzieli Z tymi NN to tak sobie, na szybko, pojechałem. Nie wiem czy to jest zadanie dla sieci. Może wystarczy proste rozpoznawanie obrazu? Mamy zdjęcia i czas, żeby wyuczyć NN tu na Ziemi? Jeśłi tak, to ja bym użył CNN maksymalnie przetrenowanej co da bardzo dużą pewność rozpoznania. A może musimy cyknąć parę fotek z orbity i mamy minutę na analizę i decyzję oraz mamy mało cykli CPU i mało prądu? Łatwo się ocenia cudzy soft , ale ponieważ zajmuję się rozpozawaniem obrazu, to na podstawie mojego (przeciętnego) doświadczenia ten kosztorys wydał mi się przesadzony.
Na pewno tak, ale @darekp odniósł się do samego oprogramowania, a biorąc pod uwagę koszt sprzętu i liczbę potrzebnych testów, to emulowane środowisko wydaje się najlepszym rozwiązaniem. Od lądowania na Marsie do inżynierii programowania i dobrych praktyk ITIL BTW jest update ITIL do 4.0 od lutego, jakoś przeszło bez echa w światku IT
radar, 12 października 2019, 10:01
Oj tam oj tam:) To była uwaga ogólna (chociaż swoją drogą ciekawe czy jakiś nietypowy układ wzorów na głazach nie mógł by sprawić kłopotów? )
To mnie właśnie ciekawi, wydawało mi się, że zdjęć trochę mamy, ale może rozdzielczość za słaba? No i zawsze mnie dziwi czy te bezwładnościowe czujniki nie są wystarczająco dokładne skoro na Ziemi naprowadza się nimi rakiety (wojskowe)?
O proszę... pochwal się gdzie i w jakim celu?
Trochę tak, ale pewnie ostateczne osiągnięcia były w ostatnich kilku latach. Deep Learning w 2004 był słaby, potem był 2006, a teraz nvidia pewnie mogła by im dostarczyć małą kość z 1000 czy 2000 corami CUDA.
Aż tak wiele się nie zmieniło
Jajcenty, 12 października 2019, 11:30
W sumie nic ciekawego, przemysł nasycił się kamerami i teraz czas coś z tego wyciągnąć. Większość zagadnień jest opanowana/ogarnięta przez dostawców CCTV, wykrywanie ruchu, ognia, numery rejestracyjne samochodów, wykrywanie ludzi w strefach zagrożenia - takie po prostu wdrażamy, ale zostaje trochę drobnicy dla rzemieślników. Robiłem pomiary detalu na taśmie, wykrywanie uszkodzeń mechanicznych przenośnika, temperatury łożysk/silników do predictive maintenance. Oczywiście Python,Numpy,OpenCV rules!
Próbowałem programowania funkcyjnego chyba więcej razy niż rzucałem palenie i nic. Nie moja bajka. I chyba nie tylko nie moja, sądząc po popularności tego podejścia. Nawet laski na to nie lecą.
No i masz wyjaśnienie. Jak do projektu potrzebujesz geniuszy, to masz bardzo drogie projekty. Nie wspominając, że geniusze są znani ze swej skłoności do współpracy i wszyscy się garną by razem z nimi robić soft i grzać się cieple ich ego
Jajcenty, 13 października 2019, 11:53
Żeby język się upowszechnił potrzebny jest ekosystem dla niego. Haskel to lata 90 ubiegłego stulecia, jak nie wybił się do tej pory... A jak będę potrzebował czegoś szybkiego, to zawsze pozostaje c/c++. Czy może być coś szybszego od asemblera?
cyjanobakteria, 13 października 2019, 13:34
Dokładnie. Spotykałem się w pracy z miłośnikiem Haskella. Napisał w nim jeden raport, który był chyba uruchomiony kilkukrotnie. Nie orientuję się dokładnie, może nawet chodził gdzieś na back-endzie przez kilka miesięcy, ale prawie nikt o nim nie słyszał i nikt nigdy nie napisał nic innego w Haskellu w tej firmie. Był to mały dodatek do projektu, więc nie ma to znaczenia. Deweloper się czegoś nauczył, a kod działał poprawnie, więc wszyscy byli zadowoleni ;-)
Klasyka XKCD odnośnie Haskella:
https://www.explainxkcd.com/wiki/index.php/1312:_Haskell
Z tego co się orientuję, programowanie funkcjonalne przechodzi mały renesans przynajmniej w świecie JS. Widziałem sporo artykułów na temat w ciągu ostatnich kilku lat.
darekp, 13 października 2019, 14:21
Toteż pisałem o 1-2 latach testów i (mea culpa, że nie uściśliłem;) ) miałem na myśli realne testy w rodzaju tych 600 lotów z helikopterem, a nie jakieś testowanie sieci neuronowej w wirtualnym środowisku software'owym;) Zresztą w tym przypadku nie wystarczy sama sieć do rozpoznania obrazu, ale coś musi sterować silniczkami rakietowymi itp. Plus interakcję z realna przyrodą na zewnątrz (a nie jakimiś ściśle określonymi np. jakąś specyfikacją warunkami). Ja bym długo testował... I bardzo dokładnie... Nawet w wypadku, gdyby rozpoznawanie obrazu nie było problemem.
To się pochwalę, że mam za sobą małą stronkę (ale dla całkiem poważnego klienta) napisaną w języku Elm Jak się sprawdzi w praktyce, to dopiero się okaże, bo jeszcze nie wdrożona, ale jak na razie mam chęć dalej używać Elma zamiast Reacta (o Angularze nie wspominając)
P.S. A kompilator Elma BTW jest napisany w Haskellu.
cyjanobakteria, 13 października 2019, 15:56
Angular zbiera dużo negatywnych opinii, ale A2 i dalsze wersje to porządny framework. Można nie lubić TypeScript, ale mainstreamowe IDE się bardzo dobrze integrują i można się nauczyć innego podejścia w locie, które pomaga znaleźć błędy zanim kod trafi na produkcję. Ma bardzo dobre CLI i przypomina mi dojrzałe backendowe frameworki jak Ruby On Rail i Django. Szkoda, że przeskok z A1 na A2 nie jest możliwy bez przepisania aplikacji, to na pewno nie pomogło A2 zyskać na popularności.
darekp, 13 października 2019, 20:24
Mi się Angular nie podoba, jakiś taki zbyt sztuczny, zagmatwany, takie mam wrażenie, TypeScript mi dość przypadł do gustu. Zresztą jeśli chodzi o Angulara (przynajmniej jego najnowsze wersje), to chyba bez biblioteki RxJS niewiele się w nim da zrobić, a RxJS to trochę takie wprowadzanie cichaczem funkcyjności w gruncie rzeczy?
Ale nie mówię (ani nie wierzę), że jest jakaś "jedynie słuszna opcja". Tam gdzie trzeba zoptymalizować jakiś algorytm, języki imperatywne pewnie są lepsze (można wielokrotnie nadpisywać ten sam kawałek pamięci). Sam "od zawsze" programowałem w C++ i C# (trochę też w Javie), ale coraz częściej piszę np. klasy z samymi metodami statycznymi, bo to mi się sprawdza najbardziej i to bierze się chyba z tego, że u nas w pracy nie ma dużej presji na algorytmy i struktury danych, robi się przetwarzanie dokumentów znajdujących się w bazie danych albo formularze do ich edycji i ważne jest, żeby sprawnie zaimplementować jakąś logikę biznesową. Jeśli coś się optymalizuje, to zapytania na bazie danych. Wymagania się często zmieniają. W takiej sytuacji pożytek z obiektów jest mały, bardziej sprawdzają się zbiory małych funkcji i powstaje wrażenie, że jednak te języki funkcyjne mogą być bardziej przydatne. Co dopiero zaczynam sprawdzać:)
Jajcenty, 13 października 2019, 20:50
Witam po ciemnej stronie mocy! Boli mnie za każdym kiedy piszę coś w rodzaju Document document = new Document(); Nie dość, że bolesna liczba powtórzeń 'document', to jeszcze mi sterta rośnie.
darekp, 13 października 2019, 21:04
Mnie też I jeszcze korci, żeby wykasować ten średnik na końcu;) I jeszcze albo słowo kluczowe new, albo te nawiasy po Dokument (obu naraz chyba się się nie da, chociaż głowy nie daję;))
P.S. Bo oczywiście pierwsze wystąpienie "Document" można już od dawna zastąpić jakimś let/var/val itp. (wszędzie oprócz Javy)
cyjanobakteria, 13 października 2019, 22:50
Kilka lat temu zrobiłem projekt w AngularJS (1.x) i przeskoczyłem w bezpieczeństwo IT. Teraz trochę nadrobiłem z ciekawości i z perspektywy czasu mogę powiedzieć, że AngularJS (1.x) to był dość toporny framework. Jakby ktoś zapytał, co w nim lubiłem, to nie wiem, co bym odpowiedział Za to jestem pod wrażeniem Angular (2+), integracją różnych IDE (VS, Webstorm) z TypeScript i CLI. Po drodze zmieniło się jednak podejście i mainstreamowe frameworki są teraz oparte na komponentach.
Niewiele wiem na temat RxJS, ale zrobiłem kilka tutoriali z małymi aplikacjami w oparciu o nowy Angular i nie musiałem z tego korzystać, ale nie wykluczam, że w większym projekcie jest to przydatne. Zerkam też na React i to ciekawa biblioteka, dużo lżejsza, ale z drugiej strony wygląda na to, że trzeba korzystać z dodatków. Trochę mnie męczy to mieszanie HTML i JS, ale podejrzewam, że można to rozdzielić.