Kinematics
The geometry of motion without forces. How joint angles map to tool pose and back, the DH and product-of-exponentials conventions, Jacobians, singularities and what to do with redundant joints.
Overview
Kinematics is the geometry of a robot’s motion, ignoring the forces that cause it. It answers two questions. Given the joint angles, where is the tool? Given where the tool should be, what joint angles put it there? The first is forward kinematics and always has one answer. The second is inverse kinematics and may have none, one, several or infinitely many.
Everything above the motor drives uses kinematics. Motion planners check poses with it, controllers map tool-space errors into joint commands with its Jacobian, and calibration corrects its parameters. This hub is for engineers who will write or debug that layer, or who need to know why an arm suddenly slowed down near a particular pose.
Key ideas
Forward kinematics: DH and product of exponentials
For a serial arm, forward kinematics is a product of one transform per joint. The question is how to describe each transform.
The Denavit-Hartenberg (DH) convention, from Denavit and Hartenberg’s 1955 paper, attaches a frame to each link under strict rules so that each joint needs only four numbers. It is compact and appears in most robot datasheets. Its weakness is that two variants are in common use, usually called standard and modified, and they place the frames differently. A DH table copied from one variant into code written for the other gives a plausible but wrong arm.
The product of exponentials (PoE) formula, introduced by Brockett, describes each joint by its screw axis in the base frame when the arm is at its home pose. The tool pose is the home pose premultiplied by one matrix exponential per joint. There is no per-link frame to place, the parameters have a direct physical meaning, and the formulation connects directly to the Lie group tools in /topics/spatial-math/. Lynch and Park’s textbook builds its kinematics on PoE.
URDF, the format most ROS tools read, uses neither. Each joint carries an origin transform and an axis, which is closer to PoE in spirit. See /reference/dh-and-poe/ for both conventions side by side.
Jacobians and singularities
The Jacobian J is the matrix of partial derivatives of tool pose with respect to joint angles. Multiplied by the joint velocity vector, it gives the tool’s linear and angular velocity. Its transpose does the reverse job for forces: it maps a force and torque at the tool to the joint torques that balance it. The same matrix therefore serves velocity control, force control and static load checks.
A singularity is a configuration where J loses rank. At that pose the tool cannot move in some direction, however fast the joints turn. Near it, small tool motions in that direction demand very large joint speeds. Common cases on a 6-joint arm with a spherical wrist are the wrist singularity, where two wrist axes line up, and the elbow singularity, where the arm is fully stretched at the edge of its workspace. Many industrial controllers slow down or stop near them. Planners avoid them by monitoring the smallest singular value of J, or the manipulability measure, the square root of the determinant of J times J transposed.
Inverse kinematics: analytic and numerical
Many 6-joint arms with spherical wrists have closed-form IK. The solution is fast, exact, and enumerates every solution, often several per pose for elbow, shoulder and wrist flips. The cost is that it must be derived per robot.
Numerical IK works for any chain. Starting from a guess, it repeatedly solves a linear system with the Jacobian to reduce the pose error. The plain pseudoinverse step becomes unstable near singularities. Damped least squares adds a small regularising term that trades a little accuracy for stability, as Buss’s tutorial note explains. Numerical solvers return one solution, which depends on the starting guess, and can fail when joint limits block the path to it.
Redundancy
A robot with more joints than the task needs is redundant. A 7-joint arm placing a tool in 6-DoF space has a one-dimensional family of joint solutions for each tool pose, usually visible as the elbow swinging while the hand stays still. That spare motion lives in the null space of J. A controller can add any null-space velocity without disturbing the tool, and uses it for secondary goals: staying away from joint limits, keeping clear of obstacles or keeping manipulability high.
Where to start
Work through /learn/beginner/03-forward-kinematics/ and then /learn/beginner/04-inverse-kinematics/. The project /projects/two-link-arm-draws-with-ik/ puts both into a MuJoCo simulation. Keep /reference/dh-and-poe/ open while you work.
Tools and platforms
| Tool | What it is for | Licence | Platform |
|---|---|---|---|
| Robotics Toolbox for Python | DH and ETS models, FK, Jacobians and numerical IK in Python | MIT | /platforms/opensource/ |
| Pinocchio | Fast kinematics and dynamics with analytical derivatives, C++ and Python | BSD-2-Clause | /platforms/opensource/ |
| Orocos KDL | Kinematic chains and solvers. MoveIt 2’s default IK plugin is built on it | LGPL-2.1-or-later | /platforms/ros/ |
| TRAC-IK | IK that runs a KDL-based solver and an SQP solver in parallel, better with joint limits | BSD-3-Clause | /platforms/ros/ |
| MoveIt 2 | Motion planning framework with pluggable IK solvers | BSD-3-Clause | /platforms/ros/ |
| MuJoCo | Kinematics and Jacobians of an MJCF model inside a simulator | Apache-2.0 | /platforms/mujoco/ |
Common mistakes
- Mixing standard and modified DH. Check which one the datasheet uses before typing a single number.
- Comparing your FK with the robot controller’s and forgetting the tool offset (TCP) or the base mounting transform.
- Trusting the first IK solution. Check joint limits, collisions and whether it is the branch you wanted (elbow up or down).
- Commanding straight-line tool motions through a singularity. The joint speeds required grow without bound near it.
- Using the pseudoinverse without damping in a real-time loop.
Going deeper
- Kevin M. Lynch and Frank C. Park, Modern Robotics, Cambridge University Press, 2017. Chapters 4 to 6 cover FK, velocity kinematics and IK with PoE.
- Richard M. Murray, Zexiang Li and S. Shankar Sastry, A Mathematical Introduction to Robotic Manipulation, CRC Press, 1994. Free PDF from the authors.
- J. Denavit and R. S. Hartenberg, A kinematic notation for lower-pair mechanisms based on matrices, Journal of Applied Mechanics 22(2), 1955.
- R. W. Brockett, Robotic manipulators and the product of exponentials formula, in Mathematical Theory of Networks and Systems, Springer Lecture Notes in Control and Information Sciences.
- Samuel R. Buss, Introduction to inverse kinematics with Jacobian transpose, pseudoinverse and damped least squares methods, University of California, San Diego.