Part 1: The Geometry of Motion
Welcome to the first installment of our "Robotics Zero to Hero" series. Before a robot can interact with the world, it must answer a deceptively simple question: where am I, and which way am I facing? This is the Geometry of Motion, and getting it right is the foundation everything else is built on.
In this post we develop the mathematics of rigid-body pose in 3D, treat rotations as a Lie group rather than a bag of formulas, and set up the central theme of this entire series: why high-dimensional robots (like our continuum octopus) are so much harder than the low-dimensional rigid arms of classical robotics.
The Math: , , and Lie Groups
To place a rigid body in space we need two things:
- Translation — a vector locating the body's origin.
- Rotation — an element of the Special Orthogonal group describing orientation.
A rotation matrix satisfies two constraints:
The first says columns are orthonormal; the second rules out reflections. Note what this costs: has 9 entries but only 3 degrees of freedom. The 6 constraints carve out a curved 3-dimensional surface (a manifold) inside . That curvature is the source of nearly every subtlety in this post.
A full rigid-body (homogeneous) transformation stacks rotation and translation into a matrix in the Special Euclidean group :
So the pose of one rigid body lives in a 6-dimensional space: 3 for position, 3 for orientation. Hold onto that number — it is the dividing line of this series.
The Lie algebra: angular velocity lives in
is not just a set; it is a smooth group (a Lie group). Its "tangent space at the identity" is the Lie algebra , the space of skew-symmetric matrices. Any angular velocity maps to a matrix via the hat operator:
The exponential map turns an angular velocity into a rotation. For a unit axis and angle this is Rodrigues' formula:
and its inverse, the logarithm map, recovers the axis–angle from a rotation matrix. This pairing is what lets us do calculus on rotations — interpolate them, average them, and run gradient descent on them — which we will need for inverse kinematics (Part 3) and trajectory optimization (Part 7).
Representing rotations: there is no free lunch
Rotation matrices are great for composition but wasteful to store and awkward to optimize. Every alternative trades one weakness for another. The table below summarizes the competing representations and where each one breaks.
| Representation | Params (for 3 DOF) | Strengths | Shortcomings |
|---|---|---|---|
| Rotation matrix | 9 | Direct composition, no decoding | Over-parameterized; drifts off under numerical error; needs re-orthonormalization |
| Euler angles | 3 | Intuitive, minimal | Gimbal lock (a DOF vanishes when axes align); discontinuous; order-dependent |
| Axis–angle | 3 | Minimal; matches | Singular at ; not unique ( wrap) |
| Unit quaternion | 4 (1 constraint) | No gimbal lock; cheap to renormalize; clean SLERP | Double cover ( and are the same rotation); sign bookkeeping |
| exp-coords | 3 | Ideal for optimization/filters | Local chart only; must re-anchor near |
The deep reason there is no singularity-free 3-parameter global chart for is topological: is a curved, compact manifold that cannot be smoothly flattened onto . Unit quaternions are the standard escape hatch — a 4-number representation that double-covers and avoids gimbal lock — and SLERP (spherical linear interpolation, Shoemake 1985) gives constant-rate interpolation between orientations.
Python Implementation: Rotation Matrices
Let's construct the elemental rotation matrices and compose them.
Loading Interactive Python Environment...
Notice the last two checks. On real hardware, repeatedly multiplying rotation matrices accumulates floating-point error and slowly drifts off . Production code periodically re-orthonormalizes (e.g. via SVD or quaternion normalization) — a small but essential piece of numerical hygiene.
High-Dimensional vs. Low-Dimensional Robots
This is the theme we return to in every post, so let's define it precisely here.
A robot's configuration is the minimal set of numbers that fully specifies its shape. The set of all configurations is the configuration space (C-space), a manifold whose dimension is the robot's degrees of freedom.
- A low-dimensional robot has small : a 6-DOF industrial arm has , a 6-torus. Closed-form solutions exist, every configuration can be enumerated, and intuition mostly works.
- A high-dimensional robot has large : a humanoid has DOF, a dexterous hand , and a true continuum robot — like an octopus tentacle that bends everywhere along its length — has, in the ideal limit, infinite degrees of freedom. Its configuration is not a vector but a continuous curve in space.
| Aspect | Low-dim (6-DOF arm) | High-dim (continuum octopus) |
|---|---|---|
| DOF | tens → (a function, not a vector) | |
| Config space | torus | infinite-dim function space |
| Inverse kinematics | Often closed-form | Redundant, infinitely many solutions (Part 3) |
| Dynamics | ODEs, is | PDEs (Cosserat rods), continuous mass (Part 4) |
| Planning | Grids feasible | Curse of dimensionality; sampling required (Part 7) |
| Failure mode | Singularities (isolated) | Under-actuation, redundancy everywhere |
Almost every "hard" problem in this series is really the statement: a tool that works beautifully in low dimensions degrades or collapses as grows. Keeping this contrast in view is the single most useful mental model for modern robotics.
Focus on the Octopus: Central Body to Tentacle Mapping
At Ensemble Control we are building a metallic continuum octopus robot: a central body (head/base) with multiple flexible tentacles. Even before a tentacle bends, we must place its base frame correctly relative to the body.
Let be the transform from world to the octopus body, and the fixed transform from the body center to the base of tentacle . By composition in :
If the body tilts, every tentacle's reference frame rotates with it — composition handles this automatically, which is exactly why we work in rather than tracking position and orientation separately.
The catch is what comes next. For a rigid arm, the chain ends after a handful of joints. For a tentacle, the "chain" never really ends — the body curves continuously, so is only the first link of an infinite chain. Capturing that curvature is the subject of Part 2, where we build Forward Kinematics and confront continuum models head-on.
Further reading: Murray, Li & Sastry, "A Mathematical Introduction to Robotic Manipulation" (1994); Lynch & Park, "Modern Robotics" (2017) for the Lie-group treatment of .
Interested in the research?
We collaborate with researchers, engineers, and institutions pushing Physical AI into extreme environments. Get in touch to explore working with the lab.
Collaborate with us