Skocz do zawartości

Pomocna odpowiedź

Napisano

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

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
  • 3 tygodnie później...

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.

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?

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

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.

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