KursyPoradnikiInspirujące DIYForum

Jetson TK1 okiem robotyka – #2 – Konfiguracja platformy

Jetson TK1 okiem robotyka – #2 – Konfiguracja platformy

Tematem tej części jest podstawowa konfiguracja naszej platformy. Aby jeździć na rowerze trzeba dobrze przygotować bicykl i to jest właśnie część poświęcona smarowaniu łańcuchów i pompowaniu kół, tyle że w robotyce.

Zaczniemy od rozpakowania Jetsona z pudełka, a zakończymy na ustawieniu wygodnego dostępu do niego z poziomu komputera domowego.


Jetson TK1 - pierwsze uruchomienie

Układ jest dostarczony z wgranym do pamięci flash systemem operacyjnym Linux4Tegra (L4T), który jest specjalnie skonfigurowaną dystrybucją Ubuntu w wersji 14.04. Wynika z tego, że tuż po wypakowaniu z pudełka powinniśmy być w stanie go włączyć.

Jedynym problemem jest fakt, że standardowa zawartość pudełka obejmuje wtyczkę zasilacza obowiązującą na rynku amerykańskim, dlatego przed pierwszym użyciem należy albo wybrać się do pobliskiego sklepu elektronicznego, albo użyć kabla z komputera stacjonarnego.

KursJetson_2_1

Podstawowa konfiguracja wymagana do wygodnej pracy z układem (przynajmniej do czasu ustawienia dostępu ssh)

Jesteśmy gotowi do włączenia komputera. Do celów demonstracyjnych proponuję na początek podłączyć monitor poprzez interfejs HDMI, myszkę, klawiaturę, ethernet oraz oczywiście zasilanie.

Taka konfiguracja pozwoli nam lepiej poznać co dostajemy razem z płytką. Po podłączeniu zasilania system wstaje do powłoki tekstowej linuxa i możemy się zalogować jako:

  • użytkownik: ubuntu
  • hasło: ubuntu

Mamy teraz dwie opcje przystosowania urządzenia do wygodnej pracy. Pierwsza z nich obejmuje pracę na fabrycznie wgranym systemie z jądrem w wersji R19 – zaletą tego rozwiązania jest natychmiastowa gotowość do pracy, zaś wadą brak wgranych narzędzi programistycznych.

Druga opcja polega na wgraniu najnowszej wersji systemu wraz z wszystkimi najważniejszymi narzędziami programistycznymi, co będzie się wiązało z dodatkową godziną poświęconą płytce, jednak zysk jest oczywisty i to jest droga, którą proponuję podążyć.

Opcja pierwsza - L4T R19

Na obecnym etapie L4T nie ma zainstalowanych sterowników karty graficznej. Dlatego, aby w pełni cieszyć się powłoką graficzną należy odpalić przygotowany przez firmę NVidia skrypt poprzez:

Powyższy skrypt instaluje odpowiednią wersję biblioteki libglx.so i wraz z każdą próbą aktualizacji pakietów systemu będzie on nadpisywany. Aby temu zapobiec należy poinformować apt-get by zatrzymał uaktualnianie tego pakietu poprzez wydanie komendy:

Instalacja zajmuje kilka sekund, a po restarcie można cieszyć się powłoką graficzną!

KursJetson_2_2

Jetson TK1 z bliska.

Opcja druga - L4T R21

Aby nie pozostawać w tyle za wciąż rozwijanym oprogramowaniem należy sprawdzić wersję systemu poprzez komendę:

Czego wynikiem powinno być coś w postaci:

Co oznacza, że posiadana przez nas wersja kernela to R19 i można ją uaktualnić do wersji R21. Aby to zrobić można albo dokonać operacja przeprogramowania płytki Jetson, albo przeprowadzić instalację toolkitu o nazwie JetPack, który jest paczką zbiorczą najważniejszych narzędzi przydatnych do programowania na naszej platformie:

  • zestaw narzędzi CUDA dla urządzenia HOST (komputer PC),
  • zestaw narzędzi CUDA 6.0 dla układu Jetson TK1,
  • OpenCV4Tegra, czyli biblioteka OpenCV przystosowana dla układu Jetson,
  • cuDNN, czyli biblioteka do Deep Learning'u na GPU,
  • VisionWorks, czyli zbiór bibliotek do przetwarzania obrazu na GPU.

