Skip to the lesson
FixTheRobot Explore Robotics / Linear Algebra / M7 Rotations and Rigid-Body Transformations / M7-T6

Linear Algebra · Theory · M7

M7-T6 — SE(3)

A rigid motion moves a body without bending it. SE(3) is the set of all of them, and it has six degrees of freedom: three for position and three for orientation.

  • Lesson 6 of 9
  • Module 7: Rotations and Rigid-Body Transformations
  • Rotations and rigid bodies
  • About 9 minutes to read

Homogeneous transforms with an orthonormal rotation block form a group, the special Euclidean group SE(3). Because it is a group, poses compose and invert cleanly, and the formulas for doing so are short and exact. They are the backbone of kinematics, SLAM and sensor calibration.

Learning objectives

After this lesson, you should be able to:

  • Define SE(3) and SE(2) and count their degrees of freedom.
  • Derive the inverse [[Rᵀ, −Rᵀt], [0, 1]] and the composition rule, and check closure.
  • Show that rigid motions preserve distances and angles, and that a body's pose is one element of SE(3).
  • Describe the relative transform between two poses, TAB = TWA⁻¹ TWB.

Introduction and motivation

A SLAM back end stores thousands of robot poses and measurements of the relative motion between them. Everything it does (odometry, loop closure, error computation) is composing and inverting 4 × 4 rigid transforms. A wrong inverse such as “transpose the rotation and negate the translation” (a very common mistake) gives errors that look like drift but are really algebra. This lesson fixes the algebra once.

The intuition

A rigid motion shifts and turns a body without stretching it, so every distance between points of the body stays the same. Any such motion can be described by a rotation and a translation, and doing one motion after another is another rigid motion. Undoing a motion is also a rigid motion. These three facts are the group axioms, and they let us treat poses as objects to multiply and invert.

The inverse of a rigid transformThe inverse of a homogeneous transform with rotation R and translation t has rotation R transpose and translation minus R transpose times t. In words: to go back, undo the rotation, and subtract the shift as seen from the new orientation.T = [ R t ; 0 1 ] T⁻¹ = [ Rᵀ −Rᵀ t ; 0 1 ] why Rᵀthe rotation block must be undoneby the inverse rotation: Rᵀ = R⁻¹ why −Rᵀtp = Rq + t ⇒ q = Rᵀ(p − t)= Rᵀp + (−Rᵀt) It is NOT [Rᵀ, −t]: the shift must be rotated back as well.
The inverse of a rigid transform: transpose the rotation and rotate the shift back.

Interactive figure. A robot placed in the world with a sensor mounted on it. The sensor pose in the world is the composition of the two transforms, and the point coordinates in robot and sensor frames use their inverses. This figure needs JavaScript to be interactive.

The robot pose in the world is TWR; the sensor pose on the robot is TRS; the sensor pose in the world is their product. Change the robot and mount values and read how the sensor position follows the composition rule R₁t₂ + t₁.

Geometric and physical interpretation

Geometric view. A rigid motion is an isometry that preserves handedness: ‖Tp − Tq‖ = ‖p − q‖. The group SE(3) has dimension 6: three numbers for the translation, three for the rotation. In 2D, SE(2) has 3 degrees of freedom (x, y, θ), the pose of a planar robot. Physical view. The configuration of a free rigid body (a drone, a gripper, a LiDAR) is exactly one element of SE(3); its motion over time is a path in that six-dimensional space.

The mathematics

SE(3)
the special Euclidean group: all T = [[R, t], [0, 1]] with R ∈ SO(3) and t ∈ ℝ³.
SE(2)
the planar version, with R ∈ SO(2), t ∈ ℝ²; three parameters (x, y, θ).
TWA, TWB
poses of frames A and B in the world W.
TAB
the pose of B relative to A: TAB = TWA⁻¹ TWB.

Definition and structure

SE(3) = { T = [ R  t ; 0ᵀ  1 ] : R ∈ SO(3), t ∈ ℝ³ },   dim SE(3) = 3 + 3 = 6

What it means. The set of homogeneous transforms whose rotation block is a rotation. It contains pure rotations (t = 0) and pure translations (R = I) as special cases.

Composition and inverse

T₁T₂ = [ R₁R₂  R₁t₂ + t₁ ; 0  1 ]        T⁻¹ = [ Rᵀ  −Rᵀt ; 0  1 ]

What it means. Composition and inverse stay inside SE(3), so it is a group. The inverse needs only a transpose and one matrix-vector product, not a general 4 × 4 inversion.

Relative pose

TAB = TWA⁻¹ TWB

What it means. Given two poses in the world, the transform from A to B is the world-to-A undone followed by the world-to-B. It is the quantity measured by odometry between two timestamps and used as an edge in a pose graph.

