I'm studying the Technical Report of VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator available at: https://github.com/HKUST-Aerial-Robotics/VINS-Mono/blob/master/support_files/paper/tro_technical_report.pdf

In section V, where Loop Closure is discussed is writen: "The IMU measurements render roll and pitch angle fully observable, so the accumulated drift only occurs in four degrees-of-freedom (x, y, z and yaw angle). To avoid importing spurious information, we directly optimize pose graph on these four degrees-of-freedom."

I'm having trouble to understand this, in my conception, imu noise should propagate in all degrees of freedom. This might have something to do with the gravity vector?

Thank You All


1 Answer 1


Correct, it's all about the gravity vector. I would argue that it is NOT necessarily possible to get the gravity vector out of the measurement, but that's because it's possible to put the IMU in a constant acceleration state that would skew the gravity vector (i.e. a rotation).

Check out Sebastian Madgwick's paper on IMU filtering.

Basically, if it's level, z-axis reads gravity and x- and y-axes read zero. As you tilt the IMU, the gravity vector projects onto the associated axis. Gravity is a constant (hand waving) so you know the input vector (0;0;g), the output vector, and you solve for the rotation matrix that gives you the roll and pitch values.

The trouble is that gravity isn't the same everywhere, may slowly shift over time (tidal motion), and it's not possible to discern gravitational acceleration from external acceleration. The solution seems to be to normalize the accelerometer outputs and change the input vector from (0;0;g) to (0;0;1).

This means that you wind up skewing the gravitational vector's orientation, but the effects seem to be minimal with regards to orientation. I haven't tried on a rotating platform though.

  • $\begingroup$ Np @RicardoAchilles. If this is the answer you were looking for, then please accept it so the question is flagged as answered (check mark between up and down buttons). $\endgroup$
    – Chuck
    Jun 12, 2017 at 14:39

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.