Skip to the lesson
FixTheRobot Explore Robotics / Linear Algebra / M10 Lie Groups and Advanced Robotics Mathematics / M10-T4

Linear Algebra · Theory · M10

M10-T4 — The Exponential Map

Closed forms turn a rotation vector or a twist into a rotation or a pose with a handful of trigonometric terms, no infinite series required.

  • Lesson 4 of 8
  • Module 10: Lie Groups and Advanced Robotics Mathematics
  • Lie groups and manifolds
  • About 8 minutes to read

The matrix exponential sums an infinite series, but for rotations the powers of the skew matrix repeat with period two (up to sign), so the series collapses into sines and cosines: Rodrigues' formula. The same trick gives the V matrix for rigid transforms. These formulas run inside every gyro integrator, ICP and pose-graph update.

Learning objectives

After this lesson, you should be able to:

  • Derive Rodrigues' formula R = I + sin θ [n]ₓ + (1 − cos θ)[n]ₓ² from the matrix power series.
  • Write the closed form of the SE(3) exponential, including the V matrix, and check it for a planar arc.
  • Implement the exponential with series expansions near θ = 0 to avoid 0/0 and rounding loss.
  • Verify that the result is a valid rotation or transform and relate exp to the elementary rotations.

Introduction and motivation

A drone's gyro reports (0.02, −0.01, 0.3) rad/s at 400 Hz. Every 2.5 ms the code needs the rotation exp([ω Δt]ₓ). The angle is tiny (0.0008 rad), and a naive implementation computing sin θ/θ and (1 − cos θ)/θ² divides small numbers by tiny ones: at θ = 10⁻⁸ the second quantity evaluates to exactly 0 in double precision instead of 0.5, silently making the update wrong. Knowing the closed forms and their small-angle safe versions is part of writing a correct estimator.

The intuition

A rotation about the axis n by the angle θ leaves the component of a vector along n alone and turns the component perpendicular to n, within the plane perpendicular to n. In that plane the perpendicular part moves like a 2D rotation: a combination of itself (cos θ) and its quarter turn n × v (sin θ). Writing that with matrices and collecting terms gives Rodrigues' formula. The exponential of the skew matrix simply is this rotation, because powers of [n]ₓ cycle through [n]ₓ, [n]ₓ², −[n]ₓ, −[n]ₓ², ….

Rodrigues: decompose the vector into along and acrossTo rotate a vector v about a unit axis n by an angle theta, split it into the part parallel to the axis, which does not move, and the part perpendicular to it, which turns in the plane perpendicular to the axis, with the cross product n cross v giving the quarter turn direction.axis n v (n·v)n v⊥ n × v v′ = v cos θ + (n × v) sin θ + n (n·v)(1 − cos θ) R = I + sin θ [n]ₓ + (1 − cos θ) [n]ₓ² with ω = θ n: R = exp([ω]ₓ) SE(3): T = [ R V v ; 0 1 ] V = I + (1−cos θ)/θ² [ω]ₓ + (θ−sin θ)/θ³ [ω]ₓ² small θ: use series for sin θ/θ, (1−cos θ)/θ², …
Rodrigues: split along and across the axis; closed forms for SO(3) and SE(3).

Interactive figure. A box rotated by the exponential of a rotation vector, with the axis drawn as an arrow. The readout gives the matrix, the angle and axis and a check that the logarithm returns the vector. This figure needs JavaScript to be interactive.

Move the rotation-vector sliders: each setting is the exponential of the vector, a rotation by ‖ω‖ about ω. Set ω to (π, 0, 0) for a half turn about x, or make ‖ω‖ tiny and note that R ≈ I + [ω]ₓ. The readout also reports whether the logarithm recovers the rotation vector.

Geometric and physical interpretation

Geometric view. For ω = θn, exp([ω]ₓ) is the rotation by θ about n. In SE(3), exp(ξ^) screws the frame: it rotates by ‖ω‖ about the screw axis and slides along it; the matrix V maps the twist's linear part into the translation of the resulting pose. Physical view. For a gyro sample, exp([ω Δt]ₓ) is the exact rotation over that interval if the rate were constant: a significant improvement over first-order updates when the rates are large.

The mathematics

ω = θn
a rotation vector with angle θ = ‖ω‖ and unit axis n.
K = [n]ₓ
the skew matrix of the unit axis; K³ = −K, K² = nnᵀ − I.
V(ω)
the matrix linking the twist linear part to the translation: t = V v.
sinc(θ)
sin θ / θ, equal to 1 at θ = 0.

Rodrigues' formula (SO(3))

R = exp([ω]ₓ) = I + (sin θ/θ) [ω]ₓ + ((1 − cos θ)/θ²) [ω]ₓ²

What it means. Two scalar coefficients multiply the skew matrix and its square. In terms of the unit axis: I + sin θ K + (1 − cos θ)K². The result is orthogonal with determinant 1 for any ω.

The SE(3) exponential

exp(ξ^) = [ exp([ω]ₓ)   V v ; 0   1 ],    V = I + ((1 − cos θ)/θ²)[ω]ₓ + ((θ − sin θ)/θ³)[ω]ₓ²

