Вопрос

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

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

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

куда:

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

s[i] Позиция (координат Int World?) Совместного I

p[j] Позиция (в мировых координаторах?) Объединенного J

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

Это было полезно?

Решение

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

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

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

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

Позволять R_world[i][k], k = 0, 1, 2, быть K-турнир колонна матрицы вращения 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.

Другие советы

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

ДжIJ = dfя/dθДж

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top