Kinematics is the relationships between the positions, velocities, and accelerations of the links of a manipulator, where a manipulator is an arm, finger, or leg. In this chapter, we will develop a mathematical framework for describing these relationships, in particular position. The transformation, between a coordinate frame located in the hand of the robot (known as the hand frame) and a coordinate frame located in the base of the robot (known as the base frame) will be studied in detail. This transformation specifies the location (position and orientation) of the hand in space with respect to the base of the robot, but it does not. tell us which configuration of the arm is required to achieve this location. As we will see, it is often possible to achieve the same hand position with many arm configurations. A serial link manipulator is a series of links, which connects the hand to the base, with each link connected to the next by an actuated joint. If a coordinate frame is attached to each link, the relationship between two links can be described with a homogeneous transformation matrix  an A matrix. The first A matrix relates the first link to the base frame, and the last A matrix relates the hand frame to the last link. We use a sequence of these A matrices to describe the transform from the base to the hand of the manipulator, a sequence called the forward kinematic transform of the manipulator
In the kinematic analysis of manipulator position, there are two separate problems to solve: direct kinemalics, and inverse kinematics. Direct kinematics involves solving the forward transformation equation to find the location of the hand in terms of the angles and displacements between the links. The angles and displacements between the links are called joint coordinates and are described with link variables, while the location of the hand in space is described with Cartesian coordinates. Inverse kinematics involves solving the inverse transformation equation to find the relationships between the links of the manipulator from the location of the hand in space.
Inverse kinematics is the more difficult problem to solve and, for some manipulators, closed form solutions cannot be found. However, constraints are usually placed on manipulator design so that the inverse solution can be found; without this, the robot is difficult to control in Cartesian space. The inverse kinematic solution for a manipulator is usually derived from the direct kinematic transform, so direct kinematics will be discussed first. Before we discuss the direct kinematic algorithm in detail, we will develop a method for assigning coordinate frames to links. To assign a coordinate frame to a link, the relationship between it and the previous link must be understood. This relationship comprises the rotations and translations that occur at the joints.
Forward Kinematics  Computation of the position, orientation and velocity of the end effector, given the displacements and joint angles. 
Reverse Kinematics  Computation of the joint displacements and angles from the end effectors position and velocity. 
Kinematics depends on HOMOGENEOUS TRANSFORMATIONS
Consider a point in space with the coordinates:
v = ai + bj + ck
where : i, j, k are the unit vectors along the X,Y,Z axes
v can also be written as:
Hence:
Note:
[0 0 0 w]^{T} : if w is not equal to 0, this defines the origin
[a b c 0]^{T} : represents directions
[0 0 0 0]^{T} : undefined
Transformations A transformation H is a 4 by 4 matrix, so given a point u, its transformation to v is:
Consider two general coordinate frames F1 and F2, with origins at P1 and P2.
The general relationship, H, between frames F_{2} and F_{1} is therefore given by:
To simplify considerations, four specific matrices can be constructed.
Rotation of about the x axis.
As x_{1} and x_{2} are coincident, the angle is 0, hence l_{x} = 1.
The angles between x_{2}, and y_{1} and z_{1} are 90^{o}, hence
Consider y_{2}. 90^{o} to x_{1} m_{x} =
Between the two y axis is , hence
z_{1} to y_{2} is 90  , hence
As the origins coincide, p_{x} = p_{y} = p_{z} = 0
Hence Rot[x,q] =
Rotation about the y axis
Rotation about the z axis
Translation
Let u = [ 7 3 2 1 ]T, and is rotated by 90o around the z axis to v:
v = Rot[z 90o]
u =
If v is the rotated around the y axis by 90o to w:
Hence w = Rot[y 90]Rot[z 90]u
As expected Rot[z 90]Rot[y 90] ¹ Roy[y 90]Rot[z 90], as shown in the figure.
Consider a point being moved through the following transformations
Trans[4 3 7]Rot[y 90] Rot[z 90] =
If the origin of the original frame was [0 0 0 1]T, this will transform to
If we repeat this for the unit vectors;
x = [1 0 0 1] transforms to [4 2 7 1] y = [0 1 0 1] transforms to [4 3 8 1] z = [0 0 1 1] transforms to [5 3 7 1]
If the four vectors are plotted, the new coordinate frame can be constructed. The directions of the vectors are found by subtracting the position of the origin, and extending the vector to infinity.
This indicates that the new x axis is at 90o to the original x axis, 0o to the original y axis and 90o to the original z axis, as drawn in the diagram.
This matrix has the same values as the first column of the original vector. Therefore the transformation matrix directly gives the origin and the position vectors of the new coordinate frame relative to the reference frame.
Up to this point we have considered all movements to be made relative to a fixed coordinate frame. Hence the above move can be summarised as
Frame translated within the reference frame
It is also possible to interpret the same move as:
Therefore the direction of multiplication of the transformations is crucial to obtaining the correct final position.
If we postmultiply a transform representing a frame by a second transform describing a translation or rotation, then that translation or rotation is made with respect to the frame described by the first transformation
If we premultiply a frame transformation by a second transform describing a translation or rotation, then that translation or rotation is made with respect to the base coordinate frame.
Consider a frame C and an arbitrary transformation T
Result with respect to the base coordinate frame:
Result with respect to the frame coordinate frame:
Given that:
Hence:
The sequence of the moves can be identified from the diagram.
As considered in an earlier section, a manipulator consists of a selection of links and joints, each with its own coordinate frame, and described by four parameters.
It is possible to state:
[A_{1}] is the position and orientation of the first link with reference to the manipulator's origin. [A_{2}] is the position and orientation of the second link relative to the first link.
Hence for a multijointed manipulator, [Tn] = [A1] [A2].......[An]
and,
If the end effector is considered
where n is the approach vector, and points along the direction that the end effector will approach and object.
m is the orientation vector, conventionally from fingertip to finger tip
l is the final vector, and is defined as l = m´n
p is the position vector
Specification of Orientation
[Tn] has 16 elements, only 12 of which have any real meaning.
· No limit on the value of px py pz
· The l, m and n vectors must satisfy: m.m = 1, n.n = 1, m.n = 0.
It is required to apply a set of rules to the orientation of the end effectors. Two main schemes are possible, either Euler angles or RPY : roll, pitch and yaw
· Rotation around the z axis is defined as roll · Rotation around the y axis is defined as pitch · Rotation around the x axis is defined as yaw
The order is defined as:
and on solving equals:
[Tn] =
Position can be specified in the form, px, py pz or in another coordinate system, e.g. spherical
Order of the translations are:
Giving:
The orientation will be computed with reference to the rotational coordinate frame, if we require it to be with reference to the base fame, we need to post multiply as follows
resulting a spherical transform of:
In summary [Tn] can be defined as:
The joints and links have been defined as:
To fully describe the relationship, a set of coordinate frames are assigned to each link
Equate the manipulator transformation matrix and the general orientation matrix to obtain the hand orientation angles.
The relationship between the coordinate frame of link n to the coordinate frame of link n1 is given by:
Specification of [Tn] in terms of [A]
For a six degree of freedom manipulator it is possible to write:
If in addition a tool is attached to the robot with a transformation E, and the manipulator is related to the systems reference frame by Z:
Represented by the manipulator transform graph.
If this is applied to the 5 axis manipulator
[Tn] is formally defined as
The robots workspace can be formally defined as
where
The robot control strategy is formally defined as:
where DH is the number of pulses or equivalent required to move the joints, i.e. the command vector.
Dq is the demand vector
p is the precision vector, i.e. counts or equivalent per degree or unit displacement
C is the coupling matrix, which identifies any coupling between links, for example if the robot includes a parallel bar mechanism
General properties of the solution The reverse kinematic solution can be expresses as, given the position and orientation of the manipulator, the values of q that satisfy the initial [Tn], and
If the manipulator has more than six joints, we have a number of possible solutions to the kinematic problem. A manipulator that has more than six joints is defined as a kinematically redundant manipulator, because it has more degrees of freedom than is necessary to establish an arbitrary tool configuration.
A kinematically redundant system has a number of significant advantages:
Even if a robot or manipulator is not redundant a number of joint solutions are possible for a required tool position.
The approach to reverse kinematics is to equate the variables in the [T] matrix with those in the tool space matrix. Hence, all the elements in the tool matrix must equal those of the forward kinematic equations:
As the solutions contain sin1 and cos1, uncertainties can arise. These can be minimised by:
Case 
Quadrent 
atan2(x,y) 
x > 0 
1,4 
arctan(y/x) 
x = 0 
1,4 
sgn(y)(p/2) 
x < 0 
2,3 
arctan(y,x) + [sgn(y)p] 


Right Handed, Elbow Down 
Left handed, Elbow Up 
R M Crowder
January 1998