What it means. The rotation block is Rodrigues; the translation is the linear part v mapped by V. For ω = 0, V = I and the motion is a pure translation by v.

Small-angle series

sin θ/θ ≈ 1 − θ²/6,   (1 − cos θ)/θ² ≈ 1/2 − θ²/24,   (θ − sin θ)/θ³ ≈ 1/6 − θ²/120   for θ below about 10⁻²

What it means. Direct evaluation divides rounding errors by tiny numbers. Below a threshold use the Taylor expansions; the three coefficients converge to 1, 1/2 and 1/6 as θ → 0.

exp([ω]ₓ) = I + (sin θ/θ)[ω]ₓ + ((1 − cos θ)/θ²)[ω]ₓ²; SE(3): translation V v. Switch to Taylor series for tiny θ.

Step-by-step derivation: Rodrigues' formula and the V matrix

  1. Power series. exp(θK) = I + θK + θ²K²/2! + θ³K³/3! + ⋯ with K = [n]ₓ, ‖n‖ = 1.
  2. Cycle of powers. For a unit axis, K³ = −K (check: K²v = n(n·v) − v, so K³v = n × (n(n·v) − v) = −n × v = −Kv). Hence K⁴ = −K², K⁵ = K, and so on: odd powers are ±K, even powers ±K².
  3. Collect. exp(θK) = I + K(θ − θ³/3! + θ⁵/5! − ⋯) + K²(θ²/2! − θ⁴/4! + θ⁶/6! − ⋯) = I + sin θ K + (1 − cos θ)K². With ω = θn, [ω]ₓ = θK, giving the general form with sin θ/θ and (1 − cos θ)/θ².
  4. Check as a rotation. Applied to v = n: Kn = 0, so Rn = n. Applied to a perpendicular unit vector u: Ku = n × u, K²u = −u, so Ru = u(1 − (1 − cos θ)) + (n × u) sin θ = u cos θ + (n × u) sin θ: the 2D rotation in the plane perpendicular to n.
  5. SE(3) series. With ξ^ = [[ω^, v], [0, 0]] (where ω^ = [ω]ₓ), the powers are (ξ^)ⁿ = [[ω^ⁿ, ω^ⁿ⁻¹v], [0, 0]]. So the top-right block of exp(ξ^) is Σₙ≥₁ ω^ⁿ⁻¹/n! · v = (I + ω^/2! + ω^²/3! + ⋯)v.
  6. Sum the V series. Using the cycle of powers, I + ω^/2! + ω^²/3! + ⋯ = I + (1 − cos θ)/θ² ω^ + (θ − sin θ)/θ³ ω^² (collect odd and even powers as before), which defines V.
  7. Safe numerics. The coefficients are a = sin θ/θ = 1 − θ²/6 + ⋯, b = (1 − cos θ)/θ² = 1/2 − θ²/24 + ⋯, c = (θ − sin θ)/θ³ = 1/6 − θ²/120 + ⋯. For θ below roughly 10⁻² the Taylor forms are more accurate than the direct formulas, whose numerators lose all significant digits.
  8. Valid result. Rodrigues' output is exactly orthogonal in exact arithmetic; numerically ‖RᵀR − I‖ is a few 10⁻¹⁶. The SE(3) exponential inherits it. Re-orthonormalise only if you chain thousands of products.

Connection to the elementary rotations. ω = (0, 0, ψ) gives Rz(ψ) exactly; likewise for x and y. A general rotation exp([ω]ₓ) is not a product of the three elementary exponentials with the same angles (they do not commute); the rotation-vector and Euler-angle descriptions of the same rotation have different numbers.

Quaternion form. The same rotation as a unit quaternion is q = (cos(θ/2), n sin(θ/2)): the quaternion exponential. The half angle is why quaternions double-cover SO(3).

A worked example: Rodrigues, V and safe coefficients

  • Quarter turn. ω = (0, 0, π/2): K = [[0, −1, 0], [1, 0, 0], [0, 0, 0]], sin θ = 1, 1 − cos θ = 1, so R = I + K + K² = [[0, −1, 0], [1, 0, 0], [0, 0, 1]] = Rz(90°) ✓.
  • Half turn. ω = (π, 0, 0) gives R = I + 0 + 2K² = diag(1, −1, −1): rotation by 180° about x.
  • A general vector. ω = (1, 2, 3), θ = 3.742: R = [[−0.695, 0.714, 0.089], [−0.192, −0.304, 0.933], [0.693, 0.631, 0.348]] with determinant 1 and RᵀR = I to 10⁻¹⁶.
  • A 3D twist. ξ = (1, 0, 0; 0.1, 0.2, 0.3): the angle is ‖ω‖ = 0.374 rad and V = [[0.978, −0.145, 0.104], [0.152, 0.983, −0.039], [−0.094, 0.059, 0.992]], so the translation is the first column of V: V v = (0.978, 0.152, −0.094). It is slightly shorter than v and drifts sideways because the body turns while it moves (an arc, not a line). If v were parallel to ω (a pure screw) V v would equal v exactly.
  • Planar arc check. ξ = (1, 0, 0; 0, 0, π/2): V v = (0.6366, 0.6366, 0), the quarter circle of the previous lesson.
  • Safe coefficients. At θ = 10⁻⁸ the direct (1 − cos θ)/θ² evaluates to exactly 0, whereas the series gives 0.5. At θ = 10⁻⁵ the direct value is 0.50000004 (error 4 × 10⁻⁸): already visibly wrong in the eighth digit.