Aby tego dokonać potrzebujemy dostęp do innego komputera z systemem linux (będziemy go nazywać hostem), do którego podłączamy układ Jetson za pomocą przejściówki microUSB/USB.

Następnie instalacja pakietu będzie przebiegać z poziomu urządzenia typu host. Na początku ściągamy najnowszą wersję pakietu JetPack (podczas pisania artykułu była to wersja 2.0). Sama instalacja jest bardzo prosta i wystarczy ściągniętemu plikowi nadać prawa wykonywania poprzez komendę (w przypadku mojego komputera):


Aplikacja będzie wymagała kilkukrotnej interwencji w postaci wpisania hasła oraz zaakceptowania regulaminów, więc najlepiej jest zrobić sobie herbatę i nie odchodzić od komputera.

Będzie się to przejawiać tym, że po instalacji JetPacka na komputerze PC uaktualnienie pakietów będzie mogło skutkować błędem podobnym do następującego:

Aby się upewnić, że dodana została obca architektura można wywołać polecenie:

Aby usunąć niepotrzebną już architekturę armhf należy po pierwsze odinstalować wszystkie pakiety obcej architektury. Można tego dokonać poprzez polecenie:

A następnie już samą architekturę usuwa się poleceniem:

Teraz już bez błędów można uaktualniać pakiety zainstalowane na hoście dodatkowo ciesząc się kernelem R21 na Jetsonie:

Pierwsze kroki z systemem L4T

Pierwszą czynnością, jaką należy zrobić to zainstalować paczkę o nazwie "bash-completion" oraz "command-not-found". Życie użytkownika linuxa bez możliwości uzupełniania składni byłoby nic nie wartą egzystencją...

Oraz kilka pakietów, z których będziemy korzystać w ramach tego artykułu:

Później warto usunąć następujący pakiet (aby Qtcreator w działał poprawnie):

Warto również dodać repozytorium Universe:

Teraz już można uaktualnić wszystkie pakiety naszego linuksa:

Zrobione! Możemy teraz pełnoprawnie używać linuxa na naszym Jetsonie! Na koniec warto jeszcze dobrze ustawić wszystkie zmienne środowiskowe związanych z ustawieniami regionalnymi:

Konfiguracja karty WiFi (Intel 7260)

Docelowo Jetson ma spełniać rolę sterownika robota mobilnego, dlatego warto zadbać o połączenie WiFi. Z tej strony wyczytałem, że najlepszym wyborem będzie karta Intel DB WIRELESS-AC 7260 2x2 AC+BT HMC. Trochę boli fakt, że kosztuje ona ponad 100 złotych.

Dodatkowo, aby w pełni wykorzystać jej potencjał należy dokupić anteny (oraz najprawdopodobniej kabel-przejściówkę ze złącza typu u.fl na rp-sma), co będzie kosztować ponad 200 złotych. Pocieszam się faktem, że docelowo chcę by robot był wystarczająco mobilny, by mógł pojeździć po kilku pomieszczeniach nie tracąc sygnału z routerem.

KursJetson_2_3

Zdjęcie karty Intel 7260 wraz z kablem/przejściówką u.fl <->rp-sma i antenkami.

Karta nie ma domyślnie wgranych sterowników w L4T (kernel jest okrojony w celu przyspieszenia działania), jednak instalacja jest prosta. Na początku podłączamy kartę i włączamy system, po czym sprawdzamy komunikaty startowe systemu związane ze sterownikami kart sieciowych Intel:

Brak sterowników! Instalujemy w takim razie sterowniki za pomocą polecenia:

Zestawiony układ wraz z zainstalowaną kartą WiFi Intel 7260.

Zestawiony układ wraz z zainstalowaną kartą WiFi Intel 7260.

Po restarcie systemu i sprawdzeniu komunikatów startowych pojawi się informacja podobna do tej:

