Skocz do zawartości

Pomiar odległości jaką pokonał robot


Albi78

Pomocna odpowiedź

Witam,

Mam pytanie jak realizujecie pomiar odległości pokonanej przez robota?

Chciałbym zaprojektować i zbudować robota, któego roboczo nazwałem "ZWIEDZACZ".

Założenie projektu jest takie, że jeśli postawie robota w pomieszczeniu i uruchomię to objedzie pomieszczenie i narysuję "mapę" pomieszczenia /dostarczy dane do tego/. We wstępnej fazie - dla uproszczenia zakładam, że wszystkie kąty ścian to kąty proste. W pamięci sterownika ma się więc zapisać informacja typu:

20P15P20P

gdzie:

liczba to określenie przejechanej odległości

P oznacza skręt o 90st. w prawo

Na podstawie tego będę mógł teoretycznie i w bardzo uproszczony sposób wyrysować pomieszczenie po jakiem poruszał się robot.

I tu pojawia się pytanie - jak mierzyć odległość:

1. GPS raczej za małe odległości i za duży problem z sygnałem satelitów

2. Silniki krokowe i przeliczenie kroków na odległość (w zależności od obwodu koła)

3. Silniki DC i enkodery na kołach.

Czy wybrać którąś z tych opcji i która z nich jest Waszym zdaniem najlepsza?

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

Oczywiście będziesz mógł zrealizować pomiar obrotu ale te tarcze enkoderów nadają się do pomiaru prędkości obrotu kół a nie do pomiaru przebytej drogi, aby odczytać przebytą drogę enkodery muszą być dwukanałowe. Przy tych nie będziesz mógł odczytać czy robot jedzie do przodu czy do tyłu.

Link do komentarza
Share on other sites

Prawdziwy problem leży gdzie indziej. W tych podwoziach enkodery mocowane są na osi koła. Nie znalazłem w opisie jaką mają rozdzielczość, ale raczej nie będzie to więcej niż jakieś 60 impulsów na obrót koła. Przy średnicy kół ok. 50 mm, da Ci to rozdzielczość ok. 2-3mm przebytej drogi na impuls. Na pierwszy rzut oka może to się wydawać nie najgorszą wartością, ale tak naprawdę, zastosowanie praktyczne takich enkoderów jest prawie żadne.

