Skocz do zawartości

Robot edukacyjny 4WD (Raspberry Pi 4 + Arduino + PID)


Pomocna odpowiedź

Napisano

Cześć!

Kilka lat temu, aby ułatwić młodej osobie naukę programowania, stworzyłem jeżdżącego robota. Zaprezentowałem już wcześniej na tym forum dwa elementy tego projektu (kontroler napędu oraz uchwyt kamery). W niniejszej publikacji chciałbym opisać i zaprezentować całą konstrukcję w obecnym kształcie.

 

Ewolucja projektu

Ze względu na założenie, że głównym celem jest nauka programowania, jako serce robota wybrałem Raspberry Pi. Prace zacząłem od zakupu Maliny w wersji 4, gotowego podwozia, 4 małych silników (bez enkoderów) oraz prostego układu sterującego.

Szybko okazało się, że RPi ma za mało pinów GPIO, aby spełnić wszystkie nasze wymagania, a podstawowe silniki nie zapewniają żadnej precyzji ruchu. Zmusiło mnie to do zmiany założeń. Do projektu dodałem Arduino jako kontroler wykonawczy oraz zakupiłem większe silniki wyposażone w enkodery kwadraturowe.

 

Specyfikacja techniczna

Ostatecznie na pokładzie robota znalazły się następujące komponenty:

  • Raspberry Pi 4 – główny kontroler (komunikacja, logika, zarządzanie urządzeniami).
  • Klon Arduino – kontroler napędu (regulator PID) oraz obsługa urządzeń on/off.
  • Podwozie 4WD – mocniejsze silniki z enkoderami o dużej rozdzielczości.
  • Moduł GPS – do pozycjonowania w terenie (na razie nie został uruchomiony; mam wątpliwości, czy jest sprawny).
  • Ultradźwiękowy czujnik odległości – do detekcji przeszkód.
  • Akcelerometr – do monitorowania orientacji i stabilności robota.
  • Kamera – zamontowana na gimbalu sterowanym w dwóch osiach (Pan/Tilt).
  • Sterownik 16 serw – oparty na układzie PCA9685.
  • Układ zasilania – dedykowany system oparty na ogniwach Li-ion.
  • Dodatki – efekty wizualne i oświetlenie robota.

IMG_4702.thumb.jpg.e5953c9da8f2661177853b490fdd0925.jpgIMG_4698.thumb.jpg.309f7292e58d1837bf0498a44a3de0d7.jpg

Główny kontroler: Raspberry Pi 4

Odpowiada za wyższą warstwę logiczną, komunikację oraz sterowanie wszystkimi peryferiami. Całe oprogramowanie systemowe zostało napisane w C++. Obecnie eksperymentuję z wykorzystaniem algorytmów sztucznej inteligencji (AI) do autonomicznej kontroli napędu.

Dużą zaletą konfiguracji jest to, że RPi służy również do programowania Arduino. Dzięki temu nie trzeba podpiąć robota bezpośrednio do komputera kablem – wgrywanie kodu na mikrokontroler odbywa się zdalnie przez Malinę, co drastycznie ułatwia pracę.

IMG_4701.thumb.jpg.76eb783a53d85a70ce4579933542b125.jpg

Napęd i sterowanie silnikami

Jako dedykowany sterownik silników zastosowałem klona Arduino. Jest tani, łatwy w programowaniu i oferuje odpowiednią liczbę pinów do obsługi enkoderów.

W celu synchronizacji i precyzyjnej kontroli prędkości kół zaimplementowałem programowy regulator PID. Arduino odbiera gotowe polecenia ruchu z Raspberry Pi poprzez magistralę I2C. W najbliższym czasie planuję podpiąć czujnik odległości bezpośrednio do Arduino, aby realizował funkcję "hardware'owego" hamulca awaryjnego (zatrzymanie napędu po wykryciu bliskiej przeszkody bez czekania na reakcję RPi).

IMG_4700.thumb.jpg.27b13c75db11a2b9b9cdef1878182b84.jpg

Zasilanie

Do zasilania całej konstrukcji wykorzystałem pakiet 4 ogniw 18650. Jako ładowarki używam zmodyfikowanego zasilacza od laptopa z odrobinę obniżonym napięciem wyjściowym.

Robot posiada dwa obwody zasilania:

  • 5V – do zasilania kontrolerów (RPi, Arduino).
  • 12V – dedykowane dla silników.

Stabilne napięcia zapewniają dwie niezależne przetwornice DC-DC.

IMG_4697.thumb.jpg.015fe78918caf0c035f2dd78ac1558c2.jpg

Oczywiście robot jest plug-in:

IMG_4705.thumb.jpg.f68bd7c3a7cd06b0cd503d31e3660db1.jpg

Rzut oka pod "maskę":

 IMG_4693.thumb.jpg.51d12d9560809ae2c2f57658b22b1dff.jpg

Sterownik serw

Aby nie obciążać mikrokontrolerów generowaniem wielu sygnałów PWM, zastosowałem zewnętrzny sterownik do 16 serw wykorzystujący układ PCA9685 (komunikujący się również po I2C). Odpowiada on m.in. za płynne sterowanie pozycją kamery w dwóch osiach oraz obsługę dodatkowych akcesoriów.

 

Efekt końcowy możecie obejrzeć tutaj

 

 

  • Lubię! 1

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...