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.
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.
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.
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
- 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 below0.58 θ². - Unitarity violation.
(I + [ω]ₓ)ᵀ(I + [ω]ₓ) = I − [ω]ₓ² (since [ω]ₓ is skew), which equalsI + θ²(I − nnᵀ): the first-order matrix stretches the plane perpendicular to the axis by√(1 + θ²) ≈ 1 + θ²/2. So orthogonality is lost at second order. - Logarithm. From
R − Rᵀ = 2 sin θ [n]ₓ:½vee(R − Rᵀ) = sin θ n = ω sin θ/θ ≈ ω(1 − θ²/6), a relative error of θ²/6. - Composition. Expand
exp(a)exp(b) = (I + A + A²/2)(I + B + B²/2) = I + (A + B) + (A²/2 + AB + B²/2) + ⋯and compare withexp(a + b + c) = I + (A + B + C) + (A + B)²/2 + ⋯. Matching second-order terms:C + (A + B)²/2 = A²/2 + AB + B²/2, soC = (AB − BA)/2 = ½[A, B]and hencec = ½ a × b(the bracket is the cross product). - 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. - 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‖. - 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.
- 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 is1.5 × 10⁻⁴at 1° (θ²/2 = 1.52 × 10⁻⁴),3.8 × 10⁻³at 5°,0.0152at 10°,0.136at 30° and0.532at 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)versusa + b = (0.1, 0.1, 0)and BCHa + 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.03rad and first-order matrix error4.5 × 10⁻⁴per step; at 10 Hz the step is 0.3 rad with error0.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
- exp([ω]ₓ) ≈ I + [ω]ₓ with error ≈ θ²/2; log(R) ≈ ½vee(R − Rᵀ) with relative error θ²/6.
- The first-order matrix is not orthogonal: it stretches perpendicular directions by √(1 + θ²).
- exp(a)exp(b) ≈ exp(a + b + ½a × b): small rotations add to first order with a second-order commutator correction.
- Quantify the step θ = ‖ω‖Δt; below 0.05 rad first order is safe, above 0.2 rad it is not.
- 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.
- Solà, Deray and Atchuthan, A micro Lie theory for state estimation in robotics: A micro Lie theory for state estimation in robotics: small-angle approximations and the BCH formula
- Solà, Quaternion kinematics for the error-state Kalman filter: Quaternion kinematics for the error-state Kalman filter: the small-angle error state
- Barfoot, State Estimation for Robotics (author-hosted first edition, free to read): chapter 7, composition of small rotations and BCH
- Modern Robotics (Lynch and Park), free preprint: chapter 3.2, exponential coordinates and small rotations
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.
Related content
Nothing below is required to finish this lesson.
- BeforeM10-T5: The Logarithmic Map
Recover the rotation vector or twist from a rotation or transform, and handle the edge cases.
Get notified when the next lesson and new labs are released.
One email per new lesson or lab.