I am reading the paper

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

There is one paragraph about IMU model. enter image description here

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 Answer 1


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'.

  • $\begingroup$ 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? $\endgroup$ Aug 23, 2018 at 1:23
  • 1
    $\begingroup$ 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}}$. $\endgroup$ Aug 23, 2018 at 1:43
  • $\begingroup$ The output of the gyroscope is one rotation vector. The direction of the vector is expressed in IMU coordinate system. Am I right? $\endgroup$ Aug 23, 2018 at 5:38
  • 1
    $\begingroup$ 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 $\endgroup$ Aug 23, 2018 at 8:27
  • 1
    $\begingroup$ 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. $\endgroup$ Aug 27, 2018 at 3:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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