Обратная кинематика: расчет якобиана
-
10-10-2019 - |
Вопрос
Я пытаюсь сделать обратную кинематику для серийной цепочки произвольно много ссылок.
В следующих бумага, Я нашел пример для расчета якобийской матрицы.
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
Надеюсь, что это поможет.