A while ago I had written about IMU pre-integration (blog-link). Particularly, I had played around with the inertial measurements data (IMU data) and tried to dig a bit deeper on what exactly does the IMU measurements mean. So the conclusion was that the IMU measure the body frame angular velocity and body-frame angular velocity (and not the world frame angular velocities and linear accelerations). This subtle difference is sometimes hard to imagine.
Imagine a car moving and you are in a car and it is at a constant speed. You look at the speedometer and it says 60 kmph. This figure is the car’s linear velocity with respect to the world aka the spacial frame velocity of the car. The RPM of a car engine is a body frame measurement. The body frame measurements is not super intuitive to imagine in my opinion.
In this post, I will try to clarify the difference between the angular velocity when represented in body frame vs angular velocity when represented in spatial-frame (or the world-frame). Particularly, the situation is that we are trying to simulate an imu and want to synthetically generate imu measurements (without noise).
Conclusion
Given that the position of a point on the rotating object, b varies as a function of rotational matrix
. The rotation matrix can be composed with, for example, Euler angles. The angles are represented in the spatial frame (world-frame, w) and as a function of time. Thus
is the instantaneous rotation of the point q with respect to the world ie.
. We shall use just R(t) for concise notations.
is the hat operator. and
is the v-operator, the inverse operator of the hat operator.
The spatial frame angular velocity is: 
The body frame angular velocity is: 
How can this be proved?

As mentioned previously, the situation is that we can vary the angles independently and generate IMU measurements. Recall that we are interested in angular velocity in body frame (). As a first step, lets try to understand how to generate angular velocities in spatial-frame (world-frame, ie.
). Let
be the initial position of point q, in world-frame.
Time derivative of position in spatial co-ordinates
…(1)
…taking time derivatives on both sides,
using equation(1) and the fact that rotational matrix’s inverse is its transpose, …(2)
The Matrix,
is skew-symmetric
Next we want to show that is a skew-symmetric matrix. We want to prove that because, in that case the eq(2) can be viewed as a cross product. Recall that for a matrix A to be skew-symmetric its transpose has to be the negative of it. For a skew-symmetric matrix A,
. Following is the proof for it,
time derivative on both side and using the chain rule,
using the property,
This proves that the matrix is skew-symmetric.
Angular Velocity in Spatial Frame
From basic definition, the Linear velocity is cross product between the angular velocity and position vector (all represented in world-frame). Also recall that cross product can be represented with a hat-operator.

Continuing with Eq(2), it is clear that world-frame angular velocity is the V-operator of . The V-operator is the inverse operator of the hat-operator.
Comparing with the definition of angular velocity, . Thus the first conclusion:
…(a)
Angular Velocity in Body Frame
The body frame angular velocity ( is the transformation of
with the inverse of
, ie:
…(3)
Let us refer to the body frame position of point q as .
.
In concise notations, …(4)
Taking the cross product of Eq(3) and Eq(4) we get,
Using the 1st conclusion ie. eq(a) and the basic definition of cross product with hat-operator,
so we conclude,
….(b)
This is exactly the 2nd conclusion. I hope the confused future me or a reader looking for an explanation on body frame angular velocity and world frame angular velocity might find this helpful.
References
- Robotics Lecture Notes
- Stackexchange Explanation
- Github Blog – Emma Benjaminson