Możemy się cieszyć nowym urządzeniem sieciowym: wlan0. Spróbujmy w takim razie sprawdzić dostępne sieci:

Brak dostępnych sieci! Jest to oczywiście wina braku anteny, o której opowiadałem na początku rozdziału, dlatego należy podłączyć antenki i ponownie wyszukać dostępne sieci WiFi.

Spróbujemy się teraz połączyć z siecią o nazwie szarlotka o haśle zbitasmietana:

Sprawdzamy poprawność połaczenia:

Teraz możemy się cieszyć skonfigurowaną siecią WiFi. Nie musimy się martwić o połączenie. Przy następnym starcie systemu network manager sam próbuje znaleźć zapamiętane sieci WiFi i się do nich podłączyć.

KursJetson_2_4

Zestawiony układ wraz z zainstalowaną kartą WiFi Intel 7260.

Wygodny zdalny dostęp do Jetson TK1

W ramach tej sekcji omówimy kilka zabiegów usprawniających zdalny dostęp do komputera. Nie znajdziemy tutaj nic robotycznego, tylko czyste sztuczki informatyczne.

Pierwsza rzecz, to ustawienie przydzielania stałego IP dla Jetsona w routerze. W tym celu należy zalogować się do routera i w zakładce DHCP > Address Reservation wypełnić odpowiednie dane pamiętając, że adres mac karty sieciowej można sprawdzić poprzez polecenie ifconfig w części HWaddr. Następnie już na komputerze PC, z którego będziemy łączyć się z Jetsonem możemy edytować plik /etc/hosts, wedle schematu:

Mój komputer nazywa się monster (co widać było już wcześniej). Mam dodane 4 komputery (raspberrypi, atom, laptop, jetson). Dzięki temu, zamiast pamiętać IP komputerka będziemy mogli używać przy łączeniu się przez ssh nazwy, która coś dla nas znaczy - w tym przypadku jetson.

Nawet jeżeli zmieniliśmy hasło użytkownika, to opieranie pewności bezpieczeństwa naszego komputerka o trudność złamania hasła użytkownika jest lekkomyślnością (lub naiwnością), dlatego proponuję wyłączyć możliwość logowania przez ssh z wykorzystaniem hasła.

Lepiej włączyć logowanie kluczem ssh. W tym celu edytujemy plik /etc/ssh/sshd_config w Jetsonie zmieniając wartość dwóch linijek (ewentualnie odkomentowując je):

Teraz należy wygenerować klucz ssh na naszej maszynie PC. Można to zrealizować poleceniem:

Jeżeli już został wygenerowany klucz to kopiujemy zawartość pliku ~/.ssh/id_dsa.pub z maszyny PC do naszego komputerka do pliku ~/.ssh/authorized_keys. Voil'a! Teraz już nikt nie połączy sie z robotem bez Twojego zezwolenia!


To jeszcze nie wszystko - aby zmaksymalizować przyjemność łączenia się z robotem (będziemy to robić setki razy!) można na komputerze PC dodać do pliku ~/.bashrc kilka aliasów:

Dzięki czemu wpisując w terminalu polecenie jetson połączymy się z naszym komputerkiem po ssh w zwykłym trybie, zaś wpisując jetsonX połączymy się w trybie przekazywania aplikacji w trybie graficznych (można wygodnie odpalić qtcreator!).

Wygodniej już się nie da - nic tylko łączyć się zdalnie z naszym komputerkiem!

KursJetson_2_6

Gotowe przygotowane stanowisko do dalszej pracy.

Podsumowanie

Udało nam się przygotować platformę Jetson TK1 do dalszej pracy. Nie było to skomplikowane, jednak wymagało pewnych nieoczywistych operacji, których szukanie zabrało mi sporo czasu. Mam nadzieję, że zaoszczędzicie dzięki nim odrobinę swojego, który będziecie mogli wykorzystać tam, gdzie się o wiele bardziej przyda, czyli w części trzeciej.

Nawigacja kursu


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

cuda, embedded, jetson, linux, recenzja, tk1

Trwa ładowanie komentarzy...