Professional Documents
Culture Documents
e e1 e2 ... eN
to represent an array of N DOFs that describe the
end effector in world space. For example, if our end
effector is a full joint with orientation, e would
contain 6 DOFs: 3 translations and 3 rotations. If
we were only concerned with the end effector
position, e would just contain the 3 translations.
Simulation and Animation SS07
Jens Krger Computer Graphics and Visualization Group computer graphics &
visualization
Forward & Inverse
Kinematics
The forward kinematic function
computes the world space end
e f
effector DOFs from the joint DOFs:
f(xi)
f(x)
g xi+1
x-axis
xi
1
df
x g f xi
dx
Simulation and Animation SS07
Jens Krger Computer Graphics and Visualization Group computer graphics &
visualization
Gradient Descent Algorithm
x 0 initial starting value
f0 f x 0 // evaluate f at x 0
while f i g {
df
si xi // compute slope
dx
1
x i 1 x i g fi // take step along x
si
f i 1 f x i 1 // evaluate f at new x i 1
}
ex ex
2
J e, 1
e y e y
1 2
1
Simulation and Animation SS07
Jens Krger Computer Graphics and Visualization Group computer graphics &
visualization
Jacobians
What if we increased 2 by a small
amount?
e ex e y
2 2 2
2
e J
so :
1
J e
1
2
J e
e = g - e
e = (g - e)
where 0 1
Simulation and Animation SS07
Jens Krger Computer Graphics and Visualization Group computer graphics &
visualization
Basic Jacobian IK Technique
while (e is too far from g) {
Compute J(e,) for the current pose
Compute J-1 // invert the Jacobian matrix
e = (g - e) // pick approximate step to take
= J-1 e // compute change in joint DOFs
= + // apply change to DOFs
Compute new e vector // apply forward
// kinematics to see
// where we ended up
}
i = JiT e
Simulation and Animation SS07
Jens Krger Computer Graphics and Visualization Group computer graphics &
Want to learn more about Jacobian Transpose? http://math.ucsd.edu/~ visualization
Jacobian Transpose
With the Jacobian transpose (JT) method, we can
just loop through each DOF and compute the
change to that DOF directly
With the inverse (JI) or pseudo-inverse (JP)
methods, we must first loop through the DOFs,
compute and store the Jacobian, invert (or pseudo-
invert) it, then compute the change in DOFs, and
then apply the change
The JT method is far friendlier on memory access &
caching, as well as computations
However, if one prefers quality over performance,
the JP method might be better