Kinematics is the geometry of robot motion, studied without forces or torques. Forward kinematics maps joint angles to the end-effector pose through a unique composition of transforms, and inverse kinematics maps a pose back to joint angles, with no solution, one, or manySource 3.

A grey and light blue Universal Robots UR16e arm with six revolute joints, folded over a perforated steel table beside its controller box and a touchscreen teach pendant.
A Universal Robots UR16e, a six-joint serial arm. Forward kinematics composes one transform per joint, so its six joint angles fix the pose of the tool flange.
Photo: Auledas / Wikimedia Commons. Licence: CC BY-SA 4.0.
Forward kinematics
Turn the shoulder and everything beyond it swings along
Pose the whole arm
Adjust more

shoulder 110°; hand at x +0.45, y +1.89 link units from the shoulder

Turn the shoulder: the elbow, wrist and pen ride alongShoulder 110 degrees · hand 0.45 right, 1.89 out

Schematic: one grid square is half a link

A robot works out where its hand is by adding up each joint's turn, from shoulder to fingertip.
How this was made

Computed on chosen link lengths of 1.00, 0.75 and 0.55 link units, so the hand reaches at most 2.30 from the shoulder. Each angle is measured from the link before it, anticlockwise positive, and the hand's position is the running sum of the three link vectors. The shoulder turns from 0 degrees (pointing right) to 180 (pointing left); the elbow and wrist turn up to 180 degrees either way. In the drawing each joint's dial rides on the link before it and the next link is its pointer; the shoulder's dial is the protractor on the paper, and one grid square is half a link unit. The faint sketch on the paper is the pose before the last move; at load it is the opening pose with the shoulder 40 degrees back, and the inked arc is the path the pen swept while only the shoulder turned.

With the shoulder at 110 degrees, the elbow at -45 degrees and the wrist at -35 degrees, the hand sits at x +0.45, y +1.89 link units from the shoulder; the three links are 1.00, 0.75 and 0.55 long.

Current arm pose
shoulder
110°
elbow
-45°
wrist
-35°
hand x
+0.45
hand y
+1.89
4
DH parameters per joint
theta, d, a, alpha
5
SO-101 arm joints
plus a gripper, in the 3D playground
±0.5mm
playground IK tolerance
solver residual target
3
joints in the 2D demo
the planar chain above

Forward kinematics

A serial arm is a chain of rigid links and joints, with a coordinate frame on each link. A rigid transform packs a rotation RR and a translation pp into one matrixSource 3:

T=[Rp01]T = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}

The ordered product of one transform per joint carries the base frame to the tool frameSource 3:

T0n(q)=T01(q1) T12(q2) ⋯ Tn−1n(qn)T_0^{n}(q) = T_0^1(q_1)\,T_1^2(q_2)\,\cdots\,T_{n-1}^{n}(q_n)

The map is smooth in the joint angles and cheap to evaluateSource 3. In the plane, each link is a vector of length lil_i along the cumulative angle, and the end effector sits at their sumSource 1:

x=∑i=1nlicos⁡(q1+⋯+qi)y=∑i=1nlisin⁡(q1+⋯+qi)x = \sum_{i=1}^{n} l_i \cos\left(q_1 + \cdots + q_i\right) \qquad y = \sum_{i=1}^{n} l_i \sin\left(q_1 + \cdots + q_i\right)

Moving one joint moves every later link, the dependence the Jacobian capturesSource 3.

Denavit-Hartenberg parameters

Denavit and Hartenberg's 1955 matrix notation describes the kinematics of all lower-pair mechanismsSource 7. LaValle gives the Denavit-Hartenberg convention four parameters per revolute joint: an offset along a rotation axis, an angle about it, the distance between successive axes, and the angle between themSource 1. The example here writes the last two aia_i and αi\alpha_i.

Standard and modified variants coexistSource 8. The standard form isSource 8:

