Zbudowałem robota z zestawu Makeblock o nazwie Rolling Tank.
Przetestowałem też przewroty.
Zbudowałem robota z zestawu Makeblock o nazwie Rolling Tank.
Napiszę, czego użyłem do tej pory:
Hardware:
- Lego Mindstorms Robot Inventor (51515) - zestaw klocków z czujnikami, silnikami i inteligentną kostką (tzw. Hubem) - już wycofano ze sprzedaży
Tutaj jest gotowa instrukcja budowy pojazdu. Pojazd ma podpięte 2 silniki. Jeden napędza tylne koła, drugi skręca przednimi kołami. Opcjonalnie można zamontować czujnik koloru z przodu do oświetlania linii.
- Płytka LMS-ESP32 - sprzedawana w sklepie Anton's Mindstorms płytka z mikrokontrolerem ESP32 - pomost pomiędzy elementami lego, a inną nie-legową elektroniką - ja mam wersję 1.0 - wersję 2.0 można kupić tutaj, jeszcze trzeba wgrać firmware tutaj
- Kamera AI HuskyLens - kamera z gotowymi algorytmami między innymi z rozpoznawaniem linii, działa również z Arduino, niedawno wyszła wersja 2.0 - ja swoją kupiłem tutaj (jest to wersja 1)
- Powerbank - 5V/1A do zasilania samej kamery - ja użyłem modelu TP-Link TL-PB2600 (2600 mAh)
Software:
- biblioteka Pybricks - do obsługi Huba
- biblioteka PyHuskyLens - do obsługi kamery, ja użyłem tej, obsługuje HuskyLens 1 i 2, zarówno Robot Inventora jak i Spike Prime
Tutaj jest tutorial z którego najwięcej korzystałem.
Ostatni filmik z serii. Dodałem z przodu oświetlenie i testowałem jazdę po ciemku.
Poprawiłem jazdę robota. Przesunąłem kamerkę bliżej środka i ustawiłem bardziej poziomo. Teraz pojazd bierze linię między kołami.
Przerobiłem pojazd. Zamiast czujnika koloru ma teraz kamerę. Dodałem też powerbank. Dzięki kamerze pojazd śledzi narysowaną flamastrem linię.
Hardware:
- Kamera AI HuskyLens
- Płytka LMS-ESP32
- Lego Mindstorms Robot Inventor
- Powerbank
Software:
- biblioteka PyBricks
- biblioteka PyHuskyLens
Udało mi się poprawić jazdę Hot Roda. W regulatorze PID dodałem człon różniczkujący (D), dzięki czemu zniknęły oscylacje skręcania kół przy jeździe na wprost.
Zbudowałem pojazd typu Line Follower na bazie Lego Mindstorms (zestaw Robot Inventor #51515). Pojazd bazuje na instrukcji Hot Roda ze strony Antons Mindstorms. Nieco go przerobiłem: dodałem z przodu czujnik koloru, a w wersji ostatecznej usunąłem dach. Kod jest napisany w Pythonie i używa biblioteki Pybricks. Wpierw na arkuszu brystolu czarną taśmą zrobiłem trasę. Potem przerobiłem pojazd. Pierwsza wersja działała dość wolno, ale najważniejsze, że pojazd jechał wzdłuż linii.
Przy pisaniu kodu pomagał ChatGPT, który miał pomysły na rozwój projektu: kalibrację kolorów dla linii i tła, samoczynne zatrzymanie po oddaleniu się od linii itp. Miałem sporo zabawy z dobieraniem odpowiednich współczynników, ale końcowy efekt mi to wynagrodził.
Udostępniłem kod projektu parowania pojazdu na bazie Pico W z dowolnym kontrolerem PS4.
Projekt jest pod adresem: https://github.com/artpoz/picow-dualshock4
Zrobiłem też zapamiętywanie adresu MAC kontrolera.
Zrobiłem parowanie pojazdu z dowolnym kontrolerem. Nie trzeba już wpisywać na stałe do programu adresu MAC kontrolera.
Oto bardziej szczegółowy opis mojego pojazdu na bazie Pico W sterowanego padem od PS4.
Hardware
- Kitronik Autonomous Robotic Platform (ARP) (link)
- Raspberry Pi Pico WH (link)
- Kontroler do PlayStation 4 (Dualshock 4)
Software
- Projekt picow_ds4 autorstwa Briana Starkeya (link do githuba)
Inne
- 4 baterie AA
- Kabel USB-microUSB
- Raspberry Pi 5 do budowania projektu
Kroki
1. Złożenie pojazdu, włożenie do niego Pico WH
2. Sprawdzenie adresu MAC kontrolera
3. Pobranie projektu picow_ds4 gitem
4. Pobranie Pico SDK (1.5.1) gitem
5. Zmiana zawartości pliku bt_hid.c, gdzie dodajemy nasz adres MAC z pkt. 2
6. Zbudowanie projektu i wgranie na płytkę Pico WH
7. Test sparowania (trzeba przytrzymać PS+Share na padzie)
8. Zmiana zawartości pliku main.c, w ARP są 4 piny do obsługi silników (6,7,19,20) zamiast dwóch w oryginalnym projekcie, PWN_MIN ustawiono na 0, speed_scale zmniejszono z 1.0 na 0.1 (link do kodu)
9. Powtórzenie punktu 6
10. Włączenie pada i jazda!
Wnioski
1. Gotowy projekt najlepiej budować na tym samym środowisku co autor, w tym przypadku na Linuxie (wykorzystałem Raspberry Pi 5).
2. Warto korzystać z ChatGPT, który podpowie polecenia np. do pobierania adresu MAC lub w sytuacji gdy nie pobiorą się wszystkie pliki z repo.
3. Warto tworzyć skrypty z poleceniami co przyspiesza testowanie.
Po tygodniu walki udało mi się w końcu zrobić sterowanie padem od PS4 pojazdu na bazie Pico WH.
Ostatnio kupiłem zestaw z małym pojazdem do Raspberry Pi Pico. Płytkę z mikrokontrolerem już miałem. Dodałem drugi czujnik ultradźwiękowy i wgrałem program do samodzielnej jazdy.