Robot kinematics and dynamics
The parts of a robot arm, forward and inverse kinematics, the Jacobian, and how dynamics links joint torques to motion.
Before a robot arm can do anything useful, we need to answer two questions: how does it move (kinematics) and what does it take to move it (dynamics). This post explains both with a simple two-joint arm that you can try in the simulation below.
The parts of a robot arm
| Part | What it does |
|---|---|
| Links | The rigid parts that form the arm's body |
| Joints | Connect the links: revolute joints rotate, prismatic joints slide |
| Actuators | Motors that move the joints |
| Transmissions | Gears, belts or pulleys that carry the motion from motor to joint |
| Sensors | Encoders measure joint angles; force sensors measure contact |
| Controller | Computes the motor commands from the sensor readings |
| End effector | The gripper or tool at the tip |
| User interface | Lets a person program, control or monitor the arm |
Start from the task
There is no single best arm. The design follows from the job:
- Reach: how far must the tip go?
- Payload: how heavy is the object?
- Speed and accuracy: how fast, and how precisely?
- Budget and complexity: how many joints can we afford?
Example: an arm that cuts plastic sheets needs a flat workspace the size of the sheet, steady speed along the cut and only a light tool, so a simple SCARA-type arm may be better than a six-joint industrial robot.
Kinematics: motion without forces
Kinematics describes position, velocity and acceleration, without asking what forces cause them.
Forward kinematics: from joint angles to the tip
For a two-link arm in a plane, with link lengths \(l_1, l_2\) and joint angles \(\theta_1, \theta_2\):
$$ x = l_1 \cos\theta_1 + l_2 \cos(\theta_1 + \theta_2), \qquad y = l_1 \sin\theta_1 + l_2 \sin(\theta_1 + \theta_2) $$
Example. \(l_1 = 1.0\) m, \(l_2 = 0.8\) m, \(\theta_1 = 30^\circ\), \(\theta_2 = 45^\circ\) gives the tip at \(x = 1.073\) m, \(y = 1.273\) m.
Inverse kinematics: from the target to joint angles
Usually we know where the tip should go and need the joint angles. For the two-link arm there is a closed-form answer:
$$ \cos\theta_2 = \frac{x^2 + y^2 - l_1^2 - l_2^2}{2\,l_1 l_2}, \qquad \theta_1 = \operatorname{atan2}(y, x) - \operatorname{atan2}\!\big(l_2 \sin\theta_2,\; l_1 + l_2 \cos\theta_2\big) $$
Plugging in the tip from the example gives back \(\theta_2 = 45^\circ\) and \(\theta_1 = 30^\circ\). Note two things:
- \(\cos\theta_2\) must lie between −1 and 1. If not, the target is out of reach.
- \(\theta_2\) and \(-\theta_2\) both work: elbow up and elbow down are two valid solutions.
The Jacobian: velocities and singularities
The Jacobian \(\mathbf{J}\) links joint speeds to tip speed:
$$ \begin{bmatrix} \dot{x} \\ \dot{y} \end{bmatrix} = \mathbf{J}(\boldsymbol{\theta}) \begin{bmatrix} \dot{\theta}_1 \\ \dot{\theta}_2 \end{bmatrix}, \qquad \det\mathbf{J} = l_1 l_2 \sin\theta_2 $$
When \(\det\mathbf{J} = 0\), at \(\theta_2 = 0^\circ\) (arm stretched out) or \(180^\circ\) (folded back), the arm is at a singularity: no combination of joint speeds can move the tip in some direction. That is what the manipulability value in the simulation shows.
Dynamics: adding forces
Dynamics answers the engineering questions: how much torque does each joint need, which motor can provide it, and how much energy will the arm use?
A quick first estimate is the torque needed just to hold a load still against gravity. For a mass \(m\) at horizontal distance \(d\) from the joint:
$$ \tau = m\,g\,d $$
Example. A 2 kg load held 0.5 m from the shoulder needs \(\tau = 2 \times 9.81 \times 0.5 \approx 9.8\) N·m, plus the weight of the links themselves. Add a safety margin and the torque needed for acceleration, and you have a starting point for choosing the motor and gearbox.
The full model for an arm with joint angles \(\mathbf{q}\) is
$$ \underbrace{\mathbf{M}(\mathbf{q})\,\ddot{\mathbf{q}}}_{\text{to accelerate}} + \underbrace{\mathbf{C}(\mathbf{q},\dot{\mathbf{q}})\,\dot{\mathbf{q}}}_{\text{Coriolis and centrifugal}} + \underbrace{\mathbf{G}(\mathbf{q})}_{\text{to hold against gravity}} = \boldsymbol{\tau} $$
It is used to size the motors, to simulate the arm before building it and inside advanced controllers that cancel gravity and inertia so the arm moves smoothly.
In short
$$ \text{Task} \;\rightarrow\; \text{Kinematics (where and how fast)} \;\rightarrow\; \text{Dynamics (how much torque)} \;\rightarrow\; \text{Motors and control} $$
Kinematics gives the robot its skeleton, dynamics its muscles, and control its brain.
Watch the video
For a full explanation, see Robot kinematics and dynamics on YouTube.