SE(3) is the group of rigid motions: T = [[R, t], [0, 1]], six degrees of freedom, T⁻¹ = [[Rᵀ, −Rᵀt], [0, 1]], TAB = TWA⁻¹ TWB.

Step-by-step derivation: inverse, closure and distance preservation

  1. Inverse. The motion is p = Rq + t. Solve for q: subtract t and apply R⁻¹ = Rᵀ to get q = Rᵀp − Rᵀt. Reading that as a homogeneous matrix gives [[Rᵀ, −Rᵀt], [0, 1]].
  2. Check. Multiply: [[R, t], [0, 1]] [[Rᵀ, −Rᵀt], [0, 1]] = [[RRᵀ, −RRᵀt + t], [0, 1]] = [[I, 0], [0, 1]] ✓.
  3. Closure. The product has rotation block R₁R₂ ∈ SO(3) (closure of SO(3)), a translation in ℝ³, and the bottom row (0, 0, 0, 1). So the product is in SE(3). The inverse has block Rᵀ ∈ SO(3). The identity is in SE(3), and matrix multiplication is associative, so SE(3) is a group.
  4. Distances. For two points, Tp − Tq = R(p − q) (the translations cancel) and ‖R(p − q)‖ = ‖p − q‖ because R is orthogonal. Angles between difference vectors are preserved as well, so shapes are preserved.
  5. Degrees of freedom. SE(3) has 3 (rotation) + 3 (translation) = 6 parameters. A transform stored as 16 numbers is highly redundant: 9 of them are fixed by orthonormality, the bottom row is constant.
  6. Determinant. det T = det R · 1 = +1: rigid motions preserve volume and orientation.

Not commutative. In general T₁T₂ ≠ T₂T₁. A robot that drives 1 m forward and then turns 90° ends at a different pose from one that turns 90° and then drives 1 m. The translation components R₁t₂ + t₁ and R₂t₁ + t₂ differ.

Relative pose. From T_WB = T_WA T_AB we solve T_AB = T_WA⁻¹ T_WB, which is exactly what visual odometry or wheel odometry reports between two time steps. Its rotation is R_WAᵀR_WB and its translation is R_WAᵀ(t_WB − t_WA): the world displacement expressed in A's axes.

Looking ahead. The 6-dimensional curved space SE(3) has a tangent vector space, the Lie algebra se(3), whose elements are twists (angular and linear velocity). Module 10 uses it to perturb, average and differentiate poses correctly.

A worked example: inverting and relating poses

  • The inverse. T with R = Rz(90°), t = (1, 2, 3). Then Rᵀ = Rz(−90°) = [[0, 1, 0], [−1, 0, 0], [0, 0, 1]] and −Rᵀt = −(2, −1, 3) = (−2, 1, −3). Check: T⁻¹(1, 3, 3) = Rᵀ(1, 3, 3) + (−2, 1, −3) = (3, −1, 3) + (−2, 1, −3) = (1, 0, 0): the world point (1, 3, 3) is mapped back to (1, 0, 0) ✓ (it was computed from that point in the last lesson).
  • The common mistake. Using (Rᵀ, −t) gives Rᵀ(1, 3, 3) − (1, 2, 3) = (3, −1, 3) − (1, 2, 3) = (2, −3, 0), not (1, 0, 0).
  • Distance preserved. For p = (1, 0, 0) and q = (0, 2, 0), ‖p − q‖ = √5. After the transform, Tp = (1, 3, 3) and Tq = (−2 + 1, 0 + 2, 3) = (−1, 2, 3), whose distance is √(4 + 1) = √5 ✓.
  • Relative pose. Robot at time 1: T_WA with position (1, 1), heading 0°. At time 2: T_WB at (1, 3), heading 90°. Then R_AB = R(0)ᵀ R(90°) = R(90°) and t_AB = R(0)ᵀ((1, 3) − (1, 1)) = (0, 2): in the first robot frame the second is 2 m to the left and turned 90°.
  • Order matters. “Forward 1, then turn 90°” T₁T₂ with T₁ = trans(1, 0) and T₂ = rot(90°) has translation (1, 0). “Turn 90°, then forward 1” T₂T₁ has translation R(90°)(1, 0) = (0, 1).

Robotics application

Pose graphs and SLAM. Nodes are elements of SE(2) or SE(3); edges are relative transforms T_AB; the error of an edge is (T_AB)⁻¹ T_WA⁻¹ T_WB, which is the identity when the graph is consistent; see pose graphs and rotation matrices, quaternions and poses.

Odometry and navigation. Wheel odometry between two timestamps is a small relative transform in SE(2), accumulated by multiplication; see robot motion models for navigation.

