13.12.20224 min
Redakcja Bulldogjob

Redakcja Bulldogjob

Raspberry Pi i Python w tworzeniu autonomicznych robotów

Poznaj szczegóły budowy autonomicznych robotów, dowiedz się o systemach headless i metodach zdalnego dostępu do SBC.

Raspberry Pi i Python w tworzeniu autonomicznych robotów

Niniejszy artykuł pochodzi z książki pt. „Myślenie algorytmiczne. Jak rozwiązywać problemy za pomocą algorytmów” Daniela Zingaro (Helion 2022).


Czym jest system „bez głowy” i dlaczego jest praktycznym rozwiązaniem dla robota?

System „bez głowy” (ang. headless) to komputer zaprojektowany w taki sposób, aby mógł być obsługiwany z innego komputera poprzez sieć, gdy używanie monitora, klawiatury i myszki jest niewygodne. Dostęp bez tych urządzeń jest wykorzystywany w systemach serwerowych, robotach i różnych gadżetach.

Rysunek 1 przedstawia system „z głową”, gdzie użytkownik może usiąść przed urządzeniem. Podłączenie monitora, klawiatury i myszki do robota sprawi, że nie będzie on zbyt mobilny. Możesz dodać możliwość podłączania i odłączania tych urządzeń w razie potrzeby, ale jest to niepraktyczne rozwiązanie. Są dostępne przenośne odpowiedniki takich systemów dla Raspberry Pi, ale gdy robot będzie się poruszał, trzeba albo odłączyć wszystkie urządzenia, albo sprawić, by poruszały się wraz z nim.



Na paru zawodach widziałem roboty z wbudowanym malutkim ekranem, które były sterowane za pomocą bezprzewodowej klawiatury i myszki. Jednak w tej książce będziemy budować robota „bez głowy”.



Na rysunku 2 Raspberry Pi jest zamontowane w robocie jako urządzenie „bez głowy”. Robot nie jest obciążony ekranem i klawiaturą, bo te urządzenia są obsługiwane przez inny komputer. Kod, instrukcje i informacje są wysyłane do i z Raspberry Pi z laptopa za pomocą sieci bezprzewodowej. Wiele kodów wykonuje się na robocie autonomicznie, a z poziomu komputera możemy je uruchomić lub zatrzymać. (…) Z poziomu telefonu można uruchamiać i zatrzymywać autonomiczne zachowania, podglądać status robota lub po prostu nim sterować bez potrzeby podłączania laptopa. Ten Raspberry Pi jest wolny od ekranu i klawiatury

Pomimo że zazwyczaj nie będziesz potrzebować ani ekranu, ani klawiatury, warto mieć je pod ręką, w razie gdybyś stracił kontakt z Raspberry Pi. W takiej sytuacji będziesz mógł podłączyć ekran i klawiaturę i zobaczyć, co się dzieje.


Aby mieć dostęp do naszego Raspberry Pi bez ekranu i klawiatury, będziemy korzystać z protokołu SSH (ang. secure shell). SSH daje Ci wiersz poleceń do wysyłania instrukcji oraz system przesyłania plików na Pi.

Dzięki temu, że Raspberry Pi jest „bez głowy”, może swobodnie wędrować. Ponadto przez to, że nie musi ani wozić, ani zasilać ekranu i klawiatury, pozostaje lekki. Co więcej, jest mniejszy, gdyż monitor i klawiatura są dość sporych rozmiarów. Taka konfiguracja zmusza Cię do myślenia o autonomicznym zachowaniu, ponieważ możliwość pisania poleceń dla robota będzie ograniczona.


Konfiguracja Wi-Fi na Raspberry Pi i włączenie dostępu do SSH


Teraz już wiesz, co daje Ci system bez monitora i klawiatury, zatem dokonajmy zmian na karcie micro-SD, tak aby Raspberry Pi uruchomiło się i było gotowe do użycia jako urządzenie „bez głowy”. Najpierw musimy skonfigurować Wi-Fi.

  1. Wyciągnij i ponownie włóż przygotowaną wcześniej kartę pamięci do swojego komputera, tak aby mógł on rozpoznać nowy stan dysku. 
  2. Teraz zobaczysz, że karta micro-SD pokazuje się jako dwa dyski. Jeden nosi nazwę boot. Windows spyta, czy chcesz sformatować drugi dysk. Kliknij Anuluj, gdy zostaniesz o to zapytany. Ta część karty micro-SD przechowuje system plików specyficznych dla Linuksa, których Windows nie potrafi przeczytać. 
  3. Teraz na dysku boot utwórz dwa pliki w poniżej podany sposób. Sugeruję użyć edytora przeznaczonego dla plików w formacie zwykłego tekstu, takiego jak VS Code, który daje dodatkowo możliwość wyświetlania rozszerzeń plików i tworzenia pustych plików. 
  • ssh — pusty plik bez rozszerzenia; 
  • wpa_supplicant.conf — ten plik będzie zawierać konfigurację Twojej sieci Wi-Fi, a oto jego treść:

country=GB
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
     ssid="<nazwa Twojej sieci>"
     psk="<hasło do Twojej sieci>"
}


Przeanalizujmy ten plik linijka po linijce.

Pierwsza linijka musi zawierać dwuliterowy kod kraju w standardzie ISO/IEC. Odpowiedni kod dla Twojej lokalizacji możesz znaleźć na na Wikipedii. Gdy nie będzie tej informacji, adapter Wi-Fi systemu Raspberry Pi OS zostanie wyłączony. Jestem w Wielkiej Brytanii, więc muszę podać GB.

Kolejne dwie linijki pozwalają innym narzędziom na zmianę konfiguracji.

Następne cztery linijki w pliku to dane dotyczące sieci Wi-Fi, z którą robot będzie się łączył. Zmień tekst zastępczy na dane swojej sieci Wi-Fi. Skrótem PSK (ang. Pre-Shared Key) często określa się hasło do sieci Wi-Fi. Musisz podać te same dane, których używasz, podłączając swój komputer lub telefon do sieci Wi-Fi. Sugeruję, abyś zapisał plik wpa_supplicant.conf na swoim komputerze, aby móc go wykorzystać, przygotowując następne karty pamięci.

Plik ssh nie może mieć żadnego rozszerzenia. Nie może to być plik ssh.txt lub jakiś inny wariant.

  1. Wyjmij kartę micro-SD z komputera. Pamiętaj, aby korzystać z opcji bezpiecznego usuwania sprzętu i wysuwania nośników. Dzięki temu możesz być pewny, że przed wyciągnięciem karty zapis plików został ukończony.
  2. Możesz teraz użyć karty micro-SD z tymi dwoma plikami do uruchomienia Raspberry Pi. Wsadź swoją kartę do gniazda, które znajduje się pod spodem płytki Raspberry Pi. Możesz ją umieścić w gnieździe tylko w jeden, poprawny sposób.
  3. Na koniec podłącz Raspberry Pi do zasilania za pomocą kabla micro-USB. Powinieneś widzieć migające diody jako znak, że Raspberry Pi się uruchamia.


Dla Raspberry Pi potrzebujesz zasilania, które jest w stanie dostarczyć przynajmniej 2,1 A.

Twoje Raspberry Pi „bez głowy” zostało właśnie skonfigurowane. Dzięki temu zrobiliśmy duży krok w stronę mobilności.


Artykuł stanowi fragment książki pt. „Jak zaprogramować robota. Zastosowanie Raspberry Pi i Pythona w tworzeniu autonomicznych robotów. Wydanie II” Danny Staple (Helion 2022).

<p>Loading...</p>