Skip to content

Rotation Matrix Time Derivatives

Problem Setup

For a point x0R4x_0 \in\mathbb R^4, the rotation is a transformation defined as

x(Δt)=R(Δt)x0x(\Delta t) = R(\Delta t) x_0

where R(Δt)SO(3)R(\Delta t) \in SO(3).

Then, through the transformation through time tt will create a trajectory. We come up with the velocity of xx as

x˙(Δt)=R˙(Δt)x0\dot x (\Delta t) = \dot R(\Delta t) x_0

So that the velocity is the time derivative of the rotation matrix.

Angular Velocity

Without loss of generality, assume xx is rotated along the rotation with the axis of rotation aR3\vec a\in\mathbb R^3. Therefore, xx is travel in a circle.
Let θ˙\dot\theta be the change in angle.
Let v:RR3v: \mathbb R\rightarrow \mathbb R^3 be the velocity of xx, decompose v(t)=a(t)d(t)v(t) = a(t)d(t) where aa is the magnitude and dd is the direction.

Since we are rotating around a\vec a, i.e. the plane that contains the circle is orthogonal to a\vec a. Hence dad\perp \vec a.
In addition, a rotation is orthogonal matrix so that vxv\perp x, since a,v,x\vec a,v,x are mutually orthogonal, we can uniquely determine dd from

d=a×xxd = \frac{\vec a \times x}{\|x\|}

Then, consider the magnitude aa, let y=x+Δtvy = x + \Delta tv. The angle formed by yy and xx is θ˙Δt\dot\theta \Delta t. So that we can have

aΔt=xtan(θ˙)=xsin(θ˙Δt)cos(θ˙Δt)a\Delta t = \|x\|\tan(\dot\theta) = \|x\|\frac{\sin(\dot\theta\Delta t)}{\cos(\dot\theta\Delta t)}

Therefore, we can have

limΔt0xsin(θ˙Δt)cos(θ˙Δt)=xθ˙Δt1=xθ˙Δt\lim_{\Delta t\rightarrow 0} \|x\|\frac{\sin(\dot\theta\Delta t)}{\cos(\dot\theta\Delta t)} = \|x\|\frac{\dot\theta\Delta t}{1} = \|x\|\dot\theta\Delta t

so that

a=xθ˙a = \|x\|\dot\theta

and then

v=ad=θ˙xa×xx=(θ˙a)×x=ω×xv = ad=\dot\theta\|x\|\frac{\vec a\times x}{\|x\|} = (\dot\theta \vec a) \times x = \omega \times x

Therefore, we obtain the angular velocity ω\omega, which includes the velocity of angle and the rotation direction.

Rotation Matrix

Since cross product can be written into cross matrix form as matrix multiplication, $v=\omega\times x $ can then be understood as

dxdt=[ω]×x\frac{dx}{dt} = [\omega]_\times x

which is a linear ODE, and has analytical solution

x(t)=exp([ω]×t)xx(t) = \exp([\omega]_\times t) x

where exp(M)\exp(M) is the matrix exponential.

Matrix Exponential

For an invertible matrix ARn×nA\in\mathbb R^{n\times n}. the matrix exponential exp(A)\exp(A) is given as

exp(A)=V[eλ100eλn]V1\exp(A) = V\begin{bmatrix}e^{\lambda_1}&\cdots&0\\\vdots&\ddots&\vdots\\0&\cdots&e^{\lambda_n}\end{bmatrix}V^{-1}

Where A=VΛA1A=V\Lambda A^{-1} is the Eigen decomposition. However, as we did the decomposition, it is not very efficient.

For our problem, since [ω]×[\omega]_{\times} is a cross product matrix, hence 3×33\times 3 skew-symmetric, we can use Rodrigues' Rotation Formula. First, we can break ωt\omega t into the axis of rotation and angle of rotation, as a\vec a and θ\theta

ωt=ωωωt=aθ\omega t = \frac{\omega}{\|\omega\|}{\|\omega\|t} = \vec a \theta

then Rodrigues' Rotation Formula gives

R(t)=I+sin(θ)[a]×+(1cos(θ))[a]×2R(t) = I + \sin(\theta)[\vec a]_\times + (1-\cos(\theta)) {[\vec a]_\times}^2

Relationship between R and w

Note that we have x˙(t)=R˙(t)x0\dot x(t) = \dot R(t)x_0 and the equation above gives x˙(t)=[ω]×x\dot x(t) = [\omega]_\times x, therefore, we have found the relation that

R˙=[ω]×\dot R = [\omega]_\times

General Equation

Consider the explicit equation with a fixed t0t_0

x(t0+Δt)=ΔR(Δt)R(t0)x0x(t_0+\Delta t) = \Delta R(\Delta t) R(t_0)x_0

and its time derivative is

v=dxdΔt=ΔR˙(Δt)R(t0)x0v = \frac{dx}{d\Delta t} = \Delta \dot R(\Delta t) R(t_0)x_0

Note that from the derivations above, since R(t0)x0R(t_0)x_0 is a fixed point, vv is just the time derivative of rotation at time t0t_0 so that

v=[ω]×Rx0v = [\omega]_\times Rx_0

Another form of this equation is

v=ω×Rx0=(Rx0)×ω=R[x0]×TRTω\begin{align*} v &= \omega \times Rx_0\\ &= -(Rx_0)\times \omega\\ &= R{[x_0]_\times}^TR^T \omega \end{align*}

then this form gives that vv is linear in ω\omega.

Source code