O regulatorze prędkości możesz właściwie zapomnieć, podobnie o wykonywaniu skrętów, które będą miały dokładnie 90 stopni. Tak naprawdę potrzebujesz albo enkoderów inkrementalych na wale silnika, (np. jak tu http://www.trobot.pl/sklep/z-przek-adni/silnik_25dx52l_341_hp__z_enkoderem/) albo enkoderów absolutnych na kole, ale z rozdzielczością przynajmniej 10 bitów. Do tego drugiego rozwiązania możesz szukać produktów firmy Austriamicrosystems.

Link do komentarza
Share on other sites

Gdyby robot jeździł wyłącznie prosto albo gdyby sygnały z enkoderów były brane pod uwagę wyłącznie na takich odcinkach, to do wymiarowania pomieszczeń 60 imp/obrót koła pewnie by wystarczyło - przecież to nie labirynt gdzie mysz ma 1cm do ścianek. Krytyczne w tej aplikacji będą obroty. Np. już odchylenie rzędu kilku stopni (od planowanych 90) po przejechaniu 2m da błąd położenia rzędu kilknastu cm (2m*tan(5°)). Po zrobieniu kilku zakrętów właściwie nie wiadomo gdzie jesteśmy a szerokie koła potęgują niejednoznaczność położenia środka obrotu bo nie wiadomo po jakim okręgu każde z nich się porusza w zakręcie. Z drugiej strony patrząc, można chyba stworzyć jakiś algorytm samokorygujący. Mając czujnik odległości z boku, można jechać wzdłuż ściany zachowując od niej stałą odległość. To powinno wyeliminować błędy "kierunkowe" i zapewnić jechanie w miarę prosto. Następne pytanie to jakie to mają być pomieszczenia. W przypadku prostokąta wydaje się to do ogarnięcia a nawet automatycznego wykrycia "zawinięcia się" drogi i powrotu do miejsca startu . Jeżeli jednak pokój będzie zagracony, z dużą liczbą przeszkód do ominięcia to stworzenie mapy takiego środowiska będzie skrajnie trudne. Do tego dochodzą rzeczy "małe" typu nogi od stołów, "czarne dziury" typu pochłaniające wszystko zasłony, zmiany podłoża (dywany), no i.. koty. W każdym razie pozycjonowanie robota bazujące jedynie na czujnikach na kołach/silnikach może być bardzo trudne, ale spróbować warto. Na pewno nie skończy się na enkoderach.

Link do komentarza
Share on other sites

Dziękuję bardzo, za zainteresowanie tematem

Projekt jest w 100% edukacyjny. Dlatego też pozwalam sobie na pewne uproszczenia. W założeniu robot miałby robić "mapę" pustego pomieszczenia.

Co do jazdy wzdłuż ścian zakładałem nawet umieszczenie dwóch czujników odległości na boku, aby utrzymywał stałą odległość od ściany, ale po Waszych komentarzach zastanawiam się, czy nawet na próbę /edukacyjnie/, bawić się w proste enkodery, czy zainwestować w coś bardziej zaawansowanego (trochę szkoda mi inwestować w projekt edukacyjny), czy spróbować zmienić założenia projektu...

Link do komentarza
Share on other sites

no i.. koty.

A tak na poważnie precyzyjne określenie położenia robota jest bardzo trudne, można wykorzystać leprze enkodery, magnetometry, przyspieszeniomierze czy np. czujnik pomiaru przemieszczenia z myszy optycznej ale i tak nie daje to pewności dobrego określenia położenia robota.

Na filmach z "zaawansowanymi" robotami orientacje w przestrzeni zapewniają kamery, skanery itp. jak np.

A tu masz
tyle że robot to symulacja z dokładnie określoną pozycją.

Zainteresuj się konstrukcjami Micromouse, one też muszą orientować się w własnym położeniu i mapować otoczenie.

Link do komentarza
Share on other sites

Dzięki wielkie za rady - wydawało mi się, że to będzie stosunkowo prosty projekt, ale już widzę, że bardzo się myliłem, bo musiałbym za mocno uprościć założenia projektu.

Faktycznie na początek zacznę chyba od Micromouse.

Projekt planuje zrealizować na Arduino i będzie to mój pierwszy projekt robota.

W Arduino siedzę już od jakiegoś czasu i z powodzeniem udało mi się stworzyć kilka dość rozbudowanych projektów z wykorzystaniem GPS-a, czy BlueTooth-a, a teraz przyszła pora na włączenie w to mechaniki. Dlatego nie chcę przesadzić, ani z budżetem, ani ze stopniem trudności.

Przy okazji mam jeszcze jedno pytanie - czy możecie pomóc mi zidentyfikować jaki czujnik (wydaje mi się, że to któraś wersja SHARP-a) założony jest na tym robocie?

- bo wygląda na to, że jest to podobna koncepcja do mojej, z tym, że mapa nie jest wymiarowana, ani super dokładna, ale zrealizowanie podobnego projektu było by dla mnie bardziej niż satysfakcjonujące. Niestety ten bangalorean english trochę mnie przerasta i nie wiele rozumiem z tego, co ten gość tłumaczy 🙁

BTW. Link który wrzucił kol. Wikkan

jest niesamowity.
Link do komentarza
Share on other sites

Ten czujnik to sharp, coś w stylu http://robodudes.com/podczerwieni/49-gp2y0a21yk0f-10-80cm.html (nie wiem czy dokładnie ten sam).

Nie spodziewaj się od niego dokładności na poziomie jednego mm, ale przy małej obróbce / uśrednianiu sygnału można osiągnąć przyzwoite rezultaty. Pamiętaj tylko o dosyć ograniczonym zasięgu (dla wymienionego jest to zasięg w granicach 10-80cm)

Link do komentarza
Share on other sites

W związku z dalszymi przemyśleniami dotyczącymi określenia pozycji robota zastanawiałem się nad rozwiązaniem wykorzystywanym w myszkach optycznych.

Z tego co mi się wydaje dokładność/rozdzielczość tego typu czujników byłaby bardziej niż wystarczająca, w dodatku można było by równocześnie odczytywać dwie współrzędne przesunięcia.

Znalazłem nawet wątek na forum , w którym ktoś z powodzeniem próbował zaadaptować takie rozwiązanie, z wątku wynika, że kluczowa dla prawidłowego działania czujnika jest odległość czujnika od podłoża.

"Organoleptycznie" 😉 stwierdziłem, że moja mysz optyczna spokojnie działa podniesiona jakieś 5-7mm nad podkładkę, czy w przypadku robota MicroMouse, prześwit pod podwoziem rzędu tych właśnie wartości uniemożliwiałby robotowi działanie?

Jeśli brnę w złą stronę ze swoimi przemyśleniami sprostujcie mnie proszę.

Link do komentarza
Share on other sites

Moim zdaniem czujnik z myszki nie bardzo sie nadaje sie. Nie wiem jaka masz myszke, ale te ktore testowalem dzialaja dokladnie tylko gdy sa docisniete do plaskiego podloza. Co wiecej podloze nie moze byc zbyt gladkie czy blyszczace.

Czujnik daje informacje o przesunieciu od poprzedniego odczytu, wiec wszelkie bledy sie sumuja. W przypadku myszy to nie problem, ale w przypadku robota moze powodowac duze bledy.

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!

Gość
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.