Maciej
G.
Projektant /
Programista, Famor
S.A.
Temat: JerryBot - mój pierwszy robot
Cześć wszystkim,sądząc po dacie ostatnich postów ta grupa jest z dużym prawdopodobieństwem martwa (jak zresztą większość na GoldenLine.pl), ale co mi tam pochwalę się.
Oto link do krótkiego filmu pokazującego poruszanie się robota (ma bardzo prosty program napisany na sterownik silników "Dagu S4A EDU" ):
https://www.dropbox.com/s/9bc2ds95of0g5ct/Robot.mp4?dl=0
Program wykorzystuje tylko jeden ultra-dźwiekowy czujnik odległości HC-SR04 ( 2 - 200 cm na dole obudowy):
https://botland.com.pl/ultradzwiekowe-czujniki-odleglos...
Program jest napisany z wykorzystaniem IDE Arduino. Robot radzi sobie w miarę dobrze z omijaniem przeszkód na wysokości jego czujnika (ma problem z wolną przestrzenią pod fotelem, łózkiem itp).
Podaję link do katalogu z kilkoma zdjęciami bot'a i filmikiem (krótki fragment i zmniejszona rozdzielczość ze względu na rozmiar):
https://www.dropbox.com/sh/bhk0bfgvx48abb7/AADdW3gLtSYw...
Do budowy użyłem głównie podzespołów z firmy Botland.com.pl (nie był to gotowy zestaw). Proszę o nie posądzenie mnie o reklamę tej firmy (analizowałem koszt części z różnych sklepów polskich i zagranicznych), ale biorąc pod uwagę koszt części i czas dostawy oferta tej firmy wydała mi się najbardziej korzystna.
Oto podstawowe podzespoły użyte do budowy robota:
1) Podwozie robota (z silnikami i potrzebnymi akcesoriami) - Magician Chassis v2:
https://botland.com.pl/podwozia-robotow/6860-magician-c...
2) Sterownik silników - "Dagu S4A EDU" (mozliwość sterowania dwoma niedużymi silnikami i serwami modelarskimi - zgodny z Arduino Nano):
https://botland.com.pl/kontrolery-robotow/3627-dagu-s4a...
BTW: udało mi się znależć bardziej dokładną dokumentację sterownika:
https://www.robotgear.com.au/Product.aspx/Details/896-D...
W moim robocie sterownik obsługuje dwa siniki (z Magician Chassis v2) oraz dwa mini-serwa do ruchu w poziomie i pionie uchwytu do kamery i drugiego czujnika odległości (widać ten uchwyt na krótkim filmie):
Oto link do uchwytu kamery i serw, oraz samej kamery do Raspbbery PI:
https://botland.com.pl/chwytaki-uchwyty-gimbale/3724-uc...
i dwa serwa micro:
https://botland.com.pl/serwa-tower-pro/484-serwo-towerp...
oraz kamerka do RPI (kupiona wcześniej w chińskim sklepie - gdy US $ był dużo tańszy niż dzisiaj):
http://www.dx.com/p/wareshare-fisheye-camera-lens-for-...
Użyłem jeszcze dwóch małych płytek prototypowych (170 otworów) i jednej 400 otworów.
Zdjęcia pochodzą z wczesnej fazy budowy bota: sterownik silników (mała czerwona płytka) + Arduino Mega (komunikacja przez I2C).
Aktualnie jestem w fazie rozbudowy - dodałem uchwyt do kamery (jest na nim także drugi czujnik odległości) z dwoma serwami a Arduino Mega zastąpiłem Raspberry PI 3 z kamerą (oto finalny wygląd):
JerryBot wygląd finalny
Robot na skutek poślizgów kół nie porusza się prosto na dłuższym dystansie - najpierw planowałem użycie enkoderów silników (optycznych lub magnetycznych), ale stwierdziłem, że to półśrodki więc nabyłem moduł MPU:
https://botland.com.pl/czujniki-9dof-imu/7275-sparkfun-...
Aktualnie jestem na etapie rozbudowy programu o użycie drugiego czujnika odległości (na uchwycie sterowanym serwami) i wykorzystania powyższego MPU do zachowania prostego kursu robota.
Następnym etapem będzie użycie biblioteki "OpenCV" (mam ją już zainstalowaną na RPI 3) dla obróbki obrazu z kamery i prostego mapowania otoczenia.
Rozważam także zbudowanie prostego skanera 2D (sonar) podobnego do tego z projektu akademii Nettigo:
http://akademia.nettigo.pl/sonar/
, ale z użyciem tańszego czujnika:
https://botland.com.pl/ultradzwiekowe-czujniki-odleglos...
i serwem do pracy ciągłej 360 stopni:
https://botland.com.pl/serwa-praca-ciagla-360/4801-serw...
i takim uchwytem:
https://botland.com.pl/chwytaki-uchwyty-gimbale/1948-uc...
Jak będę miał już jakieś ciekawsze efekty po rozbudowie robota to dam znać.
------------------------------------------------------------
Mały "update": 07.12.2016
Powoli mój skaner otoczenia 2D nabiera realnych kształtów (dokładny czujnik ultra-dźwiękowy + synchronizacja położenia za pomocą dwóch laserów małej mocy):
Scanner otoczenia 2D
https://www.dropbox.com/sh/bhk0bfgvx48abb7/AADdW3gLtSYw...
(patrz również zdjęcia: IMG_0628.JPG i IMG_0630.JPG)
Scanner w ruchu (bez kontrolera w górnej platformie):
https://www.dropbox.com/s/jg416g63mfnowi1/Scanner2D_01....
Zasada działania:
Górna platforma z dokładnym czujnikiem ultra-dżwiękowym (i foto-tranzystorem z układem kształtowania impulsu na wzmacniaczu operacyjnym LM358) obraca się dookoła (360 stopni) poruszana micro-serwomechanizmem do pracy ciągłej. Na górnej platformie znajduje się jedna bateria LI-Pol 3,2 Ah + kontroler WiFi oparty na ESP8266. W dolej platformie jest zamontowane wspomniane wyżej serwo + dwa lasery czerwone służące do synchronizacji (moc 5mW) - służą one do oznaczenia przechodzenia czujnika (na wprost i 180 stopni dalej).
Kontroler ESP8266 wysyła tablicę punktów (odległości) zsynchronizowaną czasowo laserem poprzez serwer TCP/IP (po WiFi) do drugiej części robota (lub komputera PC).
Efekt będzie podobny do do opisanego tutaj:
http://akademia.nettigo.pl/sonar/
tylko kąt widzenia będzie 360 stopni. Czujnik ma zasięg do 5m (i kompensację temperaturową pomiaru). Nie ma problemów z kablami ponieważ pomiędzy platformą górna a dolną nie ma żadnych kabli połączeniowych - platforma górna jest niezależnie zasilana (przesłanie danych o skanie otoczenia za pomocą Wi-Fi).
Wczoraj przestudiowałem dokumentację czujnika odległości URM37 i niestety najkrótszy czas jednego pomiaru wynosi 25 ms (50 us na jeden centymetr - taka wartość jest fabrycznie zapisana w pamięci EEPROM układu), co komplikuje sytuację (muszę zmodyfikować niektóre założenia).
Czas pełnego obrotu (360 stopni) górnej platformy wynosi około 0,7 s. Przy założeniu 25 ms czasu na jeden pomiar daje to 28skanów odległości na pełen obrót (14 na 180 stopni). Czyli jeden skan odległości jest wykonywany co około 13 stopni kątowych . Nie jest to może oszałamiająca rozdzielczość, lecz do mapowania otoczenia dla prostego robota mobilnego powinna być wystarczająca. Prawdopodobnie będę musiał wykorzystać 2 pełne obroty scannera na budowę mapy otoczenia (da to około 28 skanów na 180 stopni - półobrót, około 6 stopni katowych na jeden skan) skomplikuje to niestety potrzebny) program .
Impuls prostokątny z detektora promienia laserowego ma około 70 ms długości i całkiem strome zbocza - będzie on podłączony do jednego z pinów GPIO mikro-kontrolera ESP8266 i będzie wyzwalał zboczem rosnącym przerwanie programu. Pozwoli to na synchronizacje zbieranych skanów odległości. Ostatnią czynnością jest przeliczenie współrzędnych biegunowych skanów na współrzędne kartezjańskie (prostokątne) i mamy obrys otoczenia robota).
Po zakończeniu prac zaprezentuję wyniki.Ten post został edytowany przez Autora dnia 14.12.16 o godzinie 13:13