Skocz do zawartości

Kinematyka prosta - robotyczne ramię


Pomocna odpowiedź

Witam,

mam opracować funkcję, która przesunie mi łeb robotycznego ramienia w określony punkt(za pomocą kinematyki prostej).

Ramię jest odzwierciedleniem maszynerii magazynowej przenoszącej pakunki w półki na półkę.

Czy ktoś mógłby napisać mi przykładowy program na którym mógłbym sie odwzorować pisząc program dla mojego ramienia? Ramię ma 4 stopnie swobody.

1 - działa tylko w osi z i obraca całą konstrukcją;

2 - działa w osi x podnosi pierwszy przegub ramienia;

3 - również działa w osi x i podnosi drugi przegub ramienia;

4 - działa w osi x i z obkręcając oraz podnosząc łeb ramienia.

Na łbie zamontowane są jeszcze dwa serwa do ruszania szczękami (jeśli to jest ważne do napisania funkcji to podaje).

Czytałem już kilka poradników ale przyznam się, że w ni w ząb nic nie rozumiem.

Ramię programuję w eclipse względnie może być arduino.

Dziękuję z góry 😉

Skan_20150517.thumb.jpg.b7b939aec15301c7b185e8a3a58bfa0f.jpg

Link do komentarza
Share on other sites

To czego potrzebujesz, to kinematyka odwrotna (inverse kinematics), a nie "prosta". Choć w tym przypadku rzeczywiście jest ona prosta, wystarczy przypomnieć sobie z podstawówki trygonometrię. Ogólnie rzecz ujmując, znając geometrię robota i położenie końca jego ramienia chcesz policzyć kąty w jego poszczególnych stawach, żeby potem móc ustawić serwomechanizmy w tych właśnie pozycjach (ignoruję tutaj całe zagadnienie planowania drogi, bo to za dużo jak na początek). Przy tej konfiguracji, jaką masz, rozwiązań będzie wiele -- zawsze co najmniej dwa symetryczne. Musisz wybrać to, które wpada w zakresy twoich serwomechanizmów.

Najprościej policzyć kąt dla pierwszego serwa -- ramię po prostu musi wskazywać w kierunku punktu, w którym ma się znaleźć jego koniec, zatem wystarczy użyć funkcji atan2(x, y). Kiedy już to obliczysz, możemy zignorować trzeci wymiar i skupić się na płaszczyźnie pionowej wyznaczonej przez ramię, czyli nasz punkt docelowey z (x, y, z) zamienimy sobie na (d, z), gdzie d = sqrt(x * x, y * y), czyli odleglość punktu od pionowej osi robota.

Dalej to już proste rozwiązywanie trójkątów. Narysuj to sobie na kartce, poszukaj trójkątów prostokątnych i z twierdzenia Pitagorasa oraz twierdzenia kosinusów oblicz wszystkie potrzebne kąty.

Napisałem tutorial dla nogi robota w bardzo podobnej konfiguracji: http://tote.readthedocs.org/en/latest/ik.html

A tutaj masz kod, który to liczy: https://bitbucket.org/thesheep/tote/src/2c79f96c6313dae79c97bf190ec9de1eb8226e24/start/leg.ino?at=default#cl-33

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Dziękuję, skorzystam z Twojej porady ale niestety nie zrozumiałem się z moim wykładowcą - on polecił mi zgłębić temat kinematyki prostej. Mianowicie, mam za pomocą potencjometrów zmierzyć kąty o jakie przesuną się moje serwa i dzięki kinematyce prostej podać współrzędne punktu który osiągnie łeb manipulatora. Niestety znlazłem w internecie poradnik dla manipulatora o 3 stopniach swobody a mam 4 i nie wiem jak ma wyglądać macierz dla tego czwartego stopnia. Z góry dzięki za pomoc.

Link do komentarza
Share on other sites

Kinematyka prosta jest jeszcze... prostsza. Po prostu zaczynasz od bazy i przesuwasz sie o kolejne odcinki ramienia w kierunku, jaki wskazują podane kąty. Jak dojdziesz do końca, to masz współrzędne. Nie mam pojęcia o jaką macierz ci chodzi. Macierz przejścia między układami współrzędnych dla poszczególnych stawów?

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

Chodzi o macierz Benavita-Hartenberga. A na to przesuwanie sam wpadłem - gorzej tylko jak źle ustawi się serwa, że mają początek ujładu w jakimś "dzikim miejscu". A teraz nie rozmontuję całej konstrukcji. Żeby wyliczyć przesunięcia z trygonometrii muszę jescze brać pod uwagę kąty wcześniejsze o które przesunęły się się serwa n-1 i spędza mi sen z powiek

Link do komentarza
Share on other sites

Bez przesady. Zero serwa w innym miejscu to tylko kwestia dodania/odjęcia wartości kąta, modulo jaki tam masz zakres. Zresztą to samo z sen-z-powiek-spędzającym składaniem się kątów -- po prostu się dodają, szczególnie, że nie masz skręcania w osi ramienia, więc wszystkie kąty poza podstawą są w tej samej płaszczyźnie.

O notacji Denavita-Hartenberga właśnie się od ciebie dowiedziałem, więc raczej nie pomogę. Tak to jest jak człowiek się uczy grać ze słuchu.

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!

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.

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