Forward & Inverse Kinematics + DH Parameters — Robotics Reference
1. At a glance
Kinematics is the geometry of motion: the study of position, velocity, and acceleration of a mechanism without regard to the forces that cause it. It is the first analytical layer above the CAD model. Once you can write the kinematic equations of a serial arm or a parallel platform, every downstream problem — dynamics, control, planning, calibration, vision-based servoing — has a coordinate system to live in.
For a serial manipulator with joints, kinematics splits into two halves:
- Forward kinematics (FK): given the vector of joint values , compute the pose of the end-effector (tool) frame in the base frame. FK is always well-defined, always closed-form, fast (microseconds).
- Inverse kinematics (IK): given a desired end-effector pose , find joint values such that . IK is multi-valued, often no closed form, can fail (no solution outside workspace, infinite solutions at redundancy or singularity).
The Denavit–Hartenberg (DH) convention (Denavit & Hartenberg 1955) parameterises a serial kinematic chain with exactly four numbers per link: . It is the lingua franca of industrial robotics, taught in every undergraduate text (Craig, Spong, Siciliano), and used as the spec layer in URDF/SDF descriptions, in calibration routines, and in vendor controller manuals.
First ask before applying DH or writing IK code:
- Is the arm a serial chain or parallel (delta/Stewart/hexapod)? DH only fits serial chains.
- How many DOF? 5-DOF SCARA, 6-DOF general, 7-DOF redundant — each has its own IK structure.
- Are the last three axes intersecting (spherical wrist)? If yes → closed-form 6-DOF IK exists (Pieper 1968).
- Standard DH (Craig “introduction” convention) or modified DH (Craig “textbook” convention)? Mixing the two corrupts every FK.
- What does the controller vendor publish? UR, ABB, KUKA, Fanuc all release official DH tables — start there before re-deriving.
Where kinematics sits in the design stack:
- Builds on linear algebra (rotation matrices, homogeneous transforms), trig, and the structure of .
- Prerequisite for dynamics-rigid-body (forces + inertias on top of kinematics), trajectory generation (interpolate in joint or task space), path planning (configuration-space search needs FK to check collisions), and visual servoing (image Jacobian composes with the manipulator Jacobian).
2. First principles
Rigid-body pose:
The pose of a rigid body in 3D has six degrees of freedom: three for position and three for orientation , the special orthogonal group of rotation matrices satisfying and . Together they form the special Euclidean group , the configuration space of a free rigid body.
Four common parameterisations of rotation, each with trade-offs:
| Representation | Parameters | Pros | Cons |
|---|---|---|---|
| Rotation matrix | 9 (6 constraints) | No singularity; composes by multiplication | Memory; renormalisation drift |
| Unit quaternion | 4 (1 constraint ) | Compact; no gimbal lock; cheap SLERP | Double cover () |
| Axis-angle | 3 (1 + 2) | Intuitive; geodesic distance | Singular at and |
| Euler / RPY (roll-pitch-yaw) | 3 | Human-readable | Gimbal lock at pitch = |
Convert by Rodrigues’ formula:
where is the skew-symmetric matrix of .
Homogeneous transforms
A pose in is encoded compactly as a homogeneous transform:
Composition is matrix multiplication: . Reading the chain right-to-left, acts first in the local (body) frame of B; left-to-right reading treats each as a transform in the fixed (world) frame. This left/right rule causes more bugs than any other single thing in robot kinematics — pick a convention and document it.
The inverse is not a 4×4 inverse in general; instead exploit structure:
Standard DH (Denavit–Hartenberg 1955)
Attach a coordinate frame to each link of a serial chain following the rules:
- aligns with joint axis (axis of rotation for revolute; direction of translation for prismatic).
- aligns with the common normal from to , pointing from to .
- completes a right-handed frame.
Then the four DH parameters per link are:
| Param | Name | Geometric meaning |
|---|---|---|
| link length | distance along from to | |
| link twist | angle about from to | |
| link offset | distance along from to | |
| joint angle | angle about from to |
For a revolute joint, is the joint variable and the other three are constant. For a prismatic joint, is the variable.
The transform from frame to frame is:
Expanded:
where , .
Modified DH (Craig 1986)
Craig’s textbook uses a modified convention in which frame is attached at joint (not at joint ). The four parameters are renumbered and the transform becomes:
Modified DH is dominant in Franka Emika documentation, Pinocchio (when not using URDF directly), and most modern robotics textbooks. Both conventions are valid — they describe the same physical robot — but the numerical values differ. The number-one DH bug is reading a “modified” table into a “standard” expression. Always document which convention.
Joint types and the full chain
For a serial -link manipulator, the end-effector pose in the base frame is the product:
For revolute-only arms (R), . For mixed R/P arms, is whichever of is variable.
This single product is all of forward kinematics. Inverse kinematics asks the inverse question: given , solve a system of (typically) twelve nonlinear equations (the nine rotation entries with six constraints, plus three position entries) for the joint variables.
3. Practical math
Forward kinematics — the loop
Pseudocode (any language):
T = I4 # 4x4 identity
for i in 1..n:
T = T @ DH(a[i], alpha[i], d[i], theta[i] + q[i] if revolute else theta[i])
# for prismatic: pass d[i] + q[i] instead
return T
Cost: floating-point multiplies for a 6-DOF arm — well under 10 µs on any modern CPU. Robotics-grade libraries (KDL, Pinocchio, Drake) unroll the product, cache trig values, and add SIMD; they reach s per FK call.
Inverse kinematics — analytical
For 6-DOF arms with a spherical wrist (last three axes intersect at a single wrist centre ), the IK problem decouples (Pieper 1968):
- Compute , where is the desired orientation and is the tool offset along the wrist’s terminal axis.
- Solve the position-only sub-problem (joints 1–3) for — this is two coupled trig equations, closed-form.
- Solve the wrist sub-problem (joints 4–6) by extracting Euler angles from .
A 6-DOF arm with a spherical wrist generically has eight IK solutions — two for shoulder (“lefty/righty”), two for elbow (“up/down”), two for wrist (“flip/no-flip”). The controller must pick one by configuration constraint; switching mid-trajectory causes “elbow flip” violence.
Inverse kinematics — numerical
When no closed form exists (7-DOF arms, unconventional geometries, calibrated-but-non-DH models), iterate on the residual. Define error vector as 6×1 (position + axis-angle of orientation error), and run Newton’s method:
where is the Moore–Penrose pseudo-inverse. Damped least squares (DLS), also called the Levenberg–Marquardt step, is the production-grade variant — it stays well-behaved near singularities:
with adaptive damping , where is the smallest singular value of and is the activation threshold (typical –, –).
Convergence: 5–20 iterations from a good seed; one Newton step is one FK plus one Jacobian plus one solve, so s–ms total in production C++.
The Jacobian
The geometric Jacobian maps joint velocities to end-effector twist (linear + angular velocity):
Column is built from the joint type:
- Revolute joint :
- Prismatic joint :
where is the joint axis (third column of ) and , are the origin of frame and the end-effector position, both in base coordinates.
The analytical Jacobian replaces the angular velocity with the time derivative of the chosen orientation parameterisation (RPY, quaternion, axis-angle). It is related to by a block-diagonal transform that is singular at the orientation parameterisation’s own singularity (gimbal lock for RPY).
Singularities and manipulability
A configuration is a kinematic singularity if loses rank. Three families on a 6-DOF arm:
- Wrist singularity: axes 4 and 6 become parallel ( or ). Loses one DOF — the wrist cannot resolve rotation about that axis without infinite .
- Elbow singularity: the arm is fully extended ( at workspace boundary). Loses the radial DOF at the boundary.
- Shoulder singularity: the wrist passes over the base axis ( undefined). Loses the azimuthal DOF.
Yoshikawa’s (1985) manipulability
is a single scalar that goes to zero at every singularity and measures the volume of the velocity-ellipsoid that joint motion produces in task space. Used as a cost in redundancy resolution, calibration trajectory design, and workspace optimisation.
Velocity / acceleration kinematics
- — forward velocity
- — inverse velocity (least-squares; exact for non-redundant non-singular)
- — forward acceleration; the term is the Coriolis-like contribution
- For a redundant arm (), the null-space projection adds a self-motion term without affecting end-effector pose: .
Worked example 1 — 2-link planar arm forward kinematics
Two-link planar arm in the -plane: link 1 length m, link 2 length m. Both joints revolute, from , measured at the elbow.
Standard DH table (planar, so , ):
| (m) | (rad) | (m) | (rad) | |
|---|---|---|---|---|
| 1 | 0.40 | 0 | 0 | |
| 2 | 0.30 | 0 | 0 |
FK by direct geometry (faster than the full product for planar):
Plug in , :
- m
- m
- rad
So with the shoulder at 30° and elbow at 60° the tool sits at m pointing straight up.
Worked example 2 — 2-link planar arm inverse kinematics
Inverse the same arm to reach m.
Step 1 — reachability check. Distance from base m. Reachable annulus is , i.e. . ✓
Step 2 — elbow angle (cosine law).
Two solutions — “elbow up” () and “elbow down” (). Pick elbow-up: .
Step 3 — shoulder angle. Use atan2 with the standard 2-link decomposition:
With : , .
.
Step 4 — verify. FK with , :
- m ✓
- m ✓
The “elbow down” alternative is , — both reach the same point with different elbow configurations.
Worked example 3 — Jacobian and singularity of the 2-link planar arm
Differentiate the FK equations:
where , , etc.
(after simplification).
Singularity: or . These are exactly the fully extended and fully folded elbow configurations — the workspace boundary and the centre. Yoshikawa manipulability is maximum at , where the manipulator can move equally in and .
Plug in our example : m² — well away from singularity.
4. Design heuristics
- Spherical-wrist serial 6-DOF is the production default. Stäubli, ABB, KUKA, Fanuc, Universal Robots, Yaskawa, Doosan, Hyundai, Kawasaki — all use the same architectural pattern (3 base axes + 3 wrist axes intersecting). It gives you closed-form IK at ~100 µs and a quasi-spherical workspace.
- Prefer analytical IK in production. Sub-100-µs evaluation, deterministic execution time, no convergence failures. Numerical IK is for prototyping, redundant arms, or arms with calibrated non-DH errors that break the closed form.
- Always provide a seed near the current configuration. Numerical IK from a random seed can converge to a kinematically valid but operationally absurd posture (“elbow flip”). The seed is the cheapest correctness fix in the toolkit.
- Use damped least squares, not bare pseudo-inverse. DLS gracefully traverses singularities at the cost of small tracking error; bare produces unbounded joint velocities and faults the drive.
- 7-DOF redundancy is worth the licensing cost. KUKA LBR iiwa, Franka Panda, Kinova Gen3 — the extra joint lets you avoid joint limits, obstacles, and singularities without changing the end-effector path. Parameterise the redundancy by the elbow circle angle (“swivel angle”) and expose it as a planning variable.
- SCARA for high-cycle pick-and-place. 4-DOF (X-Y-Z-yaw) is enough for 80% of pick-and-place; the closed-form IK is trivial and cycle times are 2–4× faster than a 6-DOF arm at the same payload.
- Delta parallel arms for ultra-fast pick. ABB FlexPicker IRB 360 hits 200+ picks/min; the analytical IK is a Stewart-platform geometry problem (intersection of three spheres), not DH.
- Choose between standard DH and modified DH once, document it once. Mixing the two in the same codebase costs days. Modified DH is more popular in academic code (Pinocchio, Drake’s MultibodyPlant); standard DH is more popular in vendor controller manuals.
- Tool transforms are your problem, not the controller’s. Every flange has a TCP offset (suction cup, gripper, welding torch). The controller exposes as a configurable constant — wrong tool transform produces a constant offset error that looks like a calibration bug.
- Calibrate before believing CAD-derived DH parameters. Manufacturing tolerances put 0.5–2 mm of end-effector error into a nominally-correct DH table; ID the four parameters per link (plus a base-frame offset) from end-point measurements with a laser tracker or vision rig.
- Use the manufacturer’s official DH table where one exists. UR, Franka, KUKA, ABB all publish them. Don’t re-derive from CAD models — too much room for sign errors.
5. Components & sourcing
Industrial 6-DOF arms (spherical-wrist)
| Robot | Reach | Payload | Closed-form IK? | Notes |
|---|---|---|---|---|
| Universal Robots UR3e / UR5e / UR10e / UR16e / UR20 | 0.5–1.75 m | 3–20 kg | Yes (Olsen 2018) | Cobot; force/torque sensing; ~50 k installed base |
| ABB IRB 1200 / IRB 1600 | 0.7–1.55 m | 5–12 kg | Yes | Industrial 6-DOF, IRC5/OmniCore controller |
| Fanuc LR Mate 200iD / M-20iA | 0.55–1.8 m | 7–35 kg | Yes | Largest installed industrial base globally |
| KUKA Agilus KR3-R540 / KR6-R900 | 0.54–0.9 m | 3–6 kg | Yes | Compact industrial; KRC5/iiQKA controller |
| Yaskawa Motoman MotoMini / GP series | 0.35–2.7 m | 0.5–80 kg | Yes | YRC1000 controller |
| Stäubli TX2-40 / TX2-60 | 0.5–0.91 m | 1.7–9 kg | Yes | Cleanroom / pharma focus |
| Doosan A0509 / M0617 | 0.9–1.7 m | 5–25 kg | Yes | Cobot; growing market share |
| Hyundai HH3-503 / YS080 | 0.5–2.2 m | 3–80 kg | Yes | Heavy automotive |
| Kawasaki RS series | 0.5–2.7 m | 5–80 kg | Yes | Long industrial history |
7-DOF redundant arms (analytical IK needs redundancy parameter)
- KUKA LBR iiwa 7 / 14: 7 axes, 7 / 14 kg payload, joint torque sensing on all axes. The flagship reference for redundant manipulation research.
- Franka Emika Panda / Franka Research 3: 7 axes, 3 kg payload, open source
libfrankaC++ API +franka_ros2ROS 2 bridge. Used in 1000+ robotics papers. - Kinova Gen3 / Gen3 lite: 7 / 6 axes, 4 / 2 kg payload, Python and ROS APIs, popular in academic and rehabilitation robotics.
- Rethink Sawyer (discontinued 2018, second-hand market): 7 axes, 4 kg, series-elastic actuators.
Other common topologies
- SCARA (4-DOF): Adept Cobra, Epson G-series, Mitsubishi RH-series, Yamaha YK series. Reach 350–1200 mm, payload 1–20 kg.
- Delta parallel (4-DOF): ABB IRB 360 FlexPicker (3T+1R), Omron Quattro (4T+1R), Schunk parallel.
- Cartesian / gantry: Bosch Rexroth, Misumi, Igus drylin — pure prismatic; FK and IK are trivial.
- Humanoids: Tesla Optimus (announced spec, no public DH), Boston Dynamics Atlas (research), Figure 02, 1X NEO, Unitree G1, Apptronik Apollo. Whole-body kinematics is a tree with DOF.
Software libraries
| Library | Language | License | What it does | Source |
|---|---|---|---|---|
| KDL (Orocos Kinematics and Dynamics Library) | C++ | LGPL | Closed-form chain solvers, generic IK (Newton + DLS) | github.com/orocos/orocos_kinematics_dynamics |
| MoveIt | C++ / Python | BSD | Full motion-planning stack on top of FK/IK + RRT/PRM | moveit.ros.org |
| TRAC-IK (Beeson & Ames 2015) | C++ | BSD | KDL-replacement IK with joint-limit handling | github.com/aprotyas/trac_ik |
| BioIK | C++ | LGPL | Memetic / genetic IK; handles redundancy and joint limits | github.com/TAMS-Group/bio_ik |
| Pinocchio (INRIA Stack-of-Tasks) | C++ / Python | BSD-2 | Rigid-body algorithms (FK, ID, FD, Jacobians) at ~1 µs | github.com/stack-of-tasks/pinocchio |
| RBDL (Felis 2017) | C++ | zlib | Featherstone-style rigid-body algorithms | rbdl.github.io |
| iDynTree (IIT) | C++ / Python | BSD-3 | Whole-body kinematics + dynamics for humanoids | github.com/robotology/idyntree |
| Drake (TRI/MIT) | C++ / Python | BSD-3 | Symbolic + numerical robotics; MultibodyPlant model | drake.mit.edu |
| Robotics Toolbox for MATLAB / Python (Corke) | MATLAB / Python | LGPL / MIT | Educational; clean DH-table-driven API | github.com/petercorke/robotics-toolbox-python |
| ikpy | Python | Apache-2 | URDF-driven IK for hobby / education | github.com/Phylliade/ikpy |
6. Reference data tables
DH parameters — Universal Robots UR5e (standard DH, manufacturer-published)
| (m) | (rad) | (m) | ||
|---|---|---|---|---|
| 1 | 0 | 0.1625 | ||
| 2 | 0 | 0 | ||
| 3 | 0 | 0 | ||
| 4 | 0 | 0.1333 | ||
| 5 | 0 | 0.0997 | ||
| 6 | 0 | 0 | 0.0996 |
Source: Universal Robots e-Series user manual section “DH-parameters”, revised 2023-10.
DH parameters — Franka Emika Panda (modified DH, manufacturer-published)
| (m) | (rad) | (m) | ||
|---|---|---|---|---|
| 1 | 0 | 0 | 0.333 | |
| 2 | 0 | 0 | ||
| 3 | 0 | 0.316 | ||
| 4 | 0.0825 | 0 | ||
| 5 | 0.384 | |||
| 6 | 0 | 0 | ||
| 7 | 0.088 | 0 | ||
| flange | 0 | 0 | 0.107 | 0 |
Source: Franka Emika Robot — System Documentation, “Robot and interface specifications”, rev 4.2.1.
DH parameters — KUKA LBR iiwa 7 R800 (standard DH, manufacturer-published)
| (m) | (rad) | (m) | ||
|---|---|---|---|---|
| 1 | 0 | 0.34 | ||
| 2 | 0 | 0 | ||
| 3 | 0 | 0.40 | ||
| 4 | 0 | 0 | ||
| 5 | 0 | 0.40 | ||
| 6 | 0 | 0 | ||
| 7 | 0 | 0 | 0.126 |
Source: KUKA LBR iiwa 7 R800/14 R820 datasheet, KUKA Roboter GmbH, rev 2018.
Pieper’s criterion — when closed-form 6-DOF IK exists
A 6-DOF serial arm admits a closed-form inverse-kinematic solution iff at least one of the following holds (Pieper 1968):
- Three consecutive axes intersect at a single point (spherical wrist — by far the most common in industry).
- Three consecutive axes are mutually parallel.
Robots satisfying (1): UR, ABB IRB, KUKA Agilus, Fanuc LR Mate / M-series, Stäubli TX, Yaskawa GP, Kawasaki RS, Doosan A/M, Hyundai HH/YS. Robots satisfying (2): rare in 6-DOF; common as a sub-structure of 7-DOF (the first three axes of Franka Panda are nearly so).
Common manipulator topologies
| Topology | DOF | Workspace | Pick-place cycle | Pros | Cons |
|---|---|---|---|---|---|
| Serial 6R spherical-wrist | 6 | Quasi-spherical | 1–3 s | Closed-form IK; general | Singularity, gravity-limited |
| Serial 7R redundant | 7 | Quasi-spherical | 1–3 s | Singularity avoidance; obstacle avoidance | Numerical IK; cost |
| SCARA | 4 | Cylindrical | 0.3–0.8 s | Fast; rigid in Z | Vertical-only assembly |
| Delta parallel | 3T+1R | Hemispherical (small) | 0.1–0.3 s | 200+ picks/min; low inertia | Small workspace; complex IK |
| Cartesian / gantry | 3T | Box | 1–5 s | Trivial kinematics; large work area | Footprint; orientation needs wrist add-on |
| Stewart / hexapod 6-UPS | 6 | Small | 1–5 s | Very stiff; precise | Tiny workspace |
| Mobile manipulator (4-wheel + 6R) | 9+ | Floor-area + arm | varies | Unbounded floor reach | Localisation + nonholonomic constraints |
IK solver comparison (typical 6-DOF arm, hot cache, modern x86-64)
| Solver | Algorithm | Wall time per solve | Joint-limit aware | Notes |
|---|---|---|---|---|
| Vendor closed-form (UR, ABB, KUKA) | Pieper decomposition | 5–50 µs | No (post-filter) | Returns up to 8 solutions |
KDL ChainIkSolverPos_LMA | Levenberg–Marquardt | 0.5–5 ms | No | Default in ROS legacy |
| TRAC-IK | KDL + sequential QP | 0.5–3 ms | Yes | Beeson & Ames 2015 ICHR |
| BioIK | Memetic + GA | 1–30 ms | Yes | Robust on redundant arms |
| ikfast (OpenRAVE / MoveIt) | Code-generated closed-form | 1–10 µs | No (post-filter) | Compile-time generation |
| Pinocchio Newton-Raphson | Pseudo-inverse Newton | 50–500 µs | No | Building block, not a full IK solver |
Manipulability at home pose (Yoshikawa )
| Robot | at “home” / nominal | At wrist singularity |
|---|---|---|
| UR5e | m·rad | at |
| Franka Panda (7R) | m·rad | minimum on bound. |
| KUKA iiwa 7 | m·rad | at |
| ABB IRB 1200 | m·rad | at |
(Values approximate — depend on chosen “home”; reference: Yoshikawa 1985 ICRA + each vendor’s URDF.)
7. Failure modes & debugging
- Wrong DH convention. Standard vs modified. Symptom: FK off by a constant rotation about of one link. Fix: print frame origins along the chain and compare to a CAD overlay.
- Wrong sign on or . Symptom: FK matches at the “home” pose but diverges at . Fix: walk one joint at a time, freeze the others at 0, and check that the end effector moves in the expected direction.
- Wrist singularity. Symptom: large for tiny task-space motions near . Fix: damped least squares with , or re-plan the trajectory to avoid the wrist-aligned region.
- Elbow singularity. Symptom: trajectory near workspace boundary causes the controller to fault on velocity limits. Fix: shorten the target or reorient the workpiece.
- Shoulder singularity. Symptom: “flips” by across the base axis. Fix: reachable-workspace check + path planner that avoids the base centreline.
- IK returns no solution. Symptom: motion-planning request fails with “no IK”. Causes: pose outside workspace; joint-limit clash; tool transform forgotten. Fix: visualise the requested pose in RViz, check against reach.
- Multiple solutions cause elbow flip. Symptom: the arm reaches the right pose but with a different posture each cycle. Fix: pick a fixed configuration vector (shoulder=L/R, elbow=U/D, wrist=F/NF) and enforce it.
- Numerical IK fails to converge. Symptom: hits iteration limit, returns last with non-zero residual. Causes: bad seed, ill-conditioned Jacobian. Fix: restart with random seed; use DLS; cap step size with a trust region.
- Joint limits ignored. Symptom: closed-form IK returns on an arm with . Fix: post-filter all 8 solutions for joint-limit feasibility, or use TRAC-IK / BioIK.
- DH calibration error. Symptom: well-controlled arm has – mm offset at the TCP that varies smoothly with pose. Fix: laser-tracker or vision-rig DH calibration (Whitney 1986; Hayati & Mirmirani 1985); estimate corrections to all 24 / 28 DH parameters plus base + tool frame.
- Tool frame mismatch. Symptom: the robot reaches the right flange pose but the tool tip is off by a constant offset. Fix: configure the tool frame at the controller (
PayloadID,TCP,tool0) or apply at planning time. - Mixing world and body twists. Symptom: angular-velocity terms in behave wrong when the controller expects body-frame twists but kinematics returns world-frame. Fix: explicit twist-frame transform or vice-versa.
- Quaternion sign flips. Symptom: small motion in pose causes a flip in axis-angle orientation error. Fix: enforce shortest-arc (negate if its dot product with the previous quaternion is negative).
- Euler / RPY gimbal lock. Symptom: orientation error blows up when pitch . Fix: do orientation error in axis-angle or quaternion, never RPY.
8. Case studies
Universal Robots UR5e — closed-form IK in 120 µs
The UR e-series is a 6-DOF serial cobot with non-spherical wrist — axes 4, 5, 6 do not intersect at a single point. Naïvely, this rules out Pieper’s classical decomposition. Olsen & Tegnander (2018) published a closed-form solution that exploits the UR’s parallel shoulder/elbow joints, yielding all 8 IK solutions in under 120 µs on a 1.4 GHz ARM Cortex-A53. The official ur_kinematics ROS package and Universal Robots’ own controller use this formulation.
Calibration is critical: nominal DH parameters give 0.5–1 mm end-effector error; UR’s factory calibration procedure (laser-tracker plus optimisation over 24 DH parameters + base offset) brings TCP error below 0.1 mm RMSE. Repeatability spec is 0.03 mm.
The UR’s design has been so successful as a reference that virtually every cobot vendor (Doosan, Techman, AUBO, Elite) has adopted the same 6-DOF non-spherical-wrist topology and similar DH structure.
Franka Emika Panda / Franka Research 3 — 7-DOF redundancy in academia
The Panda’s seventh joint puts the elbow on a circle around the line connecting the shoulder and wrist. Parameterising the swivel angle as the seventh task variable converts the redundant problem into a one-parameter family of closed-form solutions: for each , IK reduces to the 6-DOF Pieper problem on the equivalent (shoulder–wrist) chain.
libfranka (open-source C++) and franka_ros2 (ROS 2 bindings) expose:
- kHz joint-state + torque telemetry
- Cartesian impedance + joint-impedance control modes
- Internal model-based gravity compensation (Featherstone-style RNEA on the modified-DH model in section 6)
Cited in 1000+ robotics-research papers (Google Scholar, May 2026). The “Panda” became the de-facto reference platform for compliant manipulation research between 2017–2024, displaced gradually by the Research 3 (2023) and emerging humanoid platforms.
ABB FlexPicker IRB 360 — delta parallel pick-and-place
The FlexPicker is a 4-DOF parallel delta robot: three identical RUU (revolute-universal-universal) legs drive an end-effector platform in pure translation, plus a fourth telescoping shaft that supplies wrist rotation. DH does not apply directly (parallel, not serial); the IK is the intersection of three spheres centred at the platform joints, each closed-form via cosine law:
where is the upper-arm length, the lower (parallelogram) link, and the planar distance from the i-th shoulder to the platform centre, after rotating the world frame by .
Cycle: 200+ picks/min with 1-kg payload over a 1130-mm-diameter cylindrical workspace. The closed-form IK + servo-update at 4 kHz is what enables that speed — every microsecond shaved from the IK is measurable in throughput. ABB’s IRC5 controller does the FK/IK + dynamic feedforward in a 250-µs servo cycle.
9. Cross-references
- dynamics-rigid-body — adds inertia, Coriolis, gravity, and joint torque to kinematics; uses the same DH table.
- manipulator-design — workspace, payload, structural design — the physical arm whose kinematics this note describes.
- trajectory-generation — interpolation in joint vs task space; FK at each waypoint, IK between waypoints.
- path-planning — sample-based planners (RRT, PRM) work in configuration space, with FK driving collision checks.
- manipulability-workspace — Yoshikawa manipulability ellipsoids and dexterous-workspace analysis.
- statics-fundamentals — joint statics: Jacobian-transpose maps tool wrench to joint torques.
- mechanics-of-materials — link stiffness, deflection of the arm under load.
- beam-theory — cantilever bending of long-reach arms; informs end-effector deflection under payload.
- gears-power-transmission — joint gearing (harmonic drives, RV reducers, planetary), which changes the effective joint-space metric.
- bearings — joint bearings and runout; the dominant source of uncalibrated error.
- robotics-control — RoboDK, URScript, KRL, RAPID — controller languages that embed DH tables.
- ros2-robotics-config — URDF and SDF tag structure; xacro macros; the modern alternative to literal DH tables.
10. Citations
- Denavit, J. & Hartenberg, R.S. “A kinematic notation for lower-pair mechanisms based on matrices.” Journal of Applied Mechanics, 22(2):215–221, 1955. The original DH paper.
- Pieper, D.L. The Kinematics of Manipulators Under Computer Control. PhD thesis, Stanford University, 1968. Establishes the closed-form 6-DOF IK criterion.
- Craig, J.J. Introduction to Robotics: Mechanics and Control, 4th ed., Pearson, 2018. ISBN 978-0-13-348960-8. The canonical undergraduate text — uses modified DH.
- Siciliano, B., Sciavicco, L., Villani, L. & Oriolo, G. Robotics: Modelling, Planning and Control, 2nd ed., Springer, 2010. ISBN 978-1-84628-642-1. The European reference — standard DH, exceptional Jacobian / dynamics treatment.
- Spong, M.W., Hutchinson, S. & Vidyasagar, M. Robot Modeling and Control, 2nd ed., Wiley, 2020. ISBN 978-1-119-52399-3. Includes excellent passages on screws, twists, and the geometric Jacobian.
- Lynch, K.M. & Park, F.C. Modern Robotics: Mechanics, Planning, and Control, Cambridge University Press, 2017. ISBN 978-1-107-15630-2. Lie-group treatment (, twists, screws); free PDF + companion Coursera course; the modern grad-school reference.
- Murray, R.M., Li, Z. & Sastry, S.S. A Mathematical Introduction to Robotic Manipulation, CRC Press, 1994. ISBN 978-0-8493-7981-9. Rigorous Lie-theoretic foundations.
- Yoshikawa, T. “Manipulability of Robotic Mechanisms.” International Journal of Robotics Research, 4(2):3–9, 1985. The manipulability measure.
- Beeson, P. & Ames, B. “TRAC-IK: An Open-Source Library for Improved Solving of Generic Inverse Kinematics.” IEEE-RAS International Conference on Humanoid Robots (Humanoids 2015), pp. 928–935, 2015. DOI:10.1109/HUMANOIDS.2015.7363472.
- Olsen, A.L. & Tegnander, A.O. “An analytical closed-form inverse kinematics method for the Universal Robots.” Internal/preprint, 2018. Implemented in
ur_kinematicsROS package; reference adopted in subsequent UR e-Series documentation. - Featherstone, R. Rigid Body Dynamics Algorithms, Springer, 2008. ISBN 978-0-387-74314-1. The algorithmic foundation of Pinocchio, RBDL, and Drake.
- Hayati, S. & Mirmirani, M. “Improving the absolute positioning accuracy of robot manipulators.” Journal of Robotic Systems, 2(4):397–413, 1985. Kinematic calibration foundations.
- Whitney, D.E., Lozinski, C.A. & Rourke, J.M. “Industrial robot forward calibration method and results.” ASME Journal of Dynamic Systems, Measurement, and Control, 108(1):1–8, 1986.
- Universal Robots e-Series — Service Manual. Universal Robots A/S, 2023-10. DH-parameters section, rev 5.13.
- Franka Emika Robot — System Documentation. Franka Emika GmbH, rev 4.2.1, 2022. https://frankaemika.github.io/docs/
- KUKA LBR iiwa 7 R800 / 14 R820 Datasheet. KUKA Roboter GmbH, 2018.
- URDF (Unified Robot Description Format) specification. Open Robotics, http://wiki.ros.org/urdf/XML. Current rev tracks ROS 2 Lyrical.
- MoveIt 2 documentation. PickNik Robotics / Open Source Robotics Foundation, https://moveit.picknik.ai/. Current rev tracks ROS 2 Lyrical.
- Pinocchio documentation. INRIA Stack-of-Tasks, https://stack-of-tasks.github.io/pinocchio/. Current rev 3.x (2025).
- Drake documentation. Toyota Research Institute / MIT, https://drake.mit.edu/. Current rev tracks 1.x (2025-).