Skocz do zawartości

[inne] R2-D2 fanart - robot RC sterowany po BT - planowana częściowa autonomia


Albi78

Pomocna odpowiedź

Witam,

Od pewnego czasu buduję miniaturową kopię robota R2-D2 z gwiezdnych wojen. Konstrukcja "korpusu" nie jest zbyt wyszukana, ponieważ wykorzystałem niewielki śmietnik z PCV. Nogi zrobione są z grubej 1mm tektury sklejonej za pomocą kleju z pistoletu. Silniki osadzone są w "nogach" robota za pomocą metalowych, skręcanych dziecięcych klocków. Na filmie robot sterowany jest za pomocą aplikacji pobranej ze sklepu play. W chwili obecnej robot korzysta z aplikacji dedykowanej. Dla poprawienia wyglądu robot został upodobniony do oryginału przy pomocy wyciętej na ploterze kolorowej folii.

Początkowo sercem robota była płytka RedBot, ale okazała się niewystarczająca do zaplanowanych funkcjonalności. W związku z tym robot został przeniesiony na dedykowane PCB w którym umieściłem potrzebne moduły i "mózg" układu czyli ARDUINO NANO.

Jak widać na załączonych zdjęciach płyta ma kilka błędów, dlatego plik z EAGLE-a załączę po wprowadzeniu poprawek.

Do budowy robota wykorzystałem:

  • Arduino NANO
  • Przetwornicę regulowaną STEP-DOWN
  • Sterownik silników DC oparty na DRV8835
  • Moduł Bluetooth HC-05
  • Odtwarzacz MP3 - DFPlayer mini
  • Silniki DAGU z przekładnią 48:1 wraz z kołami
  • Koło podporowe - w trzeciej "nodze" robota
  • Tekturę A4 o grubości 1mm

Na chwilę obecną robot jeździ sterowany z dedykowanej apilkacji ma Androida napisanej przy użyciu MIT App Inventor 2, oraz odtwarza dźwięki (charakterystyczne dla R2 wygenerowane na r2d2translator.com ). Dwa widoczne na zdjęciach slidery służą do regulacji poziomu głośności odtwarzacza MP3 i prędkości poruszania się robota. Przyciski po prawej (ikona robota i zielony wykrzyknik) uruchamiają odpowiednio odtwarzanie pliku 0001.mp3 i 0002mp3.

Projekt jest nadal w budowie i w najbliższym czasie dodane zostaną:

  • Cyfrowy czujnik odległości E18-D80NK
  • Analogowe czujniki odległości HC-SR04
  • Diody LED RGB
  • Magnetometr MAG3310

Czujnik cyfrowy ma służyć do "witania się" robota - w przypadku zadziałania czujnika w trybie kiedy do robota nie jest podłączone urządzenie BT robot odtworzy odpowiedni plik MP3.

Czujniki analogowe zamontowane mają być na "nogach" robota i mają uniemożliwiać operatorowi celowe wjechanie w przeszkodę.

Diody LED będą elementem informacyjno - ozdobnym - upodobniającym robota do filmowego oryginału i informującym o stanie modułu BT (sparowany, nie sparowany).

Magnetometr chciałbym użyć, aby robot utrzymywał kierunek podczas poruszania się. Niestety "nogi" wykonane z tektury nie do końca spełniają swoje zadanie (są zbyt miękkie i uginają się podczas poruszania) w najbliższej przyszłości robot dostanie prawdopodobnie nogi z pcv 1mm, ale dopiero są one rysowane pod wycinarkę CNC.

Prośba o pomoc:

Docelowo chciałbym dodać jeszcze jeden tryb pracy robota. Tryb śledzenie, w tym trybie robot miał by podążać automatycznie za telefonem z którego jest sterowany - śledzić użytkownika. Niestety przyznam się szczerze, że nie do końca mam pomysł jak to zrealizować. Do pomiaru odległości pomiędzy telefonem,a robotem planowałem użyć funkcji RSSI z modułu BT, ale nie za bardzo mam pomysł jak określić kierunek do operatora. Może ktoś ma jakiś pomysł? Chętnie usłyszę jakieś propozycje.

