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

Linear Algebra · Theory · M10

M10-T6 — Small-Angle Approximations

For small rotations the Lie machinery collapses to something familiar: identity plus a skew matrix, and rotations that add. Knowing the size of the error tells you when that shortcut is allowed.

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

Many robotics algorithms quietly rely on small-angle approximations: the EKF attitude update, the linearised pose-graph residual, a gyro step at 1 kHz. They are accurate and cheap if the angles really are small, and silently wrong otherwise. This lesson quantifies the error so that you can decide.

Learning objectives

After this lesson, you should be able to:

  • State exp([ω]ₓ) ≈ I + [ω]ₓ and log(R) ≈ ½vee(R − Rᵀ) and bound their errors by θ²/2 and θ²/6.
  • Show that small rotations commute to first order and compute the leading commutator error ½a × b.
  • Apply the Baker-Campbell-Hausdorff formula to compose small rotations and estimate its accuracy.
  • Decide whether a small-angle approximation is safe in a given application.

Introduction and motivation

An attitude filter running at 200 Hz receives a gyro rate of 1 rad/s: each update is a rotation of 0.005 rad. The first-order update R ← R(I + [ω Δt]ₓ) has error of order 10⁻⁵ per step, negligible. If the same code is run at 1 Hz in a replay tool, the step is 1 rad and the matrix is far from orthogonal: scaled by 1.4 in some directions. The difference is only the size of the angle, and the error scales with its square.

The intuition

Zoom into a curved surface and it looks flat. A rotation by a small angle is the identity plus a small skew matrix, with corrections of second order (the angle squared). Two small rotations applied in either order give nearly the same result: they commute to first order, and their difference is of second order (half the cross product of the two rotation vectors). So we may add small rotation vectors as if they lived in a vector space, with an error that we can estimate.

How fast does the first-order approximation fail?A bar chart of the error of the first-order approximation of a rotation, identity plus the skew matrix, against the rotation angle on a logarithmic error scale. The error grows with the square of the angle: about one tenth of a percent at 2.5 degrees, one and a half percent at 10 degrees, and fifty percent at 60 degrees. 1°1.5e-45°3.8e-310°0.01530°0.13660°0.532 error of I + [ω]ₓ against exp([ω]ₓ): grows like θ²/2 error (log scale) Rule of thumb: below 5° (0.09 rad) the error is below 0.4 %, so first order is safe; above 30° it is not.
The error of the first-order exponential grows like θ²/2.

Interactive figure. A rotated box with a small perturbation applied on the left or right. For small rotation vectors the boxes coincide and the readout shows that the equivalent perturbation in the other convention is nearly equal; for large rotations they differ. This figure needs JavaScript to be interactive.

Set the rotation vector small (a few hundredths of a radian): the readout reports the logarithm recovering it. Now add a small perturbation δ and compare the left and right options: when both ω and δ are tiny the two boxes look the same; when ω is large they differ even though δ is small. This is the second-order effect, proportional to ‖ω‖‖δ‖.

Geometric and physical interpretation

Geometric view. The group SO(3) is locally flat to first order: exp([ω]ₓ) = I + [ω]ₓ + ½[ω]ₓ² + ⋯. The first-order matrix I + [ω]ₓ maps a vector v to v + ω × v: it moves v along the tangent to its circle instead of along the circle, so lengths grow by √(1 + ‖ω×v‖²/‖v‖²) ≈ 1 + θ²/2 (second order). Physical view. Taking a step along the tangent rather than the arc overshoots a little; with small angles the overshoot is negligible, with large ones the object appears to grow.

The mathematics

ω, δ
small rotation vectors with norms θ = ‖ω‖ and ‖δ‖ ≪ 1.
I + [ω]ₓ
the first-order approximation of exp([ω]ₓ).
[a, b]
the Lie bracket a × b appearing in the second-order term.
BCH
Baker-Campbell-Hausdorff formula for log(exp(a)exp(b)).

First-order exponential and logarithm

exp([ω]ₓ) = I + [ω]ₓ + O(θ²),      ‖ exp([ω]ₓ) − I − [ω]ₓ ‖ ≈ θ²/2       log(R) ≈ ½ vee(R − Rᵀ)

What it means. The error in the matrix is about θ²/2 (the next series term ½[ω]ₓ² has norm θ²/2). The logarithm formula is exact to first order, with relative error θ²/6.

Composition of small rotations

exp(a) exp(b) ≈ exp(a + b + ½ a × b + ⋯)  ≈ exp(a + b) for small a, b

What it means. The product of two small rotations is the rotation of the sum, up to a second-order correction ½ a × b. The commutator a × b measures the non-commutativity; it vanishes when a ∥ b.

Rate of the error

error ≈ θ²/2 (first-order matrix),    θ³/6 (log),    ‖a‖‖b‖/2 (composition)

