Chapter 4 addresses the forward kinematics
of open-chain robots, as illustrated in this
video of a robot with 6 revolute joints.
We define a frame {s} fixed in space, often
at the base of the robot, and a frame {b}
at the end-effector of the robot arm.
If we command the robot to move, the {b}-frame
moves.
The forward kinematics problem is to find
the configuration of the {b}-frame relative
to the {s}-frame given the vector of joint
angles theta.
The transformation matrix representing the
{b}-frame in the {s}-frame is T_sb of theta,
or just T of theta for short.
To derive a procedure to calculate T of theta,
let's use a simple robot arm that moves in
a plane.
This robot has three joints: a revolute joint,
a prismatic joint, and another revolute joint.
You can also see the stationary {s}-frame
and the end-effector {b}-frame.
This is a stick figure version of the robot.
The joint variable theta_1 represents the
angle of joint 1 relative to the horizontal.
Theta_2 represents the extension of the prismatic
joint, and theta_3 represents the angle of
joint 3.
The 3-vector theta is a list of the three
joint variables, and T of theta represents
the configuration of the {b} frame relative
to the {s} frame.
If we set all of the joint variables equal
to zero, the robot is in its home position,
as shown here.
We write the zero configuration of the {b}
frame as T of zero, or simply M for short.
At the zero configuration, the {b}-frame has
the same orientation as the {s}-frame, and
the 3 in the top right element of the M matrix
means that the {b}-frame is 3 units from the
{s}-frame in the xs-direction.
Now say we rotate joint 3 by pi over 4 radians.
The theta vector is now zero, zero, pi over
4.
This motion of the {b} frame can be represented
by a rotation about the screw axis of joint
3.
Since it is a revolute joint with no translational
motion, the screw axis has zero pitch.
Because positive rotation is in the direction
indicated in the figure, by the right-hand
rule, the screw axis is out of the screen,
toward you.
As we learned in chapter 3 videos, a screw
axis can be represented in any frame.
Let's represent it in the {s}-frame, and let's
call joint 3's screw axis S_3, consisting
of an angular component omega_3 and a linear
component v_3.
Since the screw axis involves rotation, omega3
must be a unit vector.
Positive rotation is about an axis out of
the screen, which is aligned with the {s}
frame's z-axis.
Therefore, the unit angular component is zero
zero one, a unit vector aligned with the zs-axis.
To visualize the linear component v_3, imagine
the entire space rotating about joint 3, visualized
here as a turntable.
Then v_3 is the linear velocity of a point
at the origin of the {s}-frame when the turntable
rotates with unit angular velocity, as shown
here.
So, v_3 is zero, minus 2, zero, meaning that
the origin has a velocity of 2 units in the
minus ys-direction.
V_3 could also be calculated as minus omega_3
cross q_3, where q_3 is any point on the joint
axis represented in the {s}-frame.
Now that we have the screw axis S_3, we can
calculate the {b}-frame configuration T of
theta.
We simply apply the space-frame transformation
corresponding to motion along the S_3 screw
axis by an angle pi over 4.
This transformation is e to the bracket S3
times pi over 4 using the matrix exponential
from the chapter 3 videos.
Since it is a space-frame transformation,
it premultiplies M.
Now suppose we change joint 2, extending it
by 0.5 units of distance.
The theta vector is now zero, 0.5, pi over
4.
The screw axis S_2 corresponding to joint
2 has zero angular component omega_2, so the
linear component v_2 must be a unit vector.
If we imagine the whole space translating
at unit velocity along joint 2, a point at
the origin of the {s}-frame would move with
a linear velocity v_2 equal to one, zero,
zero, expressed in the {s}-frame.
Therefore the screw axis S2 is defined as
zero, zero, zero, one, zero, zero.
The new configuration of the {b}-frame, T
of theta, is obtained by left-multiplying
the previous configuration by e to the bracket
S_2 times theta2.
It's important to notice that the previous
motion of joint 3 does not affect the relationship
of joint 2's screw axis to the {s}-frame.
That's because joint 3 is not between joint
2 and the {s}-frame.
Therefore, S_2 is the same as the screw axis
of joint 2 when the robot is at its zero configuration.
Finally, let's rotate joint 1 by pi over 6.
The theta vector is now pi over 6, 0.5, pi
over 4.
The screw axis S1 is a pure rotation about
an axis out of the screen, so the omega_1
vector is zero, zero, one.
Rotation about this axis does not cause any
linear motion at the origin of the {s}-frame,
so the v_1 vector is zero, zero, zero.
The new configuration of the {b}-frame, T
of theta, is again given by left-multiplying
the previous configuration by the new space-frame
transformation.
Again, the previous motions of joints 2 and
3 do not affect the relationship of joint
1's screw axis to the {s}-frame, because they
are not in between joint 1 and the {s}-frame.
Therefore, S_1 is the same as the screw axis
of joint 1 when the robot is at its zero configuration.
For any serial robot, the procedure generalizes
directly.
First, define the M matrix representing the
{b}-frame when the joint variables are zero.
Second, define the {s}-frame screw axes S_1
to S_n for each of the n joint axes when the
joint variables are zero.
Finally, for the given joint values, evaluate
the product of exponentials formula in the
space frame.
In the next video we will see an alternative
version of this formula, in terms of screw
axes expressed in the {b}-frame.
