← Back to curriculum

Kinematics

Forward kinematics and the product of exponentials

DH parameters vs PoE, building the chain, and computing the tool pose from joint configuration.

~65 min read + exercises

Forward kinematics and the product of exponentials

Forward kinematics answers: given joint angles, where is the tool? You will see the PoE (product of exponentials) viewpoint as a clean alternative to classic Denavit–Hartenberg tables.

Figure

A 3-link planar chain — joints in, tool pose out

Forward kinematics: joint angles q → tool pose T(q)Chain frames link-by-link. Order of multiplication matters.q₁q₂q₃T_tool(q)PoE formT(q) = e^(S₁q₁) e^(S₂q₂) e^(S₃q₃) · T(0)
Each joint contributes a small transform; chained together they map q ∈ ℝⁿ to a 4×4 pose for the tool. PoE stacks these as exponentials of joint screws.

Learning objectives

  • State the forward kinematics problem for a serial manipulator.
  • Explain joint axes as screws (at least at an intuitive level).
  • Compare DH parameterization vs PoE for implementation ergonomics.

Prerequisites

  • Homogeneous transforms and SO(3) comfort.
  • Basic idea of prismatic vs revolute joints.

Step 1 — Kinematic chain mental model

A serial arm is a chain of links connected by 1-DOF joints (mostly revolute).

The base is fixed in the world (usually). Each joint qiq_i rotates (or translates) link ii relative to link i1i-1.

Checkpoint: For a 6R arm in 3D, how many degrees of freedom does the tool frame generally have (ignoring singularities)?


Step 2 — The forward kinematics map

Let qRn\mathbf{q} \in \mathbb{R}^n be the joint vector. Forward kinematics is a function:

Ttoolworld(q)SE(3)T_{\text{tool}}^{\text{world}}(\mathbf{q}) \in \mathrm{SE}(3)

In practice you implement this as a chain of transforms:

Ttoolworld=T1world(q1)T21(q2)T_{\text{tool}}^{\text{world}} = T_{1}^{\text{world}}(q_1)\, T_{2}^{1}(q_2)\, \cdots

Exercise: Why does the multiplication order matter?


Step 3 — Denavit–Hartenberg (what it buys you)

DH assigns four parameters per link in a standardized way so each joint contributes a known template matrix.

Pros: compact tables, textbook ubiquity. Cons: easy to get frame conventions wrong; ambiguities across authors.

Checkpoint: What is the most common source of bugs when copying a DH table from a paper into code?


Step 4 — Product of exponentials (modern viewpoint)

PoE expresses the manipulator as exponentials of twists corresponding to joint axes in a reference configuration q=0\mathbf{q} = \mathbf{0}:

T(q)=eS1q1eS2q2eSnqnT(0)T(\mathbf{q}) = e^{S_1 q_1}\, e^{S_2 q_2}\, \cdots\, e^{S_n q_n}\, T(\mathbf{0})

where each SiS_i encodes the ii-th joint screw in the reference configuration (details vary by textbook).

You do not need to implement matrix exponentials from scratch today — you need the idea: each joint motion is an elementary screw motion applied sequentially.

Exercise (conceptual): Why might PoE be nicer when CAD gives you axis lines directly?


Step 5 — Wrist centers and decoupling (intuition)

Many industrial arms have a spherical wrist so orientation and position decouple near the tool — simplifying IK in many workspaces.

Not all robots have this luxury; mobile manipulators on uneven ground break simple assumptions.


Check your understanding

  1. What is the input and output of forward kinematics?
  2. Why is T(0)T(\mathbf{0}) important in a PoE formulation?
  3. Name one reason your simulated FK might disagree with the physical robot.

Lab-style stretch goal (optional)

Implement FK for a 2-link planar arm in Python and animate the end-effector path as joint angle q1q_1 sweeps.