Ai=Rotz(θi) Transz(di) Transx(ai) Rotx(αi)A_i = \mathrm{Rot}_z(\theta_i)\,\mathrm{Trans}_z(d_i)\,\mathrm{Trans}_x(a_i)\,\mathrm{Rot}_x(\alpha_i) Ai=[Riti01],ti=[aicos⁡θiaisin⁡θidi]\def\arraystretch{0.9} A_i = \begin{bmatrix} R_i & t_i \\ \mathbf{0} & 1 \end{bmatrix},\quad t_i = \begin{bmatrix} a_i\cos\theta_i \\ a_i\sin\theta_i \\ d_i \end{bmatrix} Ri=[cos⁡θi−sin⁡θicos⁡αisin⁡θisin⁡αisin⁡θicos⁡θicos⁡αi−cos⁡θisin⁡αi0sin⁡αicos⁡αi]\def\arraystretch{0.9} R_i = \begin{bmatrix} \cos\theta_i & -\sin\theta_i\cos\alpha_i & \sin\theta_i\sin\alpha_i \\ \sin\theta_i & \cos\theta_i\cos\alpha_i & -\cos\theta_i\sin\alpha_i \\ 0 & \sin\alpha_i & \cos\alpha_i \end{bmatrix}

A planar arm has zero twists and offsets, leaving link lengths and anglesSource 1.

Denavit-Hartenberg parameters of the planar three-joint arm. All twists and offsets are zero, so only the link lengths and joint angles remain.
Joint iθidiaiαi
1 (base)θ101.000
2 (elbow)θ200.750
3 (wrist)θ300.550

DH parameters are ill-conditioned when consecutive axes are nearly parallelSource 3. Product-of-exponentials (POE) parameters vary smoothly as the axes changeSource 9: POE, which Brockett applied to manipulators in 1984, treats each joint as a screw about a fixed axis, the form Modern Robotics usesSource 10 Source 3.

A stroboscopic NASA photograph shows a PUMA 560 robot arm in several successive positions as it moves small parts between fixtures on a table.
A PUMA 560 at NASA Ames, photographed in a stroboscopic exposure as it cycles through its workspace. The six-revolute PUMA layout is the canonical teaching example for the Denavit-Hartenberg convention.
Photo: NASA / Dominic Hart / Wikimedia Commons. Licence: Public domain.

The 3D playground reads the SO-101 chain from its URDF, the most common description format, where each joint carries an origin transform and a rotation axisSource 4 Source 11.

The Jacobian

The Jacobian relates joint velocities to end-effector velocity, one column per jointSource 3:

x˙=J(q) q˙\dot{x} = J(q)\,\dot{q}

In Modern Robotics' space Jacobian, column ii is joint ii's screw axis at the current pose, in base-frame coordinatesSource 3. A revolute joint with unit axis ωi\omega_i through point pip_i gives the first form, and a prismatic joint sliding along unit direction viv_i the secondSource 3:

Ji=[ωi−ωi×pi]Ji=[0vi]J_i = \begin{bmatrix} \omega_i \\ -\omega_i \times p_i \end{bmatrix} \qquad J_i = \begin{bmatrix} 0 \\ v_i \end{bmatrix}

The transpose maps an end-effector wrench to balancing joint torques, τ=JT(q) F\tau = J^{T}(q)\,FSource 3. At singularities, such as a fully extended arm, the Jacobian loses rank, and nearby a modest end-effector speed demands unbounded joint speedsSource 3; Yoshikawa's 1985 manipulability measure scores how well an arm can position and orient its end effectorSource 12.

Whitney's resolved motion rate control (1969) let an operator command hand motion along task axesSource 2, with the inverse Jacobian giving joint rates:

q˙=J−1(q) x˙\dot{q} = J^{-1}(q)\,\dot{x}

A redundant arm uses the pseudoinverse J+=JT(JJT)−1J^{+} = J^{T}(JJ^{T})^{-1}, whose spare freedom can serve goals such as avoiding joint limitsSource 3, ranked against the end-effector task in Siciliano and Slotine's task-priority frameworkSource 13. Near singular points, Nakamura and Hanafusa's singularity-robust inverse returns a motion close to the desired pathSource 14.

