Hyoungseo Son
Lie Groups & Manifolds
Contents · Lie Groups & Manifolds

Part 0 · SO(3) & SE(3)

  • SO(3), SE(3), and the Exponential Map

Part 1 · Lie Algebra & Adjoint

Part 2 · Manifold Optimization

Part 0 · SO(3) & SE(3)

SO(3), SE(3), and the Exponential Map

The rotations article stored orientation as a quaternion and advanced it by integrating angular velocity. The spatial-algebra article packed angular and linear velocity into one twist. The exponential map is the bridge between them: it turns a constant twist, an element of a Lie algebra, into the finite rigid motion it generates, an element of the Lie group. That is exactly the operation a physics engine needs to step a pose forward without drifting off the manifold of valid orientations.

Groups, algebras, and the flow of a twist

Two matrix Lie groups run the show. SO(3)SO(3) is the group of rotations (RR=IR^{\top}R = I, detR=+1\det R = +1). SE(3)SE(3) is the group of rigid motions,

g=[Rp01],RSO(3),  pR3.g = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}, \qquad R \in SO(3),\; p \in \mathbb{R}^{3}.

Each group has a Lie algebra, the flat tangent space at the identity. For SO(3)SO(3) it is the skew-symmetric matrices so(3)\mathfrak{so}(3); for SE(3)SE(3) it is the twists se(3)\mathfrak{se}(3), written with the hat map

ξ^=[[ω]×v00],[ω]×=[0ωzωyωz0ωxωyωx0].\hat{\xi} = \begin{bmatrix} [\omega]_\times & v \\ 0 & 0 \end{bmatrix}, \qquad [\omega]_\times = \begin{bmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{bmatrix}.

The exponential is the matrix power series exp(A)=k0Ak/k!\exp(A) = \sum_{k\ge 0} A^{k}/k!. Its meaning here is dynamical: g(t)=exp(tξ^)g(t) = \exp(t\,\hat{\xi}) is the unique solution of g˙=ξ^g\dot g = \hat{\xi}\,g with g(0)=Ig(0) = I. So exp\exp integrates a constant body twist over unit time: hold the velocity ξ^\hat{\xi} fixed, flow for t[0,1]t \in [0,1], and land at the finite motion exp(ξ^)\exp(\hat{\xi}).

SO(3): Rodrigues' formula

Write the rotation vector as ϕ=θn^\phi = \theta\,\hat n with θ=ϕ\theta = \lVert\phi\rVert. Because [ϕ]×3=θ2[ϕ]×[\phi]_\times^{3} = -\theta^{2}[\phi]_\times, the infinite series collapses to three terms,

exp ⁣([ϕ]×)=I+sinθθ[ϕ]×+1cosθθ2[ϕ]×2.\exp\!\big([\phi]_\times\big) = I + \frac{\sin\theta}{\theta}\,[\phi]_\times + \frac{1-\cos\theta}{\theta^{2}}\,[\phi]_\times^{2}.

This is Rodrigues' formula, the same exp\exp that closed the rotations article. An engine integrates ω\omega in the flat algebra, then maps back with this formula (or the equivalent quaternion update), so orientation never leaves SO(3)SO(3).1

SE(3): the screw and the left Jacobian

The full rigid-motion exponential reuses the SO(3) block and adds a translation routed through the left Jacobian VV,

exp ⁣[[ϕ]×v00]=[exp([ϕ]×)Vv01],V=I+1cosθθ2[ϕ]×+θsinθθ3[ϕ]×2.\exp\!\begin{bmatrix} [\phi]_\times & v \\ 0 & 0 \end{bmatrix} = \begin{bmatrix} \exp([\phi]_\times) & V\,v \\ 0 & 1 \end{bmatrix}, \qquad V = I + \frac{1-\cos\theta}{\theta^{2}}[\phi]_\times + \frac{\theta-\sin\theta}{\theta^{3}}[\phi]_\times^{2}.

Chasles' theorem says the result is always a screw: a rotation about some axis together with a translation along it. This is the finite-motion counterpart of the instantaneous twist from the spatial-algebra article.2

Worked example: an SE(2) twist over unit time

Drop to the plane, where the algebra is ξ=(vx,vy,ω)\xi = (v_x, v_y, \omega) and

ξ^=[0ωvxω0vy000],exp(ξ^)=[R(ω)Vv01],V=1ω[sinω(1cosω)1cosωsinω].\hat{\xi} = \begin{bmatrix} 0 & -\omega & v_x \\ \omega & 0 & v_y \\ 0 & 0 & 0 \end{bmatrix}, \qquad \exp(\hat{\xi}) = \begin{bmatrix} R(\omega) & V v \\ 0 & 1 \end{bmatrix}, \quad V = \frac{1}{\omega}\begin{bmatrix} \sin\omega & -(1-\cos\omega) \\ 1-\cos\omega & \sin\omega \end{bmatrix}.

Take ξ=(1,0,π2)\xi = (1,\,0,\,\tfrac{\pi}{2}) and flow for unit time. The rotation is θ=ω=π2=90\theta = \omega = \tfrac{\pi}{2} = 90^{\circ}, and the translation is

p=V[10]=1π/2[sinπ21cosπ2]=2π[11][0.6370.637].p = V\begin{bmatrix} 1 \\ 0 \end{bmatrix} = \frac{1}{\pi/2}\begin{bmatrix} \sin\tfrac{\pi}{2} \\ 1-\cos\tfrac{\pi}{2} \end{bmatrix} = \frac{2}{\pi}\begin{bmatrix} 1 \\ 1 \end{bmatrix} \approx \begin{bmatrix} 0.637 \\ 0.637 \end{bmatrix}.

The origin does not travel in a straight line to pp. It rides a circular arc about the instantaneous center c=(vy/ω,  vx/ω)=(0,2/π)c = (-v_y/\omega,\; v_x/\omega) = (0,\,2/\pi) of radius v/ω=2/π0.637\lVert v\rVert/\lvert\omega\rvert = 2/\pi \approx 0.637, sweeping a quarter turn. Send ω0\omega \to 0 and VIV \to I, so exp(ξ^)\exp(\hat{\xi}) becomes a pure translation by (vx,vy)(v_x, v_y): the arc straightens into a line.

exp of a constant SE(2) twist is a screwinteractive
θ = ∫ ω dt
90.0°
endpoint p
(0.637, 0.637)
arc radius
0.637

exp(ξ) is a screw: the frame rotates by θ about the center, sweeping a circular arc from the identity to the bold endpoint frame.

The curve is g(t) = exp(t·ξ) for t in [0,1], obtained by integrating the constant body twist ξ = (vₓ, v_y, ω). Nonzero ω traces a circular arc about the blue center (a screw); ω = 0 traces a straight line. The moving frame is the pose along the way; the bold frame is exp(ξ). Defaults reproduce the worked example.

Why the engine cares

Every substep, the solver has a body twist and needs the pose it produces. Using exp\exp (in practice a small-angle rotation applied to the quaternion, plus the translation) keeps RR orthogonal and q=1\lVert q\rVert = 1 to machine precision, whereas naively adding velocity times dtdt to the stored numbers drifts off the manifold and has to be renormalized. The exponential map is the reason manifold-aware integration is both cheap and exact for a constant twist, and it is the same object the state estimators and controllers built on these groups differentiate through.1

Footnotes

  1. Sola, Deray, Atchuthan, A micro Lie theory for state estimation in robotics (2018). 2

  2. Featherstone, Rigid Body Dynamics Algorithms (2008).