# Product of exponentials formula

The product of exponentials (POE) method is a robotics convention for mapping the links of a spatial kinematic chain. It is an alternative to Denavit–Hartenberg parameterization. While the latter method uses the minimal number of parameters to represent joint motions, the former method has a number of advantages: uniform treatment of prismatic and revolute joints, definition of only two reference frames, and an easy geometric interpretation from the use of screw axes for each joint.

The POE method was introduced by Roger W. Brockett in 1984.

## Method

The following method is used to determine the product of exponentials for a kinematic chain, with the goal of parameterizing an affine transformation matrix between the base and tool frames in terms of the joint angles ${\textstyle \theta _{1}...\theta _{N}.}$ ### Define "zero configuration"

The first step is to select a "zero configuration" where all the joint angles are defined as being zero. The 4x4 matrix ${\textstyle g_{st}(0)}$ describes the transformation from the base frame to the tool frame in this configuration. It is an affine transform consisting of the 3x3 rotation matrix R and the 1x3 translation vector p. The matrix is augmented to create a 4x4 square matrix.

$g_{st}(0)=\left[{\begin{array}{cc}R&p\\0&1\\\end{array}}\right]$ ### Calculate matrix exponential for each joint

The following steps should be followed for each of N joints to produce an affine transform for each.

#### Define the origin and axis of action

For each joint of the kinematic chain, an origin point q and an axis of action are selected for the zero configuration, using the coordinate frame of the base. In the case of a prismatic joint, the axis of action v is the vector along which the joint extends; in the case of a revolute joint, the axis of action ω the vector normal to the rotation.

#### Find twist for each joint

A 1x6 twist vector is composed to describe the movement of each joint. For a revolute joint,

$\xi _{i}=\left({\begin{array}{c}-\omega _{i}\times q_{i}\\\omega _{i}\\\end{array}}\right).$ For a prismatic joint,

$\xi _{i}=\left({\begin{array}{c}v_{i}\\0\\\end{array}}\right).$ The resulting twist has two 1x3 vector components: Linear motion along an axis (v) and rotational motion along the same axis (ω).

$\xi =\left({\begin{array}{c}v\\\omega \\\end{array}}\right).$ #### Calculate rotation matrix

The 3x1 vector ω is rewritten in cross product matrix notation:

${\hat {\omega }}=\left[{\begin{array}{ccc}0&-\omega _{3}&\omega _{2}\\\omega _{3}&0&-\omega _{1}\\-\omega _{2}&\omega _{1}&0\\\end{array}}\right].$ Per Rodrigues' rotation formula, the rotation matrix is calculated from the rotational component:

$e^{{\hat {\omega }}\theta }=I+{\hat {\omega }}\sin {\theta }+{\hat {\omega }}^{2}(1-\cos {\theta }).$ #### Calculate translation

The 3x1 translation vector is calculated from the components of the twist.

$t=(I-e^{{\hat {\omega }}\theta })(\omega \times v)+\omega \omega ^{T}v\theta$ where I is the 3x3 identity matrix. 

#### Compose matrix exponential

For each joint i, the matrix exponential ${\textstyle e^{{\hat {\xi }}_{i}\theta _{i}}}$ for a given joint angle ${\textstyle \theta }$ is composed from the rotation matrix and translation vector, combined into an augmented 4x4 matrix:

$e^{{\hat {\xi }}_{i}\theta _{i}}=\left[{\begin{array}{cc}e^{{\hat {\omega }}\theta }&t\\0&1\\\end{array}}\right]$ ### Compose structure equation

The matrix exponentials are multiplied to produce a 4 × 4 affine transform ${\textstyle g_{d}(\theta _{i},\ldots ,\theta _{n})}$ from the base frame to the tool frame in a given configuration.

$g_{d}=e^{{\hat {\xi }}_{1}\theta _{1}}\cdots e^{{\hat {\xi }}_{n}\theta _{n}}g_{st}(0).$ ## Application to kinematics

Forward kinematics may be computed directly from the POE chain for a given manipulator. Inverse kinematics for most common robot manipulators can be solved with the use of Paden–Kahan subproblems.