In Chapter 4, we studied the forward kinematics of open chains: given the joint configuration

theta, find the configuration of the end-effector frame {b} relative to the space frame {s}.

In this chapter, we study the inverse kinematics problem: given a desired end-effector configuration,

find joint positions that achieve it.

This is obviously an important problem, since we have to control the end-effector's configuration

for it to purposefully interact with the world.

Inverse kinematics is trickier than forward kinematics.

Unlike the forward kinematics, which has a unique end-effector configuration for a given

set of joint values, the inverse kinematics problem may have zero, one, or multiple solutions

for the joint values theta given the desired end-effector configuration.

We'll see an example of this in a moment.

There are two approaches to solving the inverse kinematics problem: first, in some cases we

can find analytic closed-form solutions to the nonlinear equations.

These solutions typically take advantage of geometric insight into the problem and the

particular structure of the robot.

For arbitrary robot kinematics, however, analytic solutions may not exist, so a second approach

is to use an iterative numerical method.

This approach requires an initial guess at a solution, then iteratively drives the initial

guess toward a solution.

Unlike analytic methods, this approach requires an initial guess and will only find one solution,

not all possible solutions, but it applies to robots with arbitrary kinematics.

In this video we will analytically solve the inverse kinematics for a planar 2R robot.

For this example, and indeed many of inverse kinematics problems in robotics, it is useful

to define the two-argument arctangent function.

The atan2 function takes the x and y coordinates of a point in the plane and returns the angle

of a vector from the origin to the point relative to the x-axis.

Another useful tool is the law of cosines.

If a, b, and c are the lengths of the sides of a triangle, and capital C is the interior

angle opposite side c, then the length of edge c is given by c-squared equals a-squared

plus b-squared minus 2ab cosine capital C.

For a planar 2R robot, the inverse kinematics problem is to find the joint angles theta_1

and theta_2 such that the tip of the robot is at the point (x,y).

The workspace of the tip of the robot is bounded by circles: the inner circle has radius L_1

minus L_2, and the outer circle has radius L_1 plus L_2.

If we request a tip position (x,y) outside the workspace, there are no inverse kinematics

solutions.

If we request a tip position on the boundary of the workspace, there is one solution: theta_2

is pi on the inner boundary and theta_2 is zero on the outer boundary.

If we request a tip position in the interior of the workspace, then there are two solutions,

as shown in the figure.

For the solution shown on the right, here, gamma is the angle from the x-axis to the

tip and alpha and beta are interior angles of the triangle formed by link_1, link_2,

and the line from tip to joint_1.

Gamma is determined from the atan2 function and alpha and beta are determined from the

law of cosines.

With these, the two solutions to the inverse kinematics for points in the interior of the

workspace are shown here.

The book discusses other examples of inverse kinematics, particularly for robots with 6

joints, and the atan2 function and law of cosines are useful in those examples, too.

In the next video we study numerical inverse kinematics, which is useful for cases where

no closed-form analytic solution exists.