Skocz do zawartości

Lego NXT 2.0 Java - zaprogramowanie sterowania robotem 3 kołowym (trójkąt).


NNext

Pomocna odpowiedź

Witam,
otóż posiadam robota NXT 3-kołowego z kołami omni-kierunkowymi (Kastora), coś w tym stylu : http://botbench.com/blog/2010/12/20/rotacaster-one-kit-omniwheel/ . Aktualnie jestem w fazie pisania aplikacji (Android,java) do sterowania takim robotem, podstawowe sterowania zrobiłem i działają ładnie. Problem pojawia się przy sterowaniu sensorami telefonu , nie mam pomysłu jak przełożyć odczyty przechyłów telefonu na sterowanie silnikami takim trójkołowcem. Rozumiem że, jeśli telefon przechyle do przodu robot ma jechać do przodu, jeśli do tyłu to do tyłu ale np co w przypadku przechylania telefon na ukos? Jeśli ma ktoś jakieś pomysły niech się podzieli 🙂 Pozdrawiam.

Link do komentarza
Share on other sites

Przechył przód/tył niech określa prędkość całkowitą do przodu / tył.

Więc np prędkośćcałkowita = sinus z kąta przód / tył (albo liniowo - jak wolisz).

Teraz przechył lewo/prawo określa ile z tej mocy ma iść na silnik lewy/prawy. Normalnie powinna iść 1/2 mocy, w ekstremalnym przypadku -1/2 (czyli jedno koło kręci się do tyłu, drugie do przodu).

Realizujesz podobnie, czyli np:

koło lewe = prędkośćcałkowita * ( 0,5 + sinus z kąta prawo/lewo )

koło prawe = prędkośćcałkowita * ( 0,5 - sinus z kąta prawo/lewo )

Czyli jak sinus będzie zero to oba koła kręca się z tą samą prędkością. Jak zaczniesz przechylać telefon to jedno koło zwolni, czy wręcz zacznie się kręcić do tyłu, a drugie koło przyśpieszy.

To jest taki najprostszy sposób i powinien dać fajną, płynną reakcję. Możesz pomyśleć tylko o ewentualnych zmianach dla wygody użytkowania (czy brać wychylenie liniowo czy przez sinus, czy pełne wychylenie to 90 stopni - trudno się operuje - czy np. 45 stopnie i wszystko w zakresie 45-90 stopni liczy się jako pełne wychylenie itp.)

Powodzenia i wrzuć filmik z gotowej pracy urządzenia 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

MirekCz dziękuję za zainteresowanie tematem i pomoc 🙂 Na razie nie jestem w stanie sobie wyobrazić tego sterowania, jak dla mnie sterowanie 3 kołami to ciężka sprawa. Jako że jestem "miszczem" painta wrzucam rysunek uzmysławiający mój zamysł sterowania.

Rozumiem że jeśli telefon przechyle do przodu lub do tyłu mają działać tylko silniki 1 i 2. Jeśli przechylę telefon np. w lewo (załóżmy, że równolegle do osi x) powinien działać silnik 3 na pełnej mocy i cześć mocy na silniki 1 i 2 (żeby jechał równolegle do osi x). Później gdy zacznę przechylać telefon lekko w przód silniki 1 i 2 powinny dostawać coraz więcej mocy a silnik 3 ją tracić aż do jazdy w przód (wtedy silnik 3 znowu będzie miał 0 mocy). Ja tak rozumiem to sterowanie tylko nadal nie rozumiem jak to opisać matematycznie 🙂

EDIT 18-02-14

Ok, udało mi oprogramować robota według instrukcji MirekCz 🙂 Działa tak jak powinien.

Może wrzucę na czasie filmik. Wielkie dzięki MirekCz, piwko dla Ciebie leci 🙂

Pozdrawiam,

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.