I need to analyse the performance of a system that uses inertial sensor readings as input. My knowledge of IMUs is very basic, having only read a few introductory texts.

My understanding is that IMU accuracy degrades with continuous use due to drift, which results in accumulated error.


What other operational factors (i.e. not the specific device/components, but IMUs in general) effect the accuracy of IMUs?

I have noticed in my application that the system performance degrades when the object moves, especially when the movement is fast, and then improves once the movement slows, and reaches a halt. What aspect(s) of IMUs causes this?


To be more specific, the sensors give orientation as quaternions (rotational offset from the sensor coordinate system to a global coordinate system). The error fluctuates over time (duration of about 15 seconds), however there is not an incline in error over time. Based on this, I believe IMU drift is not an issue here.

What I am interested in understanding is why the estimate error of the object's orientation fluctuates based on the amount and speed of the object's motion.

If it helps, I am using Xsen MTx IMUs.


I have noticed some accellerometers and gyros to have a bit of a memory effect.

For example, you can place a accellerometer horizontal and null out the reading. I will stay close to zero but of course still drift a little. Now move it sideways and back again to the original position and the reading won't be zero anymore. The stronger and more sudden the movement, the more it seems to change the zero offset.

It is this unpredictable drift in the zero value that messes up inertial navigation over a longer time. Sometimes long is only a few seconds with MEMs gyros and accellerometers.

I did a sports head tracking device once, and even if you had the person hold still before starting a motion, the position would unusable after a couple of seconds. Fortunately that was long enough, and we designed the algorithm to use things like accelleration and angular rate directly instead of relying much on their integrals. This was with rather cheap MEMs units.


Correct axis alignment is one: linear sensors have linear transfer functions between the actual pitch/yaw/roll/3-D acceleration axes and the outputs of each corresponding sensor (or subset thereof, if you're not using a full 6-axis IMU).

Ideally the transfer function is the identity matrix: motion in each intended axis affects only the corresponding axis. In real systems, there is cross-coupling that depends on sensor alignment. If you're off by 1 degree, for example, you'll get a small output signal on one axis for motion in another axis.

Another factor has to do with nonlinearity, which is very dependent on the particular mechanism used for sensing. Pendulum or fluid tilt sensors at large angle displacements have linearity issues.


Even the best IMU will have some error. Normally those errors add up over time to the point that their output becomes useless. Of course, the better units will have less errors, so it takes longer for the errors to build up-- but they will still build up.

Normally, IMU's will have some method to get rid of these errors. They do this by using multiple sensors that complement each other. For example, a GPS has great long-term (long distance or long time period) accuracy but terrible short term accuracy. An accelerometer is the opposite and has terrible long-term accuracy but fairly good short term accuracy. By using both types of sensors you can get the best of both worlds.

Of course a GPS somewhat violates the "Internal" part of IMU, but you get the idea. It is impossible to get an IMU that will work forever without external input (GPS, star tracker, etc.) since even with the best of systems there is always a source of error that accumulates over time.

But it is impossible to really give you a more detailed answer than "errors build up over time" without looking at the exact set of sensors that's being used-- and how that sensor data is being integrated into the final output.


On agricultural precision farming machinery (GPS guided tractors), IMU's are often used to correct for the antenna offset of the tractor. When a tractor tilts, the antenna moves outside of your predetermined driving path. The RTK-DGPS devices can measure up to about 1cm XY (2cm Z) accurate, so you will need to correct for it. Fortunately it is possible to have redundant systems: roll/pitch can be done with inclino and gyro's, where a yaw can be done with gyro's and the driven route. To get a high data rate of accurate angles, you will need to combine different devices.

Each sensor has a limited bandwidth. An inclino is an absolute measurement device with low bandwith. It may take a couple of seconds for a stable signal, then again: it is absolute.

A gyro can measure angular rate and can be integrated to get an offset, thus you get a different angle. Filtering it with the inclino value, you can get a live angle. However, gyro's have a limit to how much degrees/second they can measure precisely too. If it does go wrong, it should not drift away because its corrected with an inclino.


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.