What it means. Halving the angle quarters the matrix error and divides the composition error by four. A 1° angle gives 1.5 × 10⁻⁴ error in the matrix and a 10° angle 1.5 × 10⁻², one hundred times more.

exp(ω) ≈ I + [ω]ₓ with error θ²/2; exp(a)exp(b) ≈ exp(a + b + ½a×b); small rotations add to first order, with a second-order commutator error.

Step-by-step derivation: error bounds and the BCH correction

  1. Matrix series. exp([ω]ₓ) = I + [ω]ₓ + [ω]ₓ²/2! + [ω]ₓ³/3! + ⋯. The norm of [ω]ₓ is θ, so ‖[ω]ₓⁿ‖ ≤ θⁿ and the error of the first-order truncation is bounded by θ²/2 + θ³/6 + ⋯ ≤ θ²/2 · e^θ; for θ ≤ 0.5 this is below 0.58 θ².
  2. Unitarity violation. (I + [ω]ₓ)ᵀ(I + [ω]ₓ) = I − [ω]ₓ² (since [ω]ₓ is skew) , which equals I + θ²(I − nnᵀ): the first-order matrix stretches the plane perpendicular to the axis by √(1 + θ²) ≈ 1 + θ²/2. So orthogonality is lost at second order.
  3. Logarithm. From R − Rᵀ = 2 sin θ [n]ₓ: ½vee(R − Rᵀ) = sin θ n = ω sin θ/θ ≈ ω(1 − θ²/6), a relative error of θ²/6.
  4. Composition. Expand exp(a)exp(b) = (I + A + A²/2)(I + B + B²/2) = I + (A + B) + (A²/2 + AB + B²/2) + ⋯ and compare with exp(a + b + c) = I + (A + B + C) + (A + B)²/2 + ⋯. Matching second-order terms: C + (A + B)²/2 = A²/2 + AB + B²/2, so C = (AB − BA)/2 = ½[A, B] and hence c = ½ a × b (the bracket is the cross product).
  5. Next terms. The full BCH series is a + b + ½[a, b] + (1/12)([a, [a, b]] + [b, [b, a]]) + ⋯; the third-order terms are of size ‖a‖²‖b‖/12.
  6. When does the commutator vanish? When a and b are parallel (rotations about the same axis commute exactly). For orthogonal axes with the same size it is at its largest: ‖a × b‖ = ‖a‖‖b‖.
  7. Practical test. If the largest angle in a step is θ, the error per step is about θ²/2 for matrix updates and ‖a‖‖b‖/2 for order effects. For an attitude filter at rate f with maximum rate ωmax, θ = ωmax/f. Choose f so that θ²/2 is below the sensor noise or the rounding level.
  8. Improving the approximation. Keep the second-order term (I + [ω]ₓ + [ω]ₓ²/2), use Rodrigues' closed form (exact), or re-orthonormalise after the first-order step. For the logarithm use the full formula of the previous lesson when θ is not tiny.

A subtle point on first-order filters. A filter that replaces exp(δ) with I + [δ]ₓ and does not re-orthonormalise accumulates the θ²/2 stretching error at every step: over N steps the matrix grows like (1 + θ²/2)ᴺ, which after 10⁶ steps of 0.005 rad is about exp(12.5) = 2.7 × 10⁵, a catastrophe; the closed form or normalisation avoids it.

A worked example: sizes of the errors

  • Matrix error. For a rotation about x by θ, the error of I + [ω]ₓ in the 2-norm is 1.5 × 10⁻⁴ at 1° (θ²/2 = 1.52 × 10⁻⁴), 3.8 × 10⁻³ at 5°, 0.0152 at 10°, 0.136 at 30° and 0.532 at 60°.
  • Stretching. The first-order matrix has (I + [ω]ₓ)ᵀ(I + [ω]ₓ) = I + θ²(I − nnᵀ): for 10° (0.1745 rad) the perpendicular directions grow by √(1 + 0.0305) = 1.0151, 1.5 %.
  • Composition. a = (0.1, 0, 0), b = (0, 0.1, 0): log(exp(a)exp(b)) = (0.0999, 0.0999, 0.0050) versus a + b = (0.1, 0.1, 0) and BCH a + b + ½a × b = (0.1, 0.1, 0.005). The second-order term is ½·0.01 = 0.005 ✓, and ‖exp(a)exp(b) − exp(a + b)‖ = 0.0071.
  • Logarithm. For θ = 0.1: ½vee(R − Rᵀ) = sin θ n = 0.0998 n, relative error θ²/6 = 0.17 %.
  • Filter rate. A gyro rate of 3 rad/s at 100 Hz gives a step θ = 0.03 rad and first-order matrix error 4.5 × 10⁻⁴ per step; at 10 Hz the step is 0.3 rad with error 0.045 (4.5 %), not acceptable.
  • Drift of an unnormalised first-order filter. After 1000 steps of 0.01 rad the perpendicular directions have been stretched by (1 + 0.0001/2)^1000 ≈ 1.051: a 5 % scale error.

