The inverse position kinematics (“IPK”) solves the following problem:
Given the actual end-effector pose
, what are the corresponding
joint positions
?
In contrast to the forward problem, the solution of the inverse problem is not always unique: the same end-effector pose can be reached in several configurations, corresponding to distinct joint position vectors. It can be proven, [35, 56], that a 6R manipulator (a serial chain with six revolute joints, as in Figs 1, 2, and 4), with a completely general geometric structure, has sixteen different inverse kinematics solutions, found as the solutions of a sixteenth order polynomial.
As for the forward position and velocity kinematics, this Section presents both a numerical procedure for general serial structures, and the dedicated closed-form solution for robots of the 321 type, as described in [21]. Some older references describe similar solution approaches but in less detail, [27, 55, 60].
The IK of a serial arm is more complex than its FK. However, many industrial applications don’t need IK algorithms, since the desired positions and orientations of their end-effectors are manually taught: a human operator steers the robot to its desired pose, by means of control signals to each individual actuator; the operator stores the sequence of corresponding joint positions into the robot’s memory; during subsequent task execution, the robot controller moves the robot to this set of taught joint coordinates. However, the current trends towards off-line programming does require IK algorithms, and hence calibrated robots. Recall that such calibrated robots have a general kinematic structure.
Inverse position kinematics for serial robot arms with a completely general kinematic structure (but with six joints) are solved by iterative procedures, based on the Newton-Raphson approach, [55, 66]:
of the vector of six joint
positions. This estimate is, for example, the solution corresponding to a
previous nearby pose, or, for calibrated robots, the solution calculated by
the nominal model (using the procedure of the next Section if this nominal
model has a 321 structure). As with all iterative algorithms, the better
the initial guess, the faster the convergence.
. The difference between the desired end-effector
pose
(with
the real joint positions which have to be found)
and the estimated pose is “infinitesimal,” as assumed in any iterative
procedure:
![]() | (22) |
is the joint position increment to be solved by the iteration.
Solving for
yields
![]() | (23) |
is:
![]() | (24) |
The infinitesimal displacement twist
corresponding to
is easily identified from Eq. (24). On the other hand, it depends
linearly on the joint increment
through the Jacobian matrix
,
Eq. (11):
![]() | (25) |
is calculated by the numerical FVK algorithm in Sect. 7.2.
is approximated by
![]() | (26) |
The inverse of the Jacobian matrix exists only when the robot arm has six independent joints. Section 16 explains how to cope with the case of more or less than six joints.
is “small enough,” the iteration stops, otherwise Steps 2–4 are
repeated with the new estimate
.
This procedure gives an idea of the approach, but real implementations must take care of several numerical details, such as, for example:
Jacobian matrix (which is required in motion control)
is not an insurmountable task for modern microprocessors (even if the
motion controller runs at a frequency of 1000Hz or more), but nevertheless
the implementation should be done very carefully, in order not to loose
numerical accuracy.
, it is, from a numerical
point of view, not a good idea to first calculate the inverse
of the
matrix
explicitly, and then to solve the equation by multiplying the
vector
by this inverse, as might be suggested by Eq. (26). Numerically
more efficient and stable algorithms exist, [22, 66], the simplest being the
Gaussian elimination technique and its extensions.
The efficient closed-form IPK solution for the 321 structure relies again on the decoupling at the wrist centre point, [21]:
![]() | (27) |
![]() | (28) |
The robot configuration corresponding to a positive
is called the
“forward” solution, since the wrist centre point is then in front of the
“body” of the robot; if
is negative, the configuration is called
“backward.”
and
of the wrist centre point
with respect to the shoulder frame
are found by inspection of
Fig. 9:
![]() | (29) |
![]() | (30) |
A positive
gives the “elbow up” configuration (Fig. 10); the
configuration with negative
is called “elbow down.”
| q2 | = atan2 - α, | (31) |
| with | ||
| α | = atan2 . | (32) |
as input, which is
straightforwardly derived from
(a known input parameter) and
(which can be calculated as soon as the first three joint angles are
known):
| 6 4R | = 7 4R = bs 4 R 7 bs R, | (33) |
| with | ||
| 4 bsR | = R(Z,q1)R(X,-q2 - q3). | (34) |
(called the “no-flip” configuration) and
one with
(called the “flip” configuration).
In the algorithm above, a “configuration” (Sect. 3) corresponds to a particular choice of IPK solution. In total, the 321 manipulator has eight different configurations, by combining the binary decisions “forward/backward,” “elbow up/elbow down,” and “flip/no flip.” Note that these names are not standardised: the robotics literature contains many alternatives.