angular velocity output of IMU

I am reading the paper

On-Manifold Preintegration for Real-Time Visual-Inertial Odometry.

There is one paragraph about IMU model.

I have two questions.

The first one: An IMU commonly includes a 3-axis accelerometer and a 3-axis gyroscope and allows measuring the rotation rate and the acceleration of the sensor with respect to an inertial frame what does an inertial frame mean?

The second one: The vector(the second quantity from the first equation) is the instantaneous angular velocity of B relative to W expressed in coordinate frame B. The sentence is difficult for me, especially the highlighted part.

1) An inertial frame is one in which a free particle travels in a straight line at constant speed, or is at rest. Practically speaking, you usually check if a frame is inertial or not by characterizing its motion w.r.t a reference inertial frame: all inertial frames are in a state of constant, rectilinear motion w.r.t one another. In the context of visual-inertial odometry, your typical inertial frame is a local 'world' frame (W) attached to the surface of the earth where you are doing your experiment. (Note that it is only inertial because you neglect effects due to earth's rotation.)

2) Your text is missing the attached 'figure 2' but we can guess that frame 'B' is attached to your IMU. In 3D, the rotation motion of a body (B) w.r.t to a fixed frame (W) can be characterized at any instant t by an instantaneous axis of rotation, which is a vector. This is a consequence of Euler's rotation theorem. To compute this vector, see this link. Finally, this vector is obviously expressed differently in (B) and (W) since the two frames are rotated w.r.t one another: the vector will have different coordinates in both. Hence the addition of 'expressed in coordinate frame B'.

• Thanks. I don't understand how angular velocity is expressed in coordinate frame B. In my view, the coordinate system of IMU body frame(Frame B) varies over time. If so, how can angular velocity is expressed in coordinate frame B? – Jogging Song Aug 23 '18 at 1:23
• That's simple. Let's say you know the $i_{th}$ IMU body frame $^w \textbf{T}_{B_i}$. Then, your raw angular velocity $^{B_{i}} \textbf{v}$ in Body frame is represented in the $B_i$ frame as a vector in that frame, which means you can transfrom it into the world coordinate like ${^w \textbf{v}_i}={^w \textbf{T}_{B_i}} {^{B_{i}} \textbf{v}}$. – C.O Park Aug 23 '18 at 1:43
• The output of the gyroscope is one rotation vector. The direction of the vector is expressed in IMU coordinate system. Am I right? – Jogging Song Aug 23 '18 at 5:38
• That's right. So, if you have 1kHz IMU, then there would be 1000 IMU body frames per second. For each IMU body frame, IMU will give you 3 by 1 vector which is the rotation velocity. This post will give some insight on how to implement that: copark86.github.io/post/2018-07-05-IMUNote – C.O Park Aug 23 '18 at 8:27
• It depends on you. We usually define z axis of G as a gravity direction. Randon x,y axis is fine as long as they are orthogonal to each other. You can set it to be same as the world coordinate. The world coordinate is useful when you have a ground truth estimation device. – C.O Park Aug 27 '18 at 3:10