Skocz do zawartości
Zaloguj się, aby obserwować  
baton

[Programowanie] Sterowanie robotem mobilnym klasy (2,0)

Pomocna odpowiedź

Bardzo dobrze napisany artykuł! Wyjaśnia wiele kwestii - dziękuję, wiedza zdobyta po przeczytaniu tego artykułu na pewno mi się przyda. Interesuje mnie jeszcze kwestia użycia żyroskopu w MM - w jaki sposób wykorzystać odczyt z żyroskopu do ustalania/kontroli rotacji? Może napiszesz drugą część, opisując właśnie użycie żyroskopu? Podobnie sprawa wygląda z użyciem czujników - żadna z myszy nie jeździ po labiryncie wyłącznie w oparciu o enkodery, tylko koryguje swoją pozycje odczytując błąd poprzez różnicę odległości poszczególnych czujników od ścianek. W jaki sposób prowadzić tego typu korektę do zaprezentowanego przez Ciebie modelu? Na podstawie różnicy odczytów czujników bocznych można zniwelować błąd translacji, a na podstawie różnicy przednich, błąd rotacji (oczywiście w momencie dotarcia do ślepego zaułku), tak? Jak to się ma, do regulatora PD opartego na enkoderach? W jaki sposób zmodyfikować opisane przez Ciebie rozwiązanie, by uwzględnić analogowe odczyty czujników?

Udostępnij ten post


Link to post
Share on other sites

Nie obiecuję, że opiszę to w równie dogłębny sposób jak powyższe zagadnienie, szczególnie że aktualnie jeszcze nad tym pracuję. Gdy będę to już miał w miarę ogarnięte i znajdzie się chwila czasu, postaram podzielić się wiedzą 😉

Udostępnij ten post


Link to post
Share on other sites

Baton, gratuluję udanego artykułu. Sporo przydatnej wiedzy i praktyczne podejście do tematu. Masz może pod ręką jakieś źródła w których można poczytać więcej o profilerach?

Interesuje mnie jeszcze kwestia użycia żyroskopu w MM - w jaki sposób wykorzystać odczyt z żyroskopu do ustalania/kontroli rotacji? Może napiszesz drugą część, opisując właśnie użycie żyroskopu?

To kiepski pomysł. Osobiście nie znalazłem żyroskopu MEMS, który mierzy położenie kątowe.(jeśli ktoś ma namiary na takie coś - niech da znać) Błędy całkowania prędkości kątowej tylko przysporzą Ci kłopotów. Proponuje pomyśleć o dwuosiowym magnetometrze jako kompasie. Jeśli nie ma dookoła silnych magnesów będziesz miał piękny pomiar kąta w płaszczyźnie XY.

Podobnie sprawa wygląda z użyciem czujników - żadna z myszy nie jeździ po labiryncie wyłącznie w oparciu o enkodery, tylko koryguje swoją pozycje odczytując błąd poprzez różnicę odległości poszczególnych czujników od ścianek. W jaki sposób prowadzić tego typu korektę do zaprezentowanego przez Ciebie modelu?

Dodać je do rotacji. Translacja "przesuwa" robota w kierunku ruchu, rotacja odpowiada za skręt.

Udostępnij ten post


Link to post
Share on other sites
Osobiście nie znalazłem żyroskopu MEMS, który mierzy położenie kątowe.(jeśli ktoś ma namiary na takie coś - niech da znać) Błędy całkowania prędkości kątowej tylko przysporzą Ci kłopotów.

Nie znalazłeś, bo takich nie ma, żyroskop to żyroskop - służy do mierzenia prędkości kątowej. Nie ma innej metody niż to scałkować 😉 Przy odpowiednio krótkim okresie całkowania, można uzyskać wystarczające efekty i właśnie tą wartość podaje się wtedy jako błąd w profilerze rotacji.

Proponuje pomyśleć o dwuosiowym magnetometrze jako kompasie. Jeśli nie ma dookoła silnych magnesów będziesz miał piękny pomiar kąta w płaszczyźnie XY.

Silne magnesy są, i to na tej samej płytce, w silnikach 🙂

Udostępnij ten post


Link to post
Share on other sites
Silne magnesy są, i to na tej samej płytce, w silnikach

Teraz pytanie czy silniki będą mieć wpływ - bądź co bądź magnesy są obudowane metalem, doatkowo się kręcą z dużąprędkością, co przy czasach reakcji magnetometru nei powinno sprawiać dużych problemów. Natomiast duże problemy sprawią elementy na płytce - ścieżki prądowe mogąpotwornie zakłócać jego pracę.

Udostępnij ten post


Link to post
Share on other sites