Robotics application

UAV attitude filters. The error-state Kalman filter uses small-angle error states precisely because attitude errors are small by design; see the error-state Kalman filter and the extended Kalman filter.

SLAM and registration. Gauss-Newton ICP and pose-graph optimisation linearise rotation as I + [δ]ₓ around the current estimate and re-linearise each iteration; see ICP fundamentals, nonlinear least squares and pose graphs.

IMU preintegration. Short-interval increments use first-order propagation of rotation noise; the bias correction of the rotation increment is linear in the bias to first order; see IMU preintegration.

Mobile robots and manipulators. The differential kinematics of Module 8 is the small-angle limit of forward kinematics: a Jacobian is exactly a first-order approximation.

Engineering implications and limitations

Practical rules

  • Know the size of your steps. Compute θ = ‖ω‖Δt; use first order if θ²/2 is below your tolerance (θ below 0.05 rad gives 1.2 × 10⁻³).
  • Prefer the closed form when it is cheap. Rodrigues' formula costs a sine and a cosine; there is rarely a reason to use I + [ω]ₓ for the state update, only for Jacobians.
  • Re-orthonormalise if you do use first order. Normalise columns and apply SVD projection regularly, or renormalise a quaternion every step.
  • Linearise at the current estimate. The accuracy of the linearised model depends on the distance from the linearisation point; iterating the solver keeps that distance small.
  • Check the commutator. If two rotations are not both tiny (or parallel), do not swap their order or merge them by adding rotation vectors.
  • Make errors small by design. Error-state filters keep the nominal state exact and the error small; the first-order Jacobians are then accurate.

Limits

The approximations break down for angles above roughly 0.2 rad (11°), and entirely near π, where the logarithm is ill-conditioned. They never replace the exact exponential for the state itself, only for the small corrections around it.

Common misconceptions

“I + [ω]ₓ is a rotation for small ω.”

It is a rotation only to first order. It is not orthogonal: it stretches by 1 + θ²/2, so it needs normalisation if iterated.

“Small rotations always commute.”

They commute to first order. The commutator ½a × b is second order, small but not zero.

“The error is linear in the angle.”

It is quadratic in θ: halving the angle quarters the error.

“The approximation is fine for any physical step in a high-rate filter.”

It depends on θ = ω Δt; a fast turn at a low rate is not small, regardless of the filter frequency used elsewhere.

Engineering takeaways

  1. exp([ω]ₓ) ≈ I + [ω]ₓ with error ≈ θ²/2; log(R) ≈ ½vee(R − Rᵀ) with relative error θ²/6.
  2. The first-order matrix is not orthogonal: it stretches perpendicular directions by √(1 + θ²).
  3. exp(a)exp(b) ≈ exp(a + b + ½a × b): small rotations add to first order with a second-order commutator correction.
  4. Quantify the step θ = ‖ω‖Δt; below 0.05 rad first order is safe, above 0.2 rad it is not.
  5. Use closed forms for states and first-order forms for Jacobians; renormalise anything built from first-order steps.

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

Estimate the error of I + [ω]ₓ for a rotation of 4° (0.0698 rad) and for 20° (0.349 rad).

Explanation

Error ≈ θ²/2: 4°: 0.0698²/2 = 2.4 × 10⁻³. 20°: 0.349²/2 = 0.061. The larger angle is 25 times worse, as the square of 5 predicts.

Question 2

Two small rotations a = (0.05, 0, 0) and b = (0, 0.02, 0) are applied in either order. What is the difference between the two results to leading order?

Explanation

The two orders differ by the commutator: exp(a)exp(b) = exp(a + b + ½a×b) and exp(b)exp(a) = exp(a + b − ½a×b), so the difference is a × b = (0, 0, 0.05·0.02) = (0, 0, 0.001) rad: 0.057°.

Question 3

An attitude filter integrates a 2 rad/s turn with first-order updates (no renormalisation) at 50 Hz for 60 s. Estimate the scale error.

Explanation

θ = 2/50 = 0.04 rad per step; stretch per step ≈ 1 + θ²/2 = 1.0008; 3000 steps give 1.0008³⁰⁰⁰ ≈ e^{2.4} = 11: the matrix has grown by a factor of eleven. Renormalise every step or use the closed-form exponential.

What’s next

Now that small tangent vectors are well understood, we use them to define errors and updates on a manifold: perturb a pose on the left or on the right, and use the result to define what an error and an update mean.

Next lesson

M10-T7 — Perturbations on Manifolds

Perturb a pose by a small tangent vector, on the left or on the right, and use it to define errors.

Nothing below is required to finish this lesson.