Robotics application

Gyro integration and IMU preintegration. Each sample multiplies by exp([ω Δt]ₓ); preintegration composes many such factors; see IMU preintegration and attitude representation and rotation matrices.

Pose-graph and bundle-adjustment updates. Optimisers compute a six-dimensional step δ and update T ← T exp(δ^); see pose graphs, nonlinear least squares and rotation matrices, quaternions and poses.

LiDAR registration. Gauss-Newton ICP solves for a small twist per iteration and applies its exponential to the cloud; see ICP fundamentals.

Mobile robots and manipulators. The exact arc update of an odometry step is the planar exponential; the product-of-exponentials formula for arms uses the same closed form for each joint.

Engineering implications and limitations

Practical rules

  • Implement series branches. Switch to Taylor expansions below about θ = 10⁻² (or 10⁻³ for the cubic terms); test at θ = 0 exactly.
  • Use a tested library for production. Sophus, manif, GTSAM and Eigen have exp/log with the edge cases handled; copy the algorithm, not just the formula.
  • Check the output. Unit tests: R Rᵀ ≈ I, det ≈ 1, exp of a zero vector is the identity, and exp(−ω) = exp(ω)ᵀ.
  • Mind the unit of ω. Radians (not degrees) and the product ω Δt; gyro data in °/s needs conversion.
  • Document the twist ordering. The V matrix multiplies the linear part; if your library orders (ω, v), indexes shift accordingly.
  • Re-normalise occasionally. For millions of products re-orthonormalise (SVD) or switch to quaternions with normalisation.

Limits

The exponential is onto SO(3) and SE(3) but not one-to-one: every rotation has infinitely many rotation vectors (θ + 2πk, and the flipped axis at θ = π). Formulas are exact for constant twists; real motions with changing rates need small steps or higher-order integration (Magnus expansion).

Common misconceptions

“exp of a matrix is the exponential of each entry.”

It is the power series Σ Aᵏ/k!. For skew matrices it yields the rotation by Rodrigues' formula.

“R = I + [ω]ₓ is a good rotation for any ω.”

It is accurate to first order for small ω but not orthogonal; for larger angles use Rodrigues.

“The translation of exp(ξ^) is just v.”

It is V v; it equals v only for ω = 0 (pure translation).

“Direct evaluation of the coefficients is fine at small angles.”

It is not: (1 − cos θ)/θ² returns 0 below about 10⁻⁸ and is inaccurate far above that; use the series.

Engineering takeaways

  1. Rodrigues: R = I + (sin θ/θ)[ω]ₓ + ((1 − cos θ)/θ²)[ω]ₓ², from K³ = −K for a unit axis.
  2. SE(3): exp(ξ^) = [[exp([ω]ₓ), V v], [0, 1]] with V = I + (1 − cos θ)/θ² [ω]ₓ + (θ − sin θ)/θ³ [ω]ₓ².
  3. Use Taylor expansions for θ below about 10⁻²: 1 − θ²/6, 1/2 − θ²/24, 1/6 − θ²/120.
  4. exp(0) = I, exp(−ω) = exp(ω)ᵀ; the map is onto but not one-to-one.
  5. Gyro integration, ICP steps and pose-graph updates all apply exp to a small tangent vector.

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

Compute exp of ω = (0, 0.5π, 0) with Rodrigues' formula and say what it is.

Explanation

θ = π/2, n = (0, 1, 0), K = [[0, 0, 1], [0, 0, 0], [−1, 0, 0]], R = I + K + K². K² = diag(−1, 0, −1). So R = [[0, 0, 1], [0, 1, 0], [−1, 0, 0]] = Ry(90°).

Question 2

For θ = 10⁻³, give the three Taylor values of sin θ/θ, (1 − cos θ)/θ² and (θ − sin θ)/θ³.

Explanation

sin θ/θ = 1 − θ²/6 = 0.99999983; (1 − cos θ)/θ² = 1/2 − θ²/24 = 0.49999996; (θ − sin θ)/θ³ = 1/6 − θ²/120 = 0.16666666 (to the digits shown).

Question 3

A twist (v, ω) = (2, 0, 0; 0, 0, 0) is exponentiated with the closed form. What are R and the translation?

Explanation

ω = 0 means θ = 0: R = I and V = I (the limit of the formula), so the translation is v = (2, 0, 0): a pure translation, the series branch must return exactly this rather than a not-a-number result from 0/0.

What’s next

The exponential maps tangent vectors to the group. The logarithm goes the other way: from a rotation or pose back to the rotation vector or twist that generates it, with care at the two edge cases of zero angle and angle π.

Next lesson

M10-T5 — The Logarithmic Map

Recover the rotation vector or twist from a rotation or transform, and handle the edge cases.

Nothing below is required to finish this lesson.