Обратная кинематика: расчет якобиана - PullRequest
6 голосов
/ 22 октября 2010

Я пытаюсь выполнить обратную кинематику для последовательной цепочки произвольного числа связей.

В следующей статье я нашел пример того, как вычислить матрицу Якобиана.

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

где:

v[j] - единичный вектор оси вращения для шарнира j

s[i] - позиция (int world координаты?) соединения i

p[j] - это положение (в мировых координатах?) соединения j

В документе говорится, что это работает, если j является вращательным соединением сединая степень свободы.Но мои вращательные суставы не имеют ограничений на их вращение.Какую формулу я тогда хочу?(Или я, возможно, неправильно понимаю термин «степень свободы»?)

Ответы [ 2 ]

8 голосов
/ 06 декабря 2010

Этот вопрос старый, но я все равно отвечу, потому что я думал о нем, но так и не смог его реализовать.

Вращающиеся соединения без ограничений называются шаровыми или сферическими соединениями; у них есть 3 степени свободы. Вы также можете использовать формулу в руководстве для сферических соединений, если вы параметризуете каждое сферическое соединение с точки зрения 3 вращательных (вращающихся) соединений с одной степенью свободы каждое.

Например: пусть N будет количеством сферических соединений. Предположим, что каждое соединение имеет локальную трансформацию T_local[i] и трансформацию мира

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

Пусть R_world[i][k], k = 0, 1, 2, будет столбец k- th матрицы вращения T_world[i]. Определите 3 * N объединенные оси как

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

Вычислить якобиан J для некоторого конечного эффектора s[i], используя формулу учебника. Все координаты в мире.

Использование, например, псевдообратного метода дает смещение dq, которое перемещает конечный эффектор в заданном направлении dx.

Длина dq равна 3 * N. Определение

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

для j = 0, 1, ..., N-1, где R_x, R_y, R_z - матрицы преобразования для вращения вокруг осей x-, y- и z.

Обновление локальных преобразований:

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

и повторите с вершины, чтобы переместить конечный эффектор в других направлениях dx.

3 голосов
/ 04 июня 2015

Позвольте мне предложить более простой подход к якобианам в контексте произвольного множества степеней свободы: по сути, якобиан говорит вам, как далеко перемещается каждое соединение, если вы перемещаете конечную эффекторную рамку в каком-то произвольно выбранном направлении.Пусть f (θ) - прямая кинематика, где θ = [θ1, ..., θn] - соединения.Тогда вы можете получить якобиан, дифференцируя прямую кинематику по объединенным переменным:

J ij = df i / dθ j

- это якобиан вашего манипулятора.Инвертирование даст вам обратную кинематику по отношению к скоростям.Тем не менее, это может быть полезно, если вы хотите знать, как далеко должен двигаться каждый сустав, если вы хотите переместить конечный эффектор на некоторое небольшое значение Δx в любом направлении (потому что на уровне позиции это фактически будет линеаризацией): Δθ= J -1 Δx
Надеюсь, что это поможет.

...