Professional Documents
Culture Documents
io
Inverse Kinematics:
Manipulator Jacobian
Conservatively tuned IK
Aggressively tuned IK
Target
endeffector
location
Current
endeffector
location
Endeffector
error
Desired
endeffector
displacement
Can we move the
endeffector to
minimize error?
Joint angle
displacements
Yes.
Convert linear velocity of
endeffector to angular
velocities at joints.
rotation axis
angular rotation in frame
r1
v2
r3
angular velocity
of points in frame
wrt. axis k
v3
k axis out-of-plane
and passes through frame origin
linear velocity
of points in frame
wrt. axis k
vector to point
in frame
rotation axis
r1
v2
r3
angular velocity
of points in frame
wrt. axis k
v3
k axis out-of-plane
and passes through frame origin
linear velocity
of points in frame
wrt. axis k
vector to point
in frame
endeffector
linear velocity
rotation axis
vector from
joint origin to
endeffector
joint rotation axis
UM EECS 398/598 - autorob.github.io
Jacobian Transpose
vector from
joint origin to
endeffector
endeffector
linear velocity
Jacobian Transpose
vector from
joint origin to
endeffector
endeffector
linear velocity
Jacobian Transpose
Angular
velocity
for joint i
endeffector
linear velocity
vector from
joint origin to
endeffector
Jacobian
for joint i
e(q)
e(q)
Verify
UM EECS 398/598 - autorob.github.io
Verify
UM EECS 398/598 - autorob.github.io
e(q)
x0-x x0 x0+x
as first order expansion, approximate f(x) at
current configuration x0 and tangent plane J(x0)
UM EECS 398/598 - autorob.github.io
f(x)
x
UM EECS 398/598 - autorob.github.io
Minimum (Goal)
Start (Initial)
UM EECS 398/598 - autorob.github.io
Minimum (Goal)
Start (Initial)
UM EECS 398/598 - autorob.github.io
Geometric
3D N-link arm
The Jacobian
A 6xN matrix
Endeffector
velocity
Configuration
velocity
The Jacobian
A 6xN matrix
3D N-link arm
The Jacobian
A 6xN matrix
3D N-link arm
The Jacobian
A 6xN matrix
3D N-link arm
The Jacobian
A 6xN matrix
3D N-link arm
The Jacobian
A 6xN matrix
3D N-link arm
The Jacobian
A 6xN matrix
vector of
of joint
angle
velocities
UM EECS 398/598 - autorob.github.io
The Jacobian
3D N-link arm
A 6xN matrix
vectors in
base frame
The Jacobian
A 6xN matrix
oi-1: joint
origin
linear
on: endeffector
angular
The Jacobian
A 6xN matrix
linear
angular
The Jacobian
A 6xN matrix
linear
angular
angular velocity
of points in frame
wrt. axis k
r1
v2
linear velocity
of points in frame
wrt. axis k
r3
rotation axis
v3
k axis out-of-plane
and passes through frame origin
vector to point
in frame
skew-symmetric
matrix
v1
r2
angular velocity
of points in frame
wrt. axis k
r1
v2
linear velocity
of points in frame
wrt. axis k
r3
rotation axis
v3
k axis out-of-plane
and passes through frame origin
vector to point
in frame
skew-symmetric
matrix
Angular Velocity
Linear Velocity
p1 is point in
frame 1
Geometric
The Jacobian
A 6xN matrix
Geometric
The Jacobian
A 6xN matrix
compute
endpoint
error
compute step
direction
perform step
direction
UM EECS 398/598 - autorob.github.io
Geometric
The Jacobian
A 6xN matrix
The Jacobian
A 6xN matrix
Jacobian Transpose
Jacobian Transpose
Matlab example:
Jacobian transpose
Initial configuration
Iterations to goal
Pseudo Inverse
Matlab example:
Pseudo Inverse
Initial configuration
Iterations to goal
Pseudo Inverse,
More Generally
http://lion.cs.uiuc.edu/projects/wmn.html
Normal form
IK Demo
Which Pseudoinverse
Left pseudoinverse, for when N > M, (i.e., less than than 6 DoFs)
s.t.
Which Pseudoinverse
Singularities
http://www.ryanjuckett.com/programming/cyclic-coordinate-descent-in-2d/
Initial
Rotate bone 3
(to place end effector as
close to target as possible)
https://www.youtube.com/watch?v=MvuO9ZHGr6k
Jacobian-based methods
IK Assignment
EECS 398-002
EECS 598-010
IK Assignment
Specify target location, endeffector frame, endeffector point in frame
home.html
// if requested, perform inverse kinematics control to reach to point
kineval.robotInverseKinematics(kineval.params.ik_target, robot.endeffector.frame, robot.endeffector.position);
kineval_inverse_kinematics.js
kineval.robotInverseKinematics(endeffector_target_world, endeffector_joint, endeffector_position_local) {
. . .
kineval.iterateIK(endeffector_target_world, endeffector_joint, endeffector_position_local);
if (kineval.params.trial_ik_random.execute)
kineval.randomizeIKtrial();
else
kineval.params.trial_ik_random.start = new Date();
}
}
kineval.iterateIK(endeffector_target_world, endeffector_joint, endeffector_position_local) {
// Your code for a single IK iteration
// output sets updated controls for each joint
}
world
IK Assignment
global
IK Assignment
IK Assignment
Next class:
Motion Planning
http://people.csail.mit.edu/aperez/www/files/rrt_timelapse.jpg