2010-10-22 16 views
6

Próbuję wykonać odwrotną kinematykę dla łańcucha szeregowego o dowolnej liczbie łączy.Odwrotna kinematyka: Obliczanie liczby Jacobian

W poniższej paper znalazłem przykład, jak obliczyć macierz Jacobian.

Entry (i, j) = v[j] * (s[i] - p[j]) 

gdzie:

v[j] jest wektor jednostkowy osi obrotu na wspólnym j

s[i] jest pozycja (int świat koordy?) Stawu i

p[j] to pozycja (w świecie coords?) Wspólnego j

Artykuł mówi, że działa to, jeśli j jest obrotowym złączem o jednym stopniu swobody. Ale moje obrotowe złącza nie mają ograniczeń w ich rotacji. Jaką formułę potrzebuję? (Czy może nie rozumiem terminu "stopień swobody"?)

Odpowiedz

8

To pytanie jest stare, ale odpowiem mimo wszystko, ponieważ jest to coś, o czym myślałem, ale nigdy nie doszło do realizacji.

Złącza obrotowe bez ograniczeń są nazywane przegubami kulowymi lub przegubami kulistymi; mają 3 stopnie swobody. Możesz także użyć formuły w samouczku dla połączeń sferycznych, jeśli sparametryzujesz każde połączenie sferyczne w kategoriach 3 obrotowych (obrotowych) połączeń o jednym stopniu swobody. Na przykład: Niech N będzie liczbą złączy sferycznych. Załóżmy, że każde złącze posiada lokalne przemiany T_local[i] i przekształcenie świata

T_world[i] = T_local[0] * ... * T_local[i] 

Let R_world[i][k], k = 0, 1, 2, bądź K p kolumna macierzy rotacji T_world[i]. Określenie 3 * N osie przegubów w

v[3 * j + 0] = R_world[i][0] 
v[3 * j + 1] = R_world[i][1] 
v[3 * j + 2] = R_world[i][2] 

Oblicz jakobian J pewnego końca efektora s[i] pomocą wzoru z przewodnika. Wszystkie współrzędne znajdują się w ramce świata.

Stosowanie na przykład metody pseudo-odwrotnej daje przesunięcie dq, które przesuwa efektor końcowy w danym kierunku dx.

Długość dq to 3 * N. Określić

R_dq[j] = 
    R_x[dq[3 * j + 0]] * 
    R_y[dq[3 * j + 1]] * 
    R_z[dq[3 * j + 2]] 

do j = 0, 1, ..., N-1, gdzie R_x, R_y, R_z są macierze transformacji dla obrotu wokół x-, y- i z -axes.

Aktualizacja lokalne transformacje:

T_local[j] := T_local[j] * R_dq[j] 

i powtórz czynności od góry, aby przenieść końcowego efektora w innych kierunkach dx.

3

Pozwól mi zasugerować prostsze podejście do Jacobianów w kontekście arbitralnie wielu DOF: Zasadniczo, jakobin mówi ci, jak daleko każde ruchy stawu, jeśli przesuniesz ramkę efektora końcowego w jakimś arbitralnie wybranym kierunku. Niech f (θ) będzie kinematyką do przodu, gdzie θ = [θ1, ..., θn] są złączami. Następnie można uzyskać poprzez zróżnicowanie Jacobiego kinematyki do przodu w stosunku do wspólnych zmiennych:

J ij = df i/dθ j

jest twojego manipulatora Jacobiego. Odwrócenie go dałoby odwrotną kinematykę w odniesieniu do prędkości. Nadal może być przydatna, jeśli chcesz wiedzieć, jak daleko każde złącze musi się poruszać, jeśli chcesz przesunąć efekt końcowy o niewielką wartość Δx w dowolnym kierunku (ponieważ na poziomie pozycji może to być linearyzacja): Δθ = J -1 Δx
Mam nadzieję, że to pomaga.