Skip to content

Relation between rotation matrix and angular velocity

08/06/2011

EDIT 4: Here is a tutorial article, where the description of the problem and the derivation of the results are presented in detail.

EDIT 3: Mar 20, 2012: please look at this, this is the final and the best version

****************************************************************

Problem: There are two frames A and B. The rotation transformation from B to A is R_B^A. Compute the time derivative of the rotation matrix \dot{R}_{B}^A.

Assumption: The origins of A and B collocate

Clarification: We denote the angular velocity of B relative to A as \omega. (i.e., assume A is static and B is rotating).  The vector \omega can further be expressed in frame A or frame B as \omega_A and \omega_B, respectively.

Basic Result: \dot{R}_B^A=[\omega_A]_{\times}R_B^A

Proof: Let P be a point fixed in frame B. Then
P_A=R_B^A P_B             (eq.1)
Recall \dot{P_B}=0. Taking derivative on both sides gives
\dot{P}_A=\dot{R}_B^A P_B
On the other hand, we have
\dot{P}_A=\omega_A \times P_A=[\omega_A]_{\times}P_A                 (eq.2)
Combining the above two equations gives
\dot{R}_B^A P_B=[\omega_A]_{\times} P_A =[\omega_A]_{\times} R_{B}^A P_B
Since P is chosen arbitrarily, the above equation holds for all P_B. We have
\dot{R}_B^A=[\omega_A]_{\times}R_B^A

List of all the results: Note [R\omega]_{\times}=R[\omega]_{\times}R^T and \omega_A=R_B^A \omega_B,. It can be easily implied from the basic result that

\dot{R}_B^A=[\omega_A]_{\times}R_B^A
\dot{R}_B^A=R_B^A[\omega_B]_{\times}
\dot{R}_A^B=-R_A^B[\omega_A]_{\times}
\dot{R}_A^B=-[\omega_B]_{\times}R_A^B

PS: The identity [R\omega]_{\times}=R[\omega]_{\times}R^T can be proved based on the fact (Ra)\times(Rb)=R(a\times b) which can be found in wiki. Consider an arbitrary vector x, then (R\omega)\times (Rx)=R(\omega\times x) and hence [R\omega]_\times Rx=R[\omega]_\times x. Since x is arbitrary, we have [R\omega]_\times R=R[\omega]_\times and hence [R\omega]_\times =R[\omega]_\times R^T.

2D case: In case one is interested in the 2D case, here is a document: 2D roation angular velocity

Remark:
(a) if the assumption is not satisfied, we can move the frame A to the origin of B, then we get an intermediate frame A’. Then the R_B^A should be replaced by R_B^{A'}. Since R_B^A=R_B^{A'}, we still have the result.
(b) note: if the assumption is not satisfied, equation (1) and (2) don’t hold.
(c) don’t try to use limit (i.e. the definition of derivative) or Rodrigues’ formula to prove, they can’t explain it well and you would not understand which frame the angular velocity is in. In the above method, the frame where the angular velocity expressed can be observed from eq. (2).

************************************************************************************************

EDIT 2: Totally understand! about the angular rate and rotation transformation between the body frame and navigation f rame. Look at this angular rate and roation matrix in Navigation Nov 1, 2011

EDIT: you should look at this. It is better. angular rate and rotation matrix

Rotate a vector around the axis \omega, \|\omega\|=1 a angle \theta. Then the correspoding rotation matrix is

R=e^{\Omega\theta}

where \Omega is the skew-symmetric matrix associating \omega. Furthermore, the exponential can be computed using Rodrigues’ formula:

R=e^{\Omega\theta}=I+\Omega \sin \theta+\Omega^2(1-\cos \theta).

See Ma Yi Chapter 2, Page 25.

Today, I am more interested the differential or derivative of a rotation matrix.

1. Angular velocity

Angular velocity is a vector, whose direction denotes the rotation direction and magnitude denotes the rotation velocity (rad/s).

File:Angular velocity.svg

2. Rotate a particle

Given a angular velocity \omega (direction and velocity), r is an arbitrary vector. see the figure below. Then

\dot{r}(t)=\omega(t)\times r(t)=\Omega (t) r(t)

This is where cross product and skew-symmetric matrices come from. Note r need not be perpendicular to \omega. Instead all vectors in \mathbb{R}^3 obey the above equation. Because r(t)=R(t)r(t_0), the above equation can be written as

\dot{R}(t)r(t_0)=\omega(t)\times R(t)r(t_0)=\Omega (t) R(t)r(t_0)

Since r(t_0) can be arbitrary, we have

\dot{R}(t)=\Omega(t)R(t)

Note only when \omega(t) is constant, integrating the above equation gives

R(t)=e^{\Omega t}

with R(t_0=0)=I.

Summary:

  • Given a rotation axis and a rotation angle, we can get the corrspoding rotation matrix. Canonical exponential representation and Rodrigues’s formula.
  • Angular velocity is a vector. It can be interpreted as a direction and a rotating speed. Or it can also be interpreted as three rotating speed around three coordinate axes.
  • Given a time variant angular velocity, how to get the derivative of a rotation matrix?
  • When angular velocity is constant, we can get the exponential representation of a rotation matrix from its differential or derivative equation.
3 Comments leave one →
  1. Bigbell Mercy permalink
    17/02/2015 8:40 am

    Very simple but noble proof!!!
    one comment: In the eq.2 I think ‘Pa = (‘Pa)b + Wa x Pa = 0 + Wa x Pa = Wa x Pa
    where the notation (‘ )b means that the differentiation is performed as the B coordinates is not rotating.

  2. 08/07/2015 3:12 pm

    This post was very helpful, thank you. I do however have one question:

    Where does the [Rw]_X = R [w]_X R^T come from?

  3. John Pham permalink
    12/03/2017 9:46 am

    Can I ask you a question: Could you explain more clearly in this section?

    Since r(t_0) can be arbitrary, we have

    \dot{R}(t)=\Omega(t)R(t)

    Note only when \omega(t) is constant, integrating the above equation gives

    R(t)=e^{\Omega t}

    with R(t_0=0)=I.

Leave a comment