Zdalnie sterowany robot wyznaczający swoją prędkość

Typ_projektu
microPython
Zdjecie główne
Krótki opis projektu

Jest to robot o dwóch kołach napędowych z oponami zapewniającymi mu wysoką przyczepność do podłoża i metalowym ball-caster'em jako trzecie koło o dwóch stopniach swobody ruchu, co zapewnia mu wysoką zwrotność. Użytkownik zdalnie steruje robotem za pomocą 4 przycisków, a on zwraca swoją informację o prędkości na podstawie odczytów z enkoderów silników, co jest to drukowane na ekranie laptopa.

Niezbędne elementy

1. 2x płytka ESP8266 NodeMCU

2. 1x płytka ESP32

3. Dwukanałowy sterownik silników DC

4. 2x silnik 6V z enkoderem kwadraturowym

5. czujnik IMU ISM330DHCX + przewód qwiic

6. akumulator LiPo 7.4V (2 cell)

7. opony do odkurzacza iRobot Roomba

8. 2x piasta sześciokątna do koła

9. przewody o większym przekroju - na ~6-7A

10. przewody raster 2.54mm

11. Śrubki M2.5, M3 i M4 o różnych długościach

12. L7805ABV - stabilizator napięcia na 5V DC

13. Port kompatybilny z portem akumulatora (w zależności od portu akumulatora: XT90/XT60/XT30/Gold 4mm)

Sprzęt

1. Drukarka 3D - pole robocze min. 200x200mm

2. Lutownica

3. Śrubokręt krzyżakowy

4. Kombinerki

 

Opis projektu

Płytka ESP8266 w panelu sterowania przesyła komendy ruchu poprzez sieć WLAN ESP-NOW do płytki ESP8266 na robocie, która steruje ruchem robota przesyłając sygnał PWM o zadanym wypełnieniu i częstotliwości odpowiednim kanałem. Użytkownik porusza robotem za pomocą przycisków  Pull-up-button. 

Obecna na pokładzie płytka ESP-32, z racji znacznie większej pamięci RAM i użytecznych pinów GPIO zlicza impulsy z enkoderów.

Za pomocą odczytów impulsów z enkoderów kwadraturowych (dwufazowych) zintegrowanych z silnikami, jesteśmy w stanie bardzo łatwo obliczać prędkość robota - jest ona równa połowie różnicy obecnego odczytu enkodera i odczytu z poprzedniej iteracji, odczytane w ten sposób dane są przekształcone na obroty na sekundę, a następnie metry na sekundę, przy znajomości promienia koła napędowego oraz założeniu braku istnienia poślizgu między nim, a podłożem. Wysyłamy je następnie w strukturze danych przez ESP-NOW bezpośrednio na płytkę pilota, która wyświetla ich wartości na ekranie laptopa.

Alternatywna wersja projektu - z wyznaczaniem pozycji przy pomocy czujnika IMU:

UWAGA: wersja wymaga dopracowania, gdyż biblioteka zajmuje bardzo dużą część pamięci płytki ESP32 - tworzone klasy obiektów na potrzeby komunikacji WiFi przez ESP-NOW nie mają w niej już wolnego miejsca - komunikacja nie działa.

Przed startem, robot potrzebuje 30 sekund na kalibrację odczytów z akcelerometru i żyroskopu z czujnika IMU - by maksymalnie "wyzerować" ich wartości w punkcie startu.

Program dwukrotnie całkuje przyspieszenia, jednokrotnie całkuje prędkość kątową wokół osi OZ, odczytaną z żyroskopu oraz liczy pierwszą pochodną kąta obliczonego z enkodera - w ten sposób uzyskuje prędkość kątową koła robota, zakładając brak poślizgu znamy, tym samym, moduł wektora prędkości liniowej geometrycznego środka robota.

Pozycję odczytujemy za pomocą wymnażania pozycji robota w związanym z nim układzie odniesienia przez macierz obrotu R(fi) wokół osi OZ w funkcji odczytanego kąta fi, do tego dodajemy, wyznaczony we wcześniejszej iteracji, wektor położenia w globalnym układzie współrzędnych, związanym z miejscem startu robota.

kod programu
ZIP poniżej
Youtube
Tagi
#RC #ESP #IMU #Enkoder #Robot
Odnośniki zewnętrzne
https://botland.com.pl/kulki-podporowe/475-ball-caster-34-metalowy-pololu-955-5904422364489.html

https://botland.com.pl/silniki-dc-z-przekladnia-i-enkoderami/9530-silnik-z-przekladnia-6v-100rpm-enkoder-6959420912476.html

https://botland.com.pl/przejsciowki-do-silnikow/6090-szesciokatny-adapter-do-kol-12mm4mm-2szt-pololu-2684-5904422367930.html

https://allegro.pl/oferta/opony-do-irobot-roomba-kola-500-600-700-800-900-e5-s9-i3-i4-i5-i6-i7-i7-j7-14751067790?utm_feed=aa34192d-eee2-4419-9a9a-de66b9dfae24&utm_source=google&utm_medium=cpc&utm_campaign=_elktrk_rtvagd_pla_ss&ev_adgr=rtv-ss&ev_campaign_id=22975392160&gad_source=1&gad_campaignid=22975392160&gclid=Cj0KCQiAgP_JBhD-ARIsANpEMxz5lEd7diaohjLe8gWz-h_8v00SWd_AEAtzgE7mYf-N2b-NQQ5RhrYaAi1OEALw_wcB&dd_referrer=https%3A%2F%2Fwww.google.com%2F

https://botland.com.pl/sterowniki-silnikow-moduly/15819-cytron-mdd3a-dwukanalowy-sterownik-silnikow-dc-16v3a-5904422324841.html

https://botland.com.pl/czujniki-9dof-imu/16458-ism330dhcx-6dof-imu-3-osiowy-akcelerometr-i-zyroskop-adafruit-4502-5904422344528.html

https://botland.com.pl/regulatory-napiecia/81-stabilizator-5v-l7805abv-tht-to220-5904422307202.html