Skocz do zawartości

Pozycjonowanie micromouse wg kilku różnych czujników


Pomocna odpowiedź

Napisano

Witam,
dążę do zbudowania MM, za dnia walczę z czujnikami, w nocy myślę nad algorytmem.

Na podstawie enkoderów będę w stanie obliczyć zarówno aktualną pozycję robota na płaszczyźnie, jak i kąt, w jaki jest skierowany. I w idealnym świecie to by wystarczyło, ale jeśli postawię go na starcie minimalnie obróconego, to w końcu przetrze ściany. Tak więc chcę też żeby trzymał się w równej odległości od ścian na podstawie analogowych dalmierzy po bokach, i gdy będzie okazja, poprawiał się gdy będzie znał dokładny dystans do ściany przed nim.

Problem w tym, że jedne i drugie dane nie zawsze będą się ze sobą zgadzać. Np. robot jedzie równo od ścian według dalmierzy, ale według enkoderów zasuwa w tym momencie na przełaj przez ściany-bo na początku robot miał być ustawiony pod kątem 0st. (tak zakładają enkodery), a był pod kątem 5st. Dalmierze skorygowały błąd ustawienia, ale teraz "enkoderowy czujnik pozycji i obrotu" myśli że robot jedzie w kierunku -5st.

Jak w takim razie pogodzić te dane? Poprawiać wyliczaną pozycję i kąt kiedy tylko da się je dokładnie ustalić za pomocą dalmierzy? Czy są jeszcze jakieś inne, sprytniejsze metody?

Ja w moim mm enkoderów używam do pomiaru odległości, i stabilizowania prędkości obrotowej silników. Pozycje względem ścianek koryguje za pomocą dalmierzy.

Chociaż nie jest to do końca doskonałe. Przy korzystaniu z żyroskopu trzeba uwzględniać kąt obliczony na podstawie enkoderów, dzięki czemu dużo płynniej i dokładniej robot będzie robił zakręty. Przy czym wydaje mi się że po prostu przed rozpoczęciem zakrętu zeruje się kąt obliczony z enkoderów.

u mnie żyroskopów brak.

Czyli co, jak jest jakiś pewny pomiar z dalmierzy to nadpisuje on wartość obliczoną z enkoderów? Np:

-jak zmiana odległości od jakiejś ściany przez jakiś czas równa się zero, to kąt=0, 90, 180 lub 270

-jak robot dojedzie do ściany na wprost, zaokrąglij pozycję do jakiejś pełnej wartości

O to chodzi?

Harnas, w przypadku micromouse'a nie trzeba uwzględniać kąta obliczonego na podstawie enkoderów jeśli korzystamy z żyroskopu. Pomiary z żyroskopu są odporne na poślizgi, nierówne ustawienie, nierówną wielkość kół oraz nierówną powierzchnię (w przeciwieństwie do enkoderów). Ja całkowicie zrezygnowałem z enkoderów podczas ustalania orientacji robota.

l153k, korygować orientację możesz przez dwa czujniki skierowane w przód. Odejmujesz jedną wartość od drugiej i w ten sposób można wywnioskować jaki jest kierunek robota. Korygowanie pozycji jest łatwe, uwzględnia się tylko odczyty z czujników skierowanych na boki. Orientację jest znacznie trudniej korygować. Można zrobić jakiś filtr który będzie korygował orientację robota (według enkoderów/żyroskopu) wtedy gdy jedziemy równolegle do ściany (według wskazań dalmierzy).

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...