KursyPoradnikiInspirujące DIYForum

Jetson TK1 okiem robotyka – #1 – Słowo wstępne

Jetson TK1 okiem robotyka – #1 – Słowo wstępne

Zabrakło Wam kiedyś mocy obliczeniowej na Raspberry Pi lub BeagleBone Black? Jeśli tak, to poznajcie NVidia Jetson TK1 rozwiązanie z procesorem wyposażonym w 192 rdzenie CUDA!

Jeśli nie zajmowaliście się wcześniej komputerami jednopłytkowymi, to tym bardziej jest to artykuł dla Was. Może zaczniecie właśnie od Jetsona?


Karty graficzne - tło historyczne

Jest rok 1995 - następuje koniec ery milionera Kowalskiego (denominacja złotego), po 70 latach planowania otworzono pierwszy odcinek warszawskiego metra, a na fotel prezydencki zasiada Aleksander Kwaśniewski. Podczas, gdy Polska stara się otrząsnąć z resztek komunizmu świat ogarnia cyfrowa gorączka - oto do sprzedaży wchodzi potężnie reklamowany Windows 95.

windows95

Aplikacje okienkowe zdobywają serca zarówno użytkowników domowych, jak i biurowych. Powstają również epickie trójwymiarowe gry takie jak Wolfenstein 3D, czy Doom. Interfejs graficzny staje się nieodłączną częścią każdego komputera oferując niezapomniane doznania wizualne. Jedynym, który może narzekać na taki rozwój zdarzeń jest procesor CPU, który jest odpowiedzialny za renderowanie każdego obrazu na ekranie monitora.


Termin karta graficzna po raz pierwszy użyła firma Nvidia wprowadzając w roku 1999 na rynek pierwsze układy GeForce. Były one wyspecjalizowane w renderowaniu grafiki 3D, jednak bardzo szybko środowiska akademickie zorientowały się o możliwościach ich wykorzystania w zadaniach ogólnego przeznaczenia.

KursJetson_1_1

Nvidia GeForce256 - pierwszy układ noszący zaszczytne miano GPU.

Dzisiaj, kilkanaście lat od wprowadzenia terminu GPGPU (ang. General-Purpose computing on Graphics Processing Units) stajemy przed niewyobrażalnymi możliwościami z punktu widzenia tamtej epoki. Oto na rynku dostępny jest jednopłytkowy komputer o niskim zapotrzebowaniu prądowym oferujący wydajność na poziomie 300 GFLOPS.

Przed oczami staje setki możliwych aplikacji. Ktoś pokusi się o realizację domowego serwera opartego na tym układzie, ktoś inny zbuduje drona z jetsonowym mózgiem, a jeszcze ktoś inny będzie realizował algorytmy przetwarzania obrazów na pokładzie robota mobilnego.

Te wszystkie zastosowania łączy jeden wspaniały parametr: stosunek ilości możliwych operacji na sekundę do pobieranej energii, czyli to, co robotyczne tygryski lubią najbardziej.

KursJetson_1_2

Układ NVidia Jetson TK1.

Zawartość poradnika

Niniejszy artykuł jest próbą przyjrzenia się jednoukładowemu komputerowi Jetson TK1 pod kątem zastosowania w robotyce. Pierwsza część będzie poświęcona przedstawieniu płytki od strony sprzętowej. Następnie omówiona zostanie procedura wstępnej konfiguracji systemu w taki sposób, by umożliwić dalszą wygodną pracę.

Trzecia część będzie poświęcona odpowiednio programowaniu niskiego poziomu, zaś w ostatniej postaram się omówić przykładową aplikację układu jako sterownika robota mobilnego.

NVidia Jetson TK1 - konfiguracja sprzętowa

Przed rozpoczęciem warto zapoznać się co układ ma do zaoferowania od strony sprzętowej. Postaram się przedstawić kilka najważniejszych elementów:

  • Zasilanie: komputer zasilany jest napięciem stałym 12V przez złącze typu Jack 2.1 mm. Napięcie tolerowane przez układ może zawierać się między 9.5V, a 13.5V. Pobór prądu zależny jest od liczby podłączonych peryferiów oraz obciążenia obliczeniowego układu.
  • Interfejs użytkownika: 3 przyciski POWER, RESET oraz RECOVERY. O ile pierwsze dwa są samotłumaczące się, o tyle ostatni wykorzystywany jest do przejścia w specjalny tryb pracy, podczas którego możliwe jest uaktualnienie systemu, konfiguracja bootloadera itp. Warto zaznaczyć, że komputer po podłączeniu zasilania jest domyślnie włączany i nie zachodzi potrzeba szukania przycisku POWER.
  • Dodatkowe interfejsy: port LCD, port ekranu dotykowego, UART, 3xI2C, 7xGPIO.
