Skocz do zawartości

Ustalenie prędkości robota, problemy z jazdą prosto


z0idb3rg

Pomocna odpowiedź

Hej,

Montuje sobie prostego robota na bazie tego podwozia: https://botland.com.pl/podwozia-robotow/6860-magician-chassis-v2-podwozie-robota-akcesoria.html

Silniki podłączyłem przez mostek L239D, całością steruje Raspberry Pi.

Mam dwa problemy związane ze sterowaniem tym elektronicznym krążownikiem 😃

Pierwszy jest taki, że robot nie chce za bardzo jeździć prosto, zwyczajnie zbacza z prostej trasy :/ Rzecz jasna nie mam enkoderów, nie mam też pomysłu jak rozwiązać ten problem bez nich. Jedyne co przychodzi mi do głowy to regulacja prędkości jednego (szybszego) silnika poprzez PWM, jednak otrzymanie faktycznie prostej trasy przejazdu jest dalej trudne.

Drugi problem związany jest z prędkością robota - potrzebuję żeby przejechał 10cm z możliwie dużą precyzją, i jedyne co przychodzi mi do głowy to przyklejenie do podwozia markera, postawienia go na kartce i sprawdzanie eksperymentalnie jaki czas musi jechać, aby faktycznie przejechał to 10cm xD

Trzeci jest taki, że za nic nie mogę zmusić robota do skręcenia o równe 90 stopni. Jak sobie z tym poradzić?

PS. Mimo że elektroniką i programowanie zajmuję się już dłuższą chwilę, tak jest to mój pierwszy jeżdżący robot. Stąd takie debilne pytania 😅

Link do komentarza
Share on other sites

Masz te same problemy co każdy rozpoczynający zabawę w robota, czyli wychodzący z kręgu fajnych teorii, ładnych programów i jakoś tam policzalnej elektroniki do rzeczywistego świata silników, przekładni, tarcia, oporów itp.

"..robot nie chce za bardzo jeździć prosto, zwyczajnie zbacza z prostej trasy"

Tak tak to będzie. Nie masz żadnej gwarancji, że obie strony są symetryczne. Począwszy od samego podwozia (równoległość osi napędowych, luzy, montaż całości), przez mostki na których przez producenta gwarantowane są jedynie maksymalne spadki napięcia, silniki (każdy jest nawinięty trochę inaczej, ma inaczej naciskające szczotki, inne łożyska itd), przekładnie (tolerancje wykonania zębów, panewek, złożenie całości, stopień zużycia, smarowanie) na kołach kończąc (różne średnice i szerokości, delikatnie inny bieżnik). A przecież dochodzi jeszcze środowisko - nierówności podłoża, górki, dołki, dywan itd.

"nie mam też pomysłu jak rozwiązać ten problem"

Musisz po pierwsze mieć wpływ na oba silniki, czyli regulacja PWM po obu stronach. Nie zawsze będzie tak, że jeden jest szybszy - to się może zmieniać a poza tym chcesz chyba także regulować prędkość i kierunek ruchu całości. Mając już dwa regulowane kanały napędowe musisz wiedzieć co się dzieje. Enkodery są tylko wstępem i to wcale niekoniecznym. One tylko przybliżają do realizacji zadanej trajektorii i to "na ślepo". Postaw się na miejscu procesora pokładowego - jak miałby on utrzymywać zadany kurs? Skąd Ty, patrząc na pojazd widzisz, że skręca? Zastanów się z jakich informacji korzystasz by to zauważyć. Możesz porównywać ze ścianą - czyli odległość od przeszkód i rzeczy które mijasz. Robiąc ich dookólną mapę 2D zaczynasz widzieć swój wektor przesunięcia. Możesz też trzymać kurs magnetyczny - magnetometry są dziś tanie jak barszcz, ale czułe na pola od kabli, silników, lodówek i innych metalowych gratów w pokoju. Dobrze sprawdzają się na zewnątrz, w terenie. Możesz badać obroty pojazdu w osi pionowej - czyli żyroskop. To fajne, ale samo z siebie ma dryft który się nawarstwia w czasie i bez jakiegoś stałego punktu odniesienia (północ magnetyczna?) możesz się bardzo zdziwić dokąd jedziesz po 2 minutach.

"potrzebuję żeby przejechał 10cm z możliwie dużą precyzją"

Sam wpadłeś na badanie otoczenia. To może być czujnik odległości od ściany, laserowy skaner dookólny robiący mapę, proste znaczniki na podłodze albo wsparcie zewnętrznych systemów pozycjonowania (radio-, opto-, audio-latanie w pokoju lub na krańcach obszaru). Na drodze 10cm sprawdzą się nawet enkodery pod warunkiem, że będziesz unikał poślizgów a więc gwałtownego ruszania i hamowania. Całkując przyśpieszenie z akcelerometru dostajesz prędkość a kolejne całkowanie daje drogę - to też jest metoda. Wszystko zależy od potrzeb i specyfiki tego co chcesz zrobić.