R2D2.thumb.jpg.3e9c0c250f94a62a606e82d679521e80.jpg

Link do komentarza
Share on other sites

Nie wiem jak dokładną masz tą odległość, ale jak jest z dokładnością do tych 15cm, to mógłbyś moduł bluetooth zamontować na głowie robota (na jej skraju) i nią obracać. Wtedy wiesz pod jakim kątem głowy masz najmniejszą odległość i w tym kierunku należy się udać.

Osobiście jednak wątpię czy to się da zmierzyć tak dokładnie.

Alternatywą mogłyby być jeszcze dwa moduły i kod od światłoluba...

Link do komentarza
Share on other sites

Obawiam się, że słabo będzie precyzja takiego rozwiązania.

Zastanawiałem się jeszcze nad zrobieniem jakiejś opaski z diodami IR zakładanej np. na nogę operatora na wysokości czujników robota, i zrobić śledzenie światła.

Rozważam tez wykorzystanie akcelerometru i magnetometru w telefonie. Czy da się na podstaw tych danych wyliczyć jakąś aproksymowaną trasę po jakiej poruszał się telefon?

Link do komentarza
Share on other sites

Da się i nawet przez klika kroków powinno być w miarę dokładne. Potem się oczywiście rozjedzie. Nie mówiąc już o tym, że pozycję robota też byś musiał wtedy aproksymować.

Ja kiedyś w swoim robocie robiłem proste podążanie za pomocą prostego sensora odległości SHARPa:

Idea jest prosta -- skanujesz otoczenie aż znajdziesz coś, co jest wystarczająco blisko i idziesz w tym kierunku, aż będzie w zadanej odległości. Jak jest za blisko, to się odsuwasz. Jak zgubisz, to skanujesz od nowa.

Możnaby pewnie to jeszcze ulepszyć, na przykład żeby ignorować obiekty, które są nieruchome...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ciekawa propozycja - biorąc pod uwagę, że od jakiegoś czasu się zastanawiałem, czy zrobić w nim obracaną głowę, to mogło by to mieć sens... Zastanawiam się tylko, jak się zachowa jak dojdzie do ściany...

W jaki sposób Twoim zdaniem najlepiej ignorować obiekty nieruchome? zrobić kilka skanowań i jeśli pozycja się nie zmieni to zignorować ten kierunek (szukać innego obiektu), czy jakoś inaczej?

Link do komentarza
Share on other sites

W jaki sposób Twoim zdaniem najlepiej ignorować obiekty nieruchome? zrobić kilka skanowań i jeśli pozycja się nie zmieni to zignorować ten kierunek (szukać innego obiektu), czy jakoś inaczej?

O czymś takim myślałem, ale oczywiście wymagałoby to testów.

Problem ze ścianą można rozwiązać też tak, żeby robot się po prostu po pewnym czasie stania w bezruchu zaczynał nudzić i rozglądać za nowym obiektem.

Link do komentarza
Share on other sites

Dopplerowski czujnik ultradźwiękowy z definicji wykrywa obiekty ruchome. Gdybyś zrobił w miarę kierunkowy lub takie trzy, wiedziałbyś, że ktoś się oddala i że może warto go śledzić. Niestety w trakcie jazdy wszystkie ściany i krzesła zaczynają być ruchome a biednemu R2D2 dochodzi zadanie śledzenia "celu" z zachowaniem bezpiecznej odległości. Tu bardziej by się nadał dookólny skaner (laserowy?), ale wtedy masz zagadnienie mapowania obiektów ze wszystkimi tego konsekwencjami algorytmów, pamięci i mocy obliczeniowej. Ogólnie aktywna jazda za kimś na podstawie rozumienia otoczenia i odróżniania nogi krzesła od nogi człowieka wydaje się trudna.

