Rigid Motion
A rigid body motion in three-dimensional space is a transformation that preserves distances and angles — a rotation followed by a translation. The collection of all such transformations forms the Special Euclidean Group , whose elements are pairs with (special orthonormal group) and . Embedded into matrices via homogeneous coordinates, every rigid motion is
Frames are tracked with subscripts: is the pose of frame expressed in frame — equivalently, the transformation that converts -coordinates to -coordinates. With this convention, composition stacks adjacent indices and the inverse swaps them:
Homogeneous coordinates distinguish points from free vectors. A point lifts to ; a free vector lifts to . The extra coordinate encodes whether translation acts:
(where is the translation part of ). Points are translated and rotated; free vectors are only rotated.is a six-dimensional Lie group (three rotation + three translation parameters). Its Lie algebra consists of matrices
called twists. The exponential map sends a unit twist () and scalar to the finite rigid motion
where is Rodrigues’ formula and
Pure translation () is the degenerate case . The inverse log map solves (see 1.5. Exponential Coordinates) then .The adjoint representation transforms twist coordinates between frames:
These ingredients — the matrix form, the composition/inverse formulas, the twist exponential, and the adjoint — are the algebraic toolkit every downstream robotics topic (forward kinematics, Jacobians, dynamics, control) is built on.
Intuition
is the natural mathematical home for rigid body poses. Embedding the affine transformation into a matrix via homogeneous coordinates converts composition of rigid motions into matrix multiplication and inversion into a simple matrix inverse. This linearization trick is what makes the product-of-exponentials formula in forward kinematics possible.
The distinction between points () and vectors () in homogeneous coordinates is not just notational—it encodes the physics that translation moves points but not free directions. A force direction, for instance, should not change when the origin is shifted, and the in the fourth entry ensures this automatically.
Properties
Group Operations
(Composition Mechanism) The translation of is , not .
Following the chain : a point known in -coordinates is first translated by to reach -coordinates, then rotated by and translated by to land in -coordinates. The translation lives in frame , so it must be rotated through before being added to — they have to be in the same frame to add. The “rotation of the downstream translation” is what makes rigid-motion composition non-abelian and is the source of the adjacent-index cancellation rule: only because the inner indices match.
(Inverse Mechanism) The inverse translation is , not .
Undoing means undoing the final state, which was reached by rotating first and then translating. To return home you translate back by — but is expressed in frame while the “undo translation” must be applied before the rotation, in frame . Rotating into frame via gives the correct . The result satisfies the index identity . A common bug in tabletop simulators is using in place of and watching objects drift on rotation.
The Lie Algebra
(Twist Exponential Mechanism) integrates the time-varying rotation into the translation.
For a scalar ODE , the solution is . The exponential is the matrix generalization: the translation component accumulates the linear velocity rotated through every intermediate angle from to , giving . The three terms in come from integrating Rodrigues’ formula term-by-term. Pure rotation about an axis through the origin () gives zero translation; rotation about an off-origin axis () induces the familiar circular arc.
(Non-Unit Twist) For a non-unit twist, factor out and absorb it into .
If , let , , , and apply the unit-twist formula with . This rescaling matters whenever twists come from velocity measurements rather than constructed unit screws.
(SE(3) Log Map Recipe) Extract from in two steps: SO(3) log on first, then .
Step 1 — recover from alone, using the SO(3) log map:
The trace formula uses , a direct corollary of Rodrigues’ formula. The axis comes from the antisymmetric part . Two edge cases: gives with undefined (any axis works for a zero-angle rotation); gives where kills the denominator — instead read off from any nonzero column of and normalize (sign is ambiguous since ).
Step 2 — recover from using the inverse of the integration matrix:
The singularity at is handled by the pure-translation degenerate case: means , and the rigid motion is a pure shift, so with and pointing along .
Note that cannot be recovered from alone. The rotational data is encoded in , but the same axis-angle pair is compatible with infinitely many translations — each pairing produces a different . Step 2 explicitly mixes (through ) with to undo the rotational coupling that the forward exponential introduced.
Frame of the extracted twist. In isolation, the recipe is frame-ambiguous: at the identity, spatial and body twists coincide (), so the same exponentiates to whether interpreted as a constant spatial or constant body screw. The frame is fixed by what you do with the result. With the current pose and target both expressed in the spatial frame , the index-matched composition gives — the relative motion expressed in the current body frame. So produces a body twist of . Reversing the order gives — which does not collapse into a single index pair and instead represents the spatial version of the same screw. The two are related by the adjoint: .
(Log Map in IK) is the body twist that drives the current pose to the target in unit time.
Given current pose and target pose , the pose error lives in , and its log is the 6-vector fed into the Jacobian update in Jacobian IK. Near the cotangent term in becomes ill-conditioned numerically; production code uses a Taylor series expansion of around instead of the closed form.
Adjoint Representation
(Frame-Change Mechanism) The off-diagonal block encodes the lever-arm coupling between rotation and translation under a frame change.
When a twist is reexpressed in a frame shifted by and rotated by , the angular part rotates cleanly into — angular velocity is independent of origin. The linear part picks up an extra term because shifting the origin by changes the linear velocity of the moving point by exactly the cross-product with the angular velocity. The block is “rotate first, then take the cross product with ” — exactly the rigid-body velocity transport law (see adjoint). This is why pure rotation in one frame can look like rotation-plus-translation in another.
(Algebraic Properties) is a group homomorphism: , , .
Composition lifts: changing twist frames along a chain is the same as changing once by the composed transform . The inverse equals — useful when converting body twists (, in the body’s own frame) to spatial twists (, in the world frame) and back via . The unit determinant means twist coordinates change frames without volume distortion in , which matters for the symplectic structure of rigid-body dynamics.
Examples
Composing Two Rigid Motions
Let : rotate about , translate by . Let : translate by (no rotation).
Composition , .
.
Compute the rotated translation: . So .
Result: — a pure rotation. The translation of along ‘s -axis got rotated by into ‘s direction, canceling ‘s translation along ‘s . The same vector lives in different frames before and after the rotation, which is exactly what the term tracks.