Forward kinematics

Suppose that an eye tracking method has estimated the eye orientation relative to the human skull and it needs to be placed accordingly in the virtual world. This transformation must involve a combination of the head and eye transforms. For a more complicated problem, consider placing the right index finger in the world by using pose of the torso along with all of the angles formed between bones at each joint. To understand how these and other related problems are solved, it is helpful to first consider 2D examples.

Figure 9.19: Two types of 2D joints: A revolute joint allows one link to rotate with respect to the other, and a prismatic joint allows one link to translate with respect to the other.
...ein} \\
{\bf Revolute} & {\bf Prismatic}

Each body of a multibody system is called a link, and a pair of bodies are attached at a joint, which allows one or more DOFs of motion between them. Figure 9.19 shows two common ways that one planar body might move while attached to another. The revolute joint is most common and characterizes the motion allowed by a human elbow.

Figure 9.20: The body frame of each $ B_i$, for $ 1 < i < m$, is based on the joints that connect $ B_i$ to $ B_{i-1}$ and $ B_{i+1}$.

Figure 9.21: Applying the transformation $ T_2 T_3$ to the model of $ B_3$. If $ T_1$ is the identity matrix, then this yields the location in the virtual world of points in $ B_3$.
...3$ puts $B_3$ in $B_1$'s body frame \\

Consider defining a chain of $ m$ links, $ B_1$ to $ B_m$, and determining the location of a point on the last link. The points on each link are defined using coordinates of its own body frame. In this frame, the body appears as shown for $ B_{i-1}$ in Figure 9.20, with the origin at the joint that connects $ B_{i-1}$ to $ B_{i-2}$ and the $ x_{i-1}$ axis pointing through the joint that connects $ B_{i-1}$ to $ B_i$. To move the points on $ B_i$ to the proper location in the body frame of $ B_{i-1}$, the homogeneous transform

$\displaystyle T_i = \begin{pmatrix}\cos\theta_i & -\sin\theta_i & a_{i-1}  \sin\theta_i & \cos\theta_i & 0  0 & 0 & 1  \end{pmatrix} .$ (9.27)

is applied. This rotates $ B_i$ by $ \theta_i$, and then translates it along the $ x$ axis by $ a_{i-1}$. For a revolute joint, $ \theta_i$ is a variable, and $ a_{i-1}$ is a constant. For a prismatic joint, $ \theta_i$ is constant and $ a_{i-1}$ is a variable.

Points on $ B_i$ are moved into the body frame for $ B_1$ by applying the product $ T_2 \cdots T_i$. A three-link example is shown in Figure 9.21. To move the first link $ B_1$ into the world frame, a general 2D homogeneous transform can be applied:

$\displaystyle T_1 = \begin{pmatrix}\cos\theta_i & -\sin\theta_i & x_t  \sin\theta_i & \cos\theta_i & y_t  0 & 0 & 1  \end{pmatrix} .$ (9.28)

This transform is simply added to the matrix product to move each $ B_i$ by applying $ T_1 T_2 \cdots T_i$.

Figure 9.22: Types of 3D joints arising from the 2D surface contact between two bodies.
joint} \\
2 DOFs & 3 DOFs & 3 DOFs

A chain of 3D links is handled in the same way conceptually, but the algebra becomes more complicated. See Section 3.3 of [163] for more details. Figure 9.22 shows six different kinds of joints that are obtained by allowing a pair of 3D links to slide against each other. Each link is assigned a convenient coordinate frame based on the joints. Each homogeneous transform $ T_i$ contains a mixture of constants and variables in which the variables correspond to the freedom allowed by the joint. The most common assignment scheme is called Denavit-Hartenberg parameters [110]. In some settings, it might be preferable to replace each $ T_i$ by a parameterized quaternion that rotates the body, followed by a simple addition that translates the body.

A tree of links may also be considered; a common example is a human torso serving as the root, with a head, two arms, and two legs being chains that extend from it. The human hand is another example. Coordinate frames in this case are often assigned using Kleinfinger-Khalil parameters [148].

Steven M LaValle 2016-12-31