Na pewno śledzenie jakoś łatwo wyróżniającego się celu za pomocą czujników pasywnych (radio, światło, dźwięk) jest dużo łatwiejsze, ale akurat z radiem w typowych pomieszczeniach może być problem. Przypadkowe i skomplikowane charakterystyki kierunkowe anten (zarówno nadawczej w telefonie jak i odbiorczych w robocie) moim zdaniem wykluczają proste porównywanie RSSI sygnału na bazie pomiarowej 15-30cm - bo chyba taką średnicę ma ten robocik. Istniejące systemy bazują raczej na kilku nadajnikach umieszczonych w znanych miejscach i zdjętej a priori lub zasymulowanej mapie natężenia pola wewnątrz obszaru. To inny przypadek niż dwie-trzy-cztery antenki dość blisko siebie, które na dodatek mają tuż obok plątaninę drutów, LEDów i szkielet robota. Szansa istnieje gdyby projekt głowicy odbiorczej zrobić "czysto" pod względem RF: pod kopułą głowy musiałbyś umieścić płaską, okrągłą blachę, w nią wkręcić trzy lub cztery złącza SMA (a w nich dipole 2.4GHz) rozmieszczone w trójkącie lub kwadracie. Do tego dobre i takie same kable koncentryczne i cztery odbiorniki lub jeden z multiplekserem anten. Wtedy masz szansę. A może zupełnie coś innego: obrotowa antena kierunkowa? Taka na falę 12.5cm nie musi być wielka a już będzie mogła śledzić Twój nadajnik 2.4GHz w telefonie.

Inne metody wymuszają noszenie ze sobą jakiegoś specjalnego "wabika" - a to psuje całą zabawę..

Link do komentarza
Share on other sites

Niestety w trakcie jazdy wszystkie ściany i krzesła zaczynają być ruchome a biednemu R2D2 dochodzi zadanie śledzenia "celu" z zachowaniem bezpiecznej odległości.

Dopóki cel jest na wprost, to nie jest tak źle, bo swoją prędkość poruszania się znasz, a odejmowanie nie jest bardzo wymagającą obliczeniowo operacją. 🙂

Link do komentarza
Share on other sites

No tak, ale to jest sytuacja wyidealizowana i trywialna więc uznałem, że nieciekawa. Ani idący człowiek nie jest jednolitą bryłą (machające nogi i ręce bardzo zaburzają obraz prędkości/odległości) ani też nie porusza się zwykle po torze prostoliniowym. Zabawa "jedź za mną kilka kroków po prostej na środku pustej sali gimnastycznej" jest taka sobie a każdy skręt od razu pokaże, że robot jest tak naprawdę ślepy.

Link do komentarza
Share on other sites

Od czegoś trzeba zacząć. Zwróć proszę uwagę, że to nie ma być niezawodne rozwiązanie stosowane w robocie przemysłowym, tylko ciekawe zachowanie zabawki. Losowe dziwne reakcje mogą nawet być tu plusem 🙂 A i wartość edukacyjna przy programowaniu czegoś takiego jest.

[ Dodano: 15-01-2016, 13:56 ]

Trochę związane:

Link do komentarza
Share on other sites

Masz rację, jak zwykle przesadzam..

Ale gdyby tak mieć tani skaner ultradźwiękowy 2D, który bez żadnych serwomechanizmów i dziecinnych, obrotowych wieżyczek pokazywałby mapę przeszkód w odległości kilku metrów.. Ech, rozmarzyłem się... Albo nie, pomyślę o tym. To nie może być trudne 🙂 Słyszeliście o takich rozwiązaniach? Można by się oprzeć na zasadzie działania radarów SAR albo nawet zrobić rzeczywistą a nie syntetyczną antenę nadawczą. Hm, wygląda ciekawie, prawda 🙂

EDIT:

Tam chyba jest kamera? Coś tam z przodu widzę. Filmik jest tak zrobiony, że trudno coś powiedzieć o jakości śledzenia. Czasem jedzie prawie wyprzedzając idącego, więc kamera chyba jednak odpada. Czasem zostaje z tyłu i nie widać jakichś specjalnych reakcji na lekkie zmiany toru chodu "przewodnika". Nie wiem co o tym myśleć. To równie dobrze może być.. oszustwo lub model RC.

Ciekawe czy w walizce zostało miejsce na koszulę i buty 😉

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.