Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Inverse Kinematics: Calculating the Jacobian

I am trying to do inverse kinematics for a serial chain of arbitrarily many links.

In the following paper, I have found an example for how to calculate the Jacobian matrix.

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

where:

v[j] is the unit vector of the axis of rotation for joint j

s[i] is the position (int world coords?) of joint i

p[j] is the position (in world coords?) of joint j

The paper says that this works if j is a rotational joint with a single degree of freedom. But my rotational joints have no constraints on their rotation. What formula do I then want? (Or am I possibly misunderstanding the term "degree of freedom"?)

like image 904
Nick Heiner Avatar asked Oct 22 '10 02:10

Nick Heiner


People also ask

What is Jacobian matrix in inverse kinematics?

The inverse kinematic methods are all using a matrix called Jacobian matrix, which consists of all first-order partial derivates derived from a kinematic model. The main goal of this thesis is to evaluate current methods solving Inverse Kinematics and to see if it possible to create animations ”on the fly” for a model.

What is inverse Jacobian?

In a strictly Cartesian manipulator, the inverse of the Jacobian, J, is equal to the transpose of the Jacobian (JT = J-1). This is not true for other cases, but often a dynamic controller yields satisfactory results.

What is the role of inverse Jacobian operator in velocity kinematics?

The inverse Jacobian allows us to determine: joint velocity given the end-effector velocity ■ In order to be inverted the Jacobian matrix must be square and non-singular. In order to be square the dimensions of the robot's task and configuration spaces must be equal.


2 Answers

This question is old, but I'll answer anyway, as it is something I have thought about but never really gotten around to implement.

Rotational joints with no constraints are called ball joints or spherical joints; they have 3 degrees of freedom. You can use the formula in the tutorial for spherical joints also, if you parameterize each spherical joint in terms of 3 rotational (revolute) joints of one degree of freedom each.

For example: Let N be the number of spherical joints. Suppose each joint has a local transformation T_local[i] and a world transformation

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

Let R_world[i][k], k = 0, 1, 2, be the k-th column of the rotation matrix of T_world[i]. Define the 3 * N joint axes as

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

Compute the Jacobian J for some end-effector s[i], using the formula of the tutorial. All coordinates are in the world frame.

Using for example the pseudo-inverse method gives a displacement dq that moves the end-effector in a given direction dx.

The length of dq is 3 * N. Define

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

for j = 0, 1, ..., N-1, where R_x, R_y, R_z are the transformation matrices for rotation about the x-, y-, and z-axes.

Update the local transformations:

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

and repeat from the top to move the end-effector in other directions dx.

like image 193
antonakos Avatar answered Nov 15 '22 12:11

antonakos


Let me suggest a simpler approach to Jacobians in the context of arbitrary many DOFs: Basically, the Jacobian tells you, how far each joint moves, if you move the end effector frame in some arbitrarily chosen direction. Let f(θ) be the forward kinematics, where θ=[θ1,...,θn] are the joints. Then you can obtain the Jacobian by differentiating the forward kinematics with respect to the joint variables:

Jij = dfi/dθj

is your manipulator's Jacobian. Inverting it would give you the inverse kinematics with respect to velocities. It can still be useful though, if you want to know how far each joint has to move if you want to move your end effector by some small amount Δx in any direction (because on position level, this would effectively be a linearization): Δθ=J-1Δx
Hope that this helps.

like image 44
Aakash Gupta Avatar answered Nov 15 '22 10:11

Aakash Gupta