Nie znalazłeś, bo takich nie ma, żyroskop to żyroskop - służy do mierzenia prędkości kątowej. Nie ma innej metody niż to scałkować 😉 Przy odpowiednio krótkim okresie całkowania, można uzyskać wystarczające efekty i właśnie tą wartość podaje się wtedy jako błąd w profilerze rotacji.

Mylisz się, żyroskop - w zależności od typu mierzy prędkość kątową bądź kat. Ten drugi typ często spotykany jest w awionice (jako żyrokompas lub/i sztuczny horyzont - będąc precyzyjnym). Fakt, iż nie można znaleźć go w amatorskich konstrukcjach jako pojedynczy chip nie znaczy że takie rozwiązane nie istnieje. Powiedzenie "szukałem i nie znalazłem" też niestety niczego nie dowodzi.

Masz rację iż ze zwykłego żyroskopu MEMS można uzyskać w miarę przybliżone wyniki, musisz jednak kompensować jego bias. Nie zdziw się jeśli robot będzie "obracał się" mimo stania w miejscu po scałkowaniu prędkości kątowej.

Silne magnesy są, i to na tej samej płytce, w silnikach 🙂

Wydaje mi się, iż silniki BLDC bardziej "sieją" magnetycznie(wirujące neodymowe magnesy) niż DC. Jakoś nie widziałem nigdy coptera który by spadł z tego powodu. Myślę iż OldSkull ma rację, problemem mogą być ścieżki prądowe. Nikt jednak nie mówi o tym, aby umieszczać go w robocie między silnikami lub w głównej sekcji zasilania - niech sobie siedzi koło uC podpięty do zasilania ADC z "przodu" robota. - to powinno załatwić sprawę.

Z praktyki wiem na pewno, iż spore zakłócenia powodował monitor CRT w niewielkiej odległości(kilkadziesiąt cm) od magnetometru. Gdy będę miał dostęp do płytki IMU sprawdzę jak wpływają na niego silniki Pololu - to powinno być dość miarodajne.

Udostępnij ten post


Link to post
Share on other sites

Sam uściśliłeś, że chodzi o elementy MEMS, a tutaj wszystkie żyroskopy działają tak samo. Do uzyskania sztucznego horyzontu na elementach MEMS konieczna jest fuzja kilku czujników (np. żyroskop + akcelerometr).

Zacytuję tutaj znajomego: "w teorii, praktyka pokrywa się z teorią, ale w praktyce już nie", więc zanim stanowczo stwierdzisz że coś się nadaje a coś nie, proszę poprzyj to praktycznym doświadczeniem 🙂

Rozwiązanie z żyroskopem jest sprawdzone w wielu konstrukcjach myszy na całym świecie, a właśnie w kontekście micromouse padło pytanie ze strony MatManiaka. Magnetometr jest zdecydowanie za wolny... Co innego fuzja żyroskopu i magnetometru, ale równie dobrze można sobie skorygować kierunek czujnikami optycznymi.

Co innego jeśli chodzi o platformę z nawigacją, czy to latającą, czy jeżdżącą. Tam użycie magnetometru ma jak najbardziej sens.

Udostępnij ten post


Link to post
Share on other sites
[...] Nic prostszego - translacja to suma odległości przejechanych przez oba koła [...]

A nie większa - rotacja i mniejsza + rotacja?

Udostępnij ten post


Link to post
Share on other sites

A nie większa - rotacja i mniejsza + rotacja?

Zakładając, że L - odczyt lewego koła, P - odczyt prawego koła, R - rotacja, oraz L > P:

R = L-P

T = L-R + P+R = L-(L-P) + P+(L-P) = L-L+P+P+L-P = L+P

To samo 😉

Udostępnij ten post


Link to post
Share on other sites

baton, generalnie translacja to (L+P)/2; Ale można to traktować jako sumę przeskalowaną, tak samo jak obrót traktujemy jak przeskalowaną różnicę.

Udostępnij ten post


Link to post
Share on other sites
reg_newPWML = regV_P * regV_aktE + regV_D * (regV_aktE - regV_prevE) 
               + regT_P * regT_aktE + regT_D * (regT_aktE - regT_prevE); 
reg_newPWMP = regV_P * regV_aktE + regV_D * (regV_aktE - regV_prevE) 
               - regT_P * regT_aktE + regT_D * (regT_aktE - regT_prevE); 

Czym są te zmienne "regV_P, regV_D, regT_P, regT_D", bo do końca nie mogę załapać ?

Jak sądzę jest do związane z liczeniem odchyłek, ale skąd ma to dostać wartość ?

Udostępnij ten post


Link to post
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.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...