Say we have a rigid body with a body-fixed coordinate system XYZ and an inertial coordinate system (North - East - Down) XoYoZo. If we use the x-y-z convention and rotate the body fixed frame first around the Zo axis, then the Yo and then Xo we end up with multiplying the three rotations to get a transformation matrix R = CzCyCx (where C is the general rotation matrix around a certain axis). R is the transformation matrix to describe how is the body oriented with regard to the inertial frame. This matrix can also be used for the linear velocity vector transformation.

What I cannot understand is why this matrix cannot be used for describing how the angular velocities result on the body frame with respect to the inertial frame? Instead, the matrix is:

$$\begin{pmatrix} 1 & \sin\phi\tan\theta & \cos\phi\tan\theta \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi/\cos\theta & \cos\phi/\cos\theta \end{pmatrix} $$

,where $\phi$ and $\theta $ describe the orientation of the body fixed frame with respect to the earth fixed frame around the X and Y axes. I have hard time understanding why the angular velocity around the Z axis is not part of the transformation matrix? Also in general, as I stated, why a rotation around the three axes (like the matrix for linear velocity) wouldn't work for the angular velocity vector?

I am sorry for the so what badly formulated question but I am not sure how to express my perplexity otherwise.


1 Answer 1


There seems to be confusion between a transformation of coordinates (matrix $\mathbf{R}$) and the Jacobian (matrix $\mathbf{J}$).

  • The rotation matrix transforms the components of vectors between the body frame and the inertial frame. This happens for all vectors.

    $$ \begin{aligned} \boldsymbol{v}_0 & = \mathbf{R} \boldsymbol{v} \\ \boldsymbol{\omega}_0 & = \mathbf{R} \boldsymbol{\omega} \\ \boldsymbol{F}_0 & = \mathbf{R} \boldsymbol{F} \\ \boldsymbol{\tau}_0 & = \mathbf{R} \boldsymbol{\tau} \end{aligned} $$

  • The Jacobian relates the three joint speeds $(\dot{\phi},\dot{\psi},\dot{\theta})$ to body rotational velocity $\boldsymbol{\omega}_0$. For a sequence of rotations the body to inertial rotation matrix is: $\mathbf{R} = \mathbf{R}_x \mathbf{R}_y \mathbf{R}_z $. Now the body rotational velocity vector is defined as follows

    $$ \boldsymbol{\omega}_0 = \boldsymbol{\hat{\imath}} \dot{\phi} + \mathbf{R}_x \left( \boldsymbol{\hat{\jmath}} \dot{\psi} + \mathbf{R}_y \boldsymbol{\hat{k}} \dot{\theta} \right) $$

    Do you see the pattern above? See this post as well as this post for more details.

    the above is grouped together into the Jacobian as

    $$ \boldsymbol{\omega}_0 = \mathbf{J} \pmatrix{\dot{\phi} \\ \dot{\psi} \\ \dot{\theta} } $$

    You see, the list of joint speeds is not a vector because each joint speed is riding on a different reference frame. The columns of the Jacobian contain the orientation of each rotation axis in the inertial system

    $$ \mathbf{J} = \Big[ \begin{array}{c|c|c} \boldsymbol{\hat{\imath}} & \mathbf{R}_x \boldsymbol{\hat{\jmath}} & \mathbf{R}_x \mathbf{R}_y \boldsymbol{\hat{k}} \end{array} \Big] $$

  • The matrix you describe in your post is the inverse Jacobian which relates the joint motions to the body rotational velocity

    $$\pmatrix{\dot{\phi} \\ \dot{\psi} \\ \dot{\theta} } = \mathbf{J}^{-1} \boldsymbol{\omega}_0$$

    where the inverse Jacobian evaluates to

    $$ \mathbf{J}^{-1} = \begin{pmatrix} 1 & \sin\phi\tan\psi & -\cos\phi\tan\psi \\ 0 & \cos\phi & \sin\phi \\ 0 & -\sin\phi/\cos\psi & \cos\phi/\cos\psi \end{pmatrix} $$

  • 1
    $\begingroup$ Thank you very much! That really helped :) I am only wondering if there is a typo in your body rotational velocity vector definition $\omega_o$, in particular if instead of Rz there should be Ry ? $\endgroup$ Commented Sep 17, 2018 at 15:40
  • $\begingroup$ Good catch. I will fix it. $\endgroup$ Commented Sep 17, 2018 at 16:09
  • $\begingroup$ One question regarding that: As far as I understand, this is used to get angular coordinates (orientation) using the angular velocities inside $\omega_o$, is that right? Since we cannot integrate $\omega_o$, we need to transform it to the Euler rate vector $(\dot{\phi},\dot{\psi},\dot{\theta})$ (you called it joint motions) and integrate that instead, or am I making a mistake? $\endgroup$ Commented Sep 17, 2018 at 16:21
  • $\begingroup$ Yes, although the integration is rather complex because $$ \pmatrix{\ddot{\phi} \\ \ddot{\psi} \\ \ddot{\theta} } = \mathbf{J}^{-1} \boldsymbol{\alpha}_0 +(\frac{{\rm d}}{{\rm d}t} \mathbf{J}^{-1}) \boldsymbol{\omega}_0 $$ $\endgroup$ Commented Sep 17, 2018 at 16:48
  • $\begingroup$ No, but that what you posted is a differentiation (to get angular acceleration), but what I meant is to integrate and get the position. For that as far as I can tell, we don't need the accelerations, right ? $\endgroup$ Commented Sep 17, 2018 at 17:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.