UAVs and sensor fusion. Visual-inertial and LiDAR-inertial odometry estimate the SE(3) pose of the vehicle; the camera-IMU calibration is a fixed element of SE(3); see IMU preintegration.

Manipulators. The pose of the hand is an element of SE(3) computed as a product of joint transforms; the six degrees of freedom match a six-joint arm exactly (Module 8).

Engineering implications and limitations

Practical rules

  • Use the closed-form inverse. [[Rᵀ, −Rᵀt], [0, 1]] is faster and more accurate than a general 4 × 4 inverse, and keeps R orthogonal.
  • Always name frames in the variable. Write T_A_B and check that inner frame names match in every product.
  • Accumulate carefully. A long chain of products drifts away from SE(3) through rounding; re-project R onto SO(3) periodically (SVD) and keep the bottom row exact.
  • Distinguish relative from absolute poses. An odometry increment is a small T_AB; a map pose is a T_WA. Mixing them is the most frequent integration bug.
  • Rotation and translation errors are different units. Radians and metres cannot be added in a single norm without weights (Module 9 gives the weights).
  • Never average or add poses entrywise. The average of two transforms is not a transform; use Lie-algebra means (Module 10) or optimisation.

Limits

SE(3) assumes a rigid body. Deforming bodies, rolling-shutter cameras and flexible arms need extra parameters. It is also a non-Euclidean manifold: distances between poses need a choice of how to weigh rotation against translation.

Common misconceptions

“The inverse of [R, t] is [Rᵀ, −t].”

It is [Rᵀ, −Rᵀt]. The translation must be rotated back too.

“A transform has 16 independent numbers.”

It has 6 degrees of freedom; the other entries are fixed by the structure.

“T₁T₂ = T₂T₁.”

Rigid motions do not commute: forward-then-turn differs from turn-then-forward.

“The translation part of a transform is the position of the first frame in the second.”

In TAB the vector t is the position of B's origin in A. The position of A in B is −RABᵀ tAB.

Engineering takeaways

  1. SE(3) is the group of rigid motions T = [[R, t], [0, 1]]: closed under products and inverses, with six degrees of freedom (three in SE(2)).
  2. T⁻¹ = [[Rᵀ, −Rᵀt], [0, 1]] and T₁T₂ = [[R₁R₂, R₁t₂ + t₁], [0, 1]].
  3. Rigid motions preserve distances, angles and orientation; they do not commute.
  4. The pose of B relative to A is TAB = TWA⁻¹ TWB, the quantity measured by odometry and used in pose graphs.
  5. Use the closed-form inverse, check frame names in every product, and re-project R periodically.

References and further reading

Primary papers and authoritative documentation.

Knowledge check

Three conceptual questions. Write an answer, then reveal the explanation. Your answers stay in your browser.

Question 1

Find the inverse of the planar transform with R = R(90°) and t = (2, 0), and verify it on the point p = (1, 0).

Explanation

T p = R(90°)(1, 0) + (2, 0) = (0, 1) + (2, 0) = (2, 1). The inverse has Rᵀ = R(−90°) = [[0, 1], [−1, 0]] and −Rᵀt = −(0, −2) = (0, 2). Then T⁻¹(2, 1) = Rᵀ(2, 1) + (0, 2) = (1, −2) + (0, 2) = (1, 0) = p ✓.

Question 2

Robot A is at (0, 0) with heading 0°, robot B is at (3, 4) with heading 90°. Find the pose of B relative to A and the distance between them.

Explanation

RAB = R(0)ᵀR(90°) = R(90°), tAB = R(0)ᵀ((3, 4) − (0, 0)) = (3, 4). B is 3 m ahead and 4 m to the left of A, turned 90°. Distance = ‖(3, 4)‖ = 5, the same in any frame.

Question 3

A teammate inverts a pose by transposing R and negating t. The pose is R = Rz(90°), t = (1, 0, 0). What is the error when mapping the world point (1, 1, 0) back, and what is the correct inverse translation?

Explanation

Correct −Rᵀt = −Rz(−90°)(1, 0, 0) = −(0, −1, 0) = (0, 1, 0). Mapping p = (1, 1, 0) back: correct Rᵀp + (0, 1, 0) = (1, −1, 0) + (0, 1, 0) = (1, 0, 0). The teammate's version gives (1, −1, 0) + (−1, 0, 0) = (0, −1, 0): an error of √2 m.

What’s next

Knowing that poses compose and invert, the next lesson focuses on doing it right: the order of multiplication in a chain, the inverse in practice, and the bugs that come from getting either wrong.

Next lesson

M7-T7 — Rotation Composition and Inverse

Compose transforms in the right order and invert them without a general matrix inverse.

Nothing below is required to finish this lesson.