Inverse kinematics

Inverse kinematics seeks qq with k(q)=xdk(q) = x_d for a target xdx_d. The map is nonlinear: a reachable target can have several configurations, such as elbow left or right, a redundant arm has a continuum, and an unreachable target has noneSource 3. Move the shoulder slider in the figure below to trace the hand's path, then drag the cup and watch the arm work out an angle for every joint.

How does a robot arm reach a cup?
An arm only controls its joints. Turn the shoulder and the hand swings in an arc.
An arm only controls its joints. Turn the shoulder and the hand swings in an arc.
To reach a cup an arm must work out every joint's angle, and some spots stay out of reach.
How this was made
The steps in words
  1. An arm only controls its joints. Turn the shoulder and the hand swings in an arc.
  2. To pick up a cup, the robot must find an angle for every joint at once. Drag the cup and watch it work them out.
  3. Now the cup slides much further away.
  4. Some places can be reached two ways: elbow up or elbow down. The faint arm shows the other way.
  5. Turning joints to see where the hand goes is forward kinematics. Working backwards from the hand to the joints is inverse kinematics.

Closed forms exist for special geometries, such as six-revolute arms with intersecting wrist axesSource 3. A general 6R arm reduces to one minimum-degree polynomial in a single joint variableSource 15, which Manocha and Canny's 1994 algorithm solved in 11 ms on average on an IBM RS/6000 workstationSource 16, and Diankov's IKFast generates closed-form solvers that answer in about 6 microseconds, against about 10 milliseconds for most numerical solversSource 17. The general tool is iterative: linearize, step, repeatSource 3:

Δx=J(q) ΔqΔq=J+(q) Δx\Delta x = J(q)\,\Delta q \qquad \Delta q = J^{+}(q)\,\Delta x

KDL's pseudoinverse solver repeatedly reports false failures on humanoids, and TRAC-IK finds solutions much more oftenSource 18. cuRobo solves over 7,000 collision-free IK queries per secondSource 19, and for redundant arms IKFlow samples 2,000 solutions in under 10 ms, within 10 mm and 2 degrees of exactSource 20. The 3D kinematics playground solves IK on TheRobotStudio's SO-101 arm with a live residual and iteration countSource 4.

The same geometry, inside learned policies

Action chunking with ACT predicts 14 joint-space targets for two 6-DoF arms and their grippersSource 5, while OpenVLA predicts 7-dimensional single-arm end-effector actionsSource 21, and Diffusion Policy did consistently better with position than velocity actionsSource 22.

Across 13,000+ real rollouts and 500+ models, delta actions consistently helped, joint space favored stability, and task space favored generalizationSource 23.

GR00T N1 uses embodiment-specific action decoders: in its simulation benchmarks a Panda arm acts in relative end-effector position and rotation, and the GR-1 humanoid in joint positionsSource 24. NVIDIA says N1.7 shares one relative end-effector action space across robot and human dataSource 6.

Quaternions and Euler angles are discontinuous and hard for networks to learn, while 5D and 6D rotation representations are continuousSource 25.

Teleoperation runs through the same chain: a GELLO leader copies its target arm's kinematic structureSource 26, and retargeting artifacts such as foot sliding reduce the robustness of humanoid tracking policiesSource 27.

Treat coordinate frames as an API

A Cartesian action must name its frame, units, rotation representation, composition order, and whether it is absolute or relative; a joint action needs joint order, signs, limits and controller semantics. ROS REP 103 makes frames right-handed, with x forward, y left and z upSource 28, and REP 105 separates the drifting odom frame from the map frame, which can jumpSource 29.

Round-trip kinematics tests and versioned URDF and calibration files keep the contract testable. LeRobot calibrates SO-101 leader and follower arms to read the same values in the same pose, so a network trained on one robot works on anotherSource 30. See the calibration guide and the action-space guide.