KursJetson_1_4

Podstawowe złącza i interfejsy układu Jetson TK1.

  • Multimedia: pełnowymiarowy port HDMI oraz złącze mikrofonowe i słuchawkowe obsługiwane układem ALC5639.
  • Komunikacja: gigabitowy port Ethernet wykorzystujący układ Realtek RTL8111GS. Komputer jest wyposażony w gniazdo mini-PCIe, które pozwala podpiąć różne karty rozszerzeń zaczynając od modułów WiFi, a kończąc na dyskach SSD. Bardzo ważne są porty USB 3.0 oraz 2.0 umieszczone na oddzielnych szynach. Dzięki temu można podłączyć dwa różne urządzenia przesyłające duże ilości danych (np. kamery RGB-D). Układ został również wyposażony w port szeregowy RS232, który jest bardzo cennym interfejsem w robotyce.
  • Pamięć: 2GB pamięci RAM typu DDR3L (L od Low Voltage) taktowanej zegarem o częstotliwości 933MHz. Należy pamiętać, że jest ona współdzielona między CPU i GPU, dlatego przy projektowaniu aplikacji należy pamiętać, że rzeczywista ilość pamięci do wykorzystania na GPU jest nieco mniejsza. Dodatkowo układ wyposażony jest w 16GB pamięci eMMC 4.51 typu storage, z czego sam system zajmuje około 2GB. Możliwe jest dołączenie karty pamięci SD/MMC oraz urządzenia pamięci masowej poprzez port SATA.
  • SoC: układ Tegra K1, w skład którego wchodzi CPU o architekturze 4+1 Cortex A15, układ GPU z rodziny Kepler posiadający 192 rdzenie CUDA, dwa procesory obrazowe oraz silnik wyświetlania grafiki na monitorach 4K.
The Jetson TK1 Development kit is designed around the revolutionary 192-core NVIDIA Tegra K1 mobile processor. Tegra K1 is based on the same NVIDIA Kepler GPU architecture used in supercomputers and High Performance Computing systems around the world. The Jetson Development Kit delivers a fully functional NVIDIA CUDA platform and includes the Board Support Package, CUDA 6, OpenGL 4.4, and the NVIDIA VisionWorks toolkit. With a complete suite of development and profiling tools, plus out-of-the-box support for cameras and other peripherals, the NVIDIA Jetson TK1 Development Kit is the ideal development platform to shape a brand new future for Embedded Computing.

Schemat blokowy procesora Tegra K1.

Przyjęta konwencja

W dalszych częściach serii często będziemy korzystać z powłoki systemu linux, dlatego warto przyjąć spójną konwencję rozróżniającą co jest komendą, a co jej wynikiem. Założę, że komendy będzie poprzedzone standardowym prefixem użytkownik@komputer:katalog$, zaś wynik programu takowego prefixu mieć nie będzie. Przykładowo zapis:

Będzie on oznaczał wpisanie komendy whoami w katalogu głównym użytkownika ubuntu na maszynie nazwanej tegra-ubuntu (Jetson), zaś następna linijka ubuntu oznaczać będzie wyjście wpisanej komendy.

Źródło grafiki: strona producenta.

Źródło grafiki: strona producenta.

Czy warto?

Oczywiście nie ma jednoznacznej odpowiedzi na to pytanie. Mogę tylko powiedzieć, że w moim niewielkim otoczeniu znam 4 duże projekty, które używają procesorów TK1/TX1, z czego w jednym z nich zrezygnowano z rozwiązania opartego na układzie FPGA na rzecz CUDA. Można? Można!

Przykładowy projekt SCOL (Super-Computer-On-Legs) zrealizowany w oparciu o Jetsona:

Nie chcesz przeoczyć kolejnych części kursu? Skorzystaj z poniższego formularza i zapisz się na powiadomienia o nowych artykułach!

Nawigacja kursu


Autor kursu: Daniel (danioto) Koguciuk
Redakcja: Damian (Treker) Szymański

cuda, embedded, jetson, kursTK1, linux, recenzja, tk1

Trwa ładowanie komentarzy...