Let us assume I have an object O with axis $x_{O}$, $y_{O}$, $z_{O}$, with different orientation from the global frame S with $x_{S}$, $y_{S}$, $z_{S}$ (I don't care about the position). Now I know the 3 instantaneous angular velocities of the object O with respect to the same O frame, that is $\omega_O^O = [\omega_{Ox}^O \omega_{Oy}^O \omega_{Oz}^O]$. How can I obtain this angular velocity with respect to the global frame (that is $\omega_O^S$)?

Thank you!


1 Answer 1


If your object $O$ has a different orientation from your global frame $S$, and you know what that difference in orientation is, you can create a 4x4 transform matrix between the two:

$$ T = \left[ \begin{array}{cc} R & s \\ 0 & 1 \end{array} \right] $$

where $R$ is the 3x3 rotation matrix, $s$ is the 3x1 translation vector, $0$ is a 1x3 row of zeros, and $1$ is just 1. You can transform your (points, angular velocities, etc.) from one frame to another with:

$$ \left[ \begin{array}{c} x' \\ y' \\ z' \\ 1 \end{array} \right] = \left[ \begin{array}{cc} R & s \\ 0 & 1 \end{array} \right] \left[ \begin{array}{c} x \\ y \\ z \\ 1 \end{array} \right] $$

If you don't care about translation you can just set $s = \left[ \begin{array} 00 \\ 0 \\ 0 \\ \end{array} \right]$

  • $\begingroup$ This is correct but not clear. It may be that OP does not have $R$ handy. It might be helpful to add how to construct $R$. A simple method is using the dot-product-of-axes. $\endgroup$ Oct 15, 2015 at 17:29
  • 1
    $\begingroup$ @JoshVanderHook - OP had asked this question and a related one back-to-back, and I believe the questions boil down to, "How do I convert gyro data to a global attitude?" I advised OP in a comment on my answer there that some people may opt to use quaternions instead of $R$ because of the difficulty in picking the correct way to calculate $R$ - Euler angles vs. Tait-Bryan angles, intrinsic vs. extrinsic rotation, and which of the 12 ways to multiply the three rotations together. $\endgroup$
    – Chuck
    Oct 15, 2015 at 18:37
  • $\begingroup$ Those methods (and we're digressing here), are useful for constructing rotation matrices from angles and avoiding singularities, given two frames, no such method is needed as R is simply the columns of one frame projected onto the columns of the other frame (basis dot product). For all practical purposes, this never happens however. But in this case, it seems both coordinate frames are known. (x,y,z), and what's being translated is, say, the axis of rotation. $\endgroup$ Oct 15, 2015 at 22:35

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.