"za nic nie mogę zmusić robota do skręcenia o równe 90 stopni"

No to to samo co z położeniem. Albo rozumiesz gdzie jesteś (mapa otoczenia) albo wiesz jak się obracasz (żyroskop). Innej drogi nie ma. Wszelkie metody "na czas" załączenia silników nie działają. No albo działają tak jak u Ciebie. Można wymyślać coś egzotycznego: kamera patrząca w sufit i wyznaczająca kąt obrotu obrazu itp.

Tak więc zainteresuj się modułami czujników położenia. Można kupić płytki z zamontowanym akcelerometrem, żyroskopem i magnetometrem. Wszystko ma 2x2cm i jest 3-osiowe więc możesz mierzyć nie tylko obroty i przesunięcia w osi pionowej, ale wyznaczać wektory w przestrzeni 3D. Temat nie jest trywialny (bo szumy, błędy i dryfty - witamy w realnym świecie), ale prawidłowo zamontowane, użyte i przeliczone takie czujniki dają niesamowite efekty. Poszukaj informacji o algorytmach stosowanych w tzw. IMU.

Inne podejście to czujniki otoczenia - dalmierze i skanery na podstawie których możesz budować mapę.

Napisz więcej co chcesz zrobić docelowo i w jakim środowisku, bo od tego zależy wszystko.

Link do komentarza
Share on other sites

Napisz więcej co chcesz zrobić docelowo i w jakim środowisku, bo od tego zależy wszystko.

Mam płaską, zamkniętą przestrzeń o wymiarach 1x1m. Za pomocą robota wyposażonego w ultradźwiękowy czujnik odległości (zamontowany na serwomechaniźmie) tworzę mapę wspomnianej przestrzeni, opierając się o znajomość położenia robota, pomiar z czujnika, i kąt odchylenia czujnika względem kierunku w którym porusza się robot. Mówiąc prościej - tworzę mapę wektorów w postaci "położenie robota - wektor", a potem przenoszę to na tablicę charów (wstawiam 'x' w odpowiednie miejsca 😅 ) i wypluwam do pliku.

Całość bangla dość dobrze, pomijając to jak odbija się fala z czujnika ultradźwiękowego (ale to też jest do rozwiązania) i problemy z pierwszego posta :->

Link do komentarza
Share on other sites

No to masz idealną sytuację, bo wiesz gdzie jesteś z czujnika (z dokładnością do obrotu o 90°, ale co tam).

Przy okazji, spróbuj z czujnikiem optycznym, SHARP robi ich sporo, poza tym ostatnio się pojawiły bardzo fajne czujniki time-of-flight.

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

No to masz idealną sytuację, bo wiesz gdzie jesteś z czujnika (z dokładnością do obrotu o 90°, ale co tam).

Przy okazji, spróbuj z czujnikiem optycznym, SHARP robi ich sporo, poza tym ostatnio się pojawiły bardzo fajne czujniki time-of-flight.

Właśnie, a propo czujnika.

Na ile można ufać pomiarom z ultradźwiękowego czujnika, jeśli chodzi o pomiary wykonywane pod kątem? Fala akustyczna ładnie się odbije i wróci do czujnika, czy załamie się i poleci w cholerę?

A jeśli chodzi o te time-of-flight, faktycznie, pomyślę nad tym. Narazie muszę doprowadzić całość do działania z wykorzystaniem ultradźwiękowego :/

Link do komentarza
Share on other sites

z0idb3rg, używanie czujników odległości do mapowania pomieszczenia to fajny pomysł, ale niewiele pomoże na problem z jazdą prostu - pomiar zajmuje czasu i zanim ustalisz, że zboczyłeś z trasy, tor jazdy już będzie zakrzywiony. Oczywiście możesz próbować przewidywać jak zachowują się silniki, dodać PID itd. ale i tak będzie z tym pełno problemów.

Może najlepiej po prostu dodać enkodery? Botland ma w ofercie gotowy zestaw: https://botland.com.pl/enkodery/2182-zestaw-enkoderow-magnetycznych-dagu-rs030.html?search_query=enkodery&results=142

Link do komentarza
Share on other sites

Może najlepiej po prostu dodać enkodery?

Chętnie, rzecz w tym że muszę sobie poradzić z tym co mam, a na przyszły weekend muszę mieć coś działającego.

Wracając do pytania odnośnie czujnika odległości: na ile można ufać pomiarom pod kątem?

Link do komentarza
Share on other sites

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...

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.