Comparison between MinIMU-9 and MTx from Xsens

Currently I just finished the characterization for MinIMU-9 (L3G4200D and LSM303DLM Carrier) from Pololu. I used a technique called Allan variance which can characterize different errors. I found my measured white noise for the gyro is [0.0466, 0.0958, 0.019] (deg/sqrt(s)), which is closed to the value 0.03 (deg/sqrt(s)) in the datasheet. And I also found the white noise for the accelerometer is [0.0341, 0.0351, 0.0369] (m/s2/sqrt(s)), which is not in the datasheet.

Then I did some basic tracking based on the stream obtained when the sensors are kept still (x,y is in the horizontal plane, and z is up). The tracking steps are as follows:

  1. initially, I set the board at the position P(0)=[0,0,0], and the rotation matrix between the body frame and the global frame is C(0) = I(3)
  2. each time a sample (the gyro and acc) is obtained, the rotation matrix is first updated to C(k+1). Then we project the newly obtained acceleration to the global frame with the rotation matrix C(k+1), subtract it with g (gravitational acceleration), and do twice integration to update P(k+1).

When I use 1 minute data from the sensor (50Hz, totally 3000 samples). The final position error is 14381m.
If I remove the gyro noise, i.e. always feed gyro values with [0,0,0], then the final position error is 47.8m.

I follow all steps in the attached report. However, I found my estimation result is much worse than the result in the report (the error is 150m and 3m).
In the report the author used the IMU called MTx from Xsens company ( I checked the specification of the sensor. I think the gyro is not better than our sensor L3G4200D, but the accelerometer seems better.

Could you please help me to check whether MTx is better than L3G4200D and LSM303DLM? Because I am not sure I have the correct understanding of the parameters in the specification.

gyro acc
mtx (white noise) 0.05 deg/s/√Hz 0.002 m/s²/√Hz
MinIMU-9 (white noise) 0.03 deg/s/√Hz [0.0341, 0.0351, 0.0369] m/s2/sqrt(s) (measured)

UCAM-CL-TR-696.pdf (919 KB)

Maybe I did not clarify my questions. My questions are:

  1. Does my measured characterization of these sensor errors make sense?
  2. Does the estimation errors for tracking a still sensor make sense? Is it too big?
  3. Is MTx sensor better than MinIMU-9 sensor?


It looks like the MTx costs $2150, so I would expect it to perform much better than the MinIMU-9. It probably went through a rigorous calibration procedure at the factory, including operating it under different temperatures so they could figure out calculate temperature coefficients for it.

For questions 1 and 2, after thinking about it for a little bit, I wouldn’t expect that including the gyro readings in the computation would make the error grow by so much (from 47.8m to 14381m). Do you know why that is happening?

For question 3, probably, because it is much more expensive and has a built-in processor.


Thank you for your reply. Actually, I want to know how we can judge a sensor is precise or not by looking at the datasheet. Based on the report I attached in the previous post, there are two important parameters: white noise density and bias instability.

White noise density represents the white noise amount of the outputs. It usually represents, for gyro, as x deg/sqrt(s) (or x deg/s/sqrt(Hz)), which represents the deviation of the orientation (the integration of the white noise) after 1 second. It is proportional to the square root of time. So after 2 seconds, the deviation of the orientation should be x * sqrt(2).

The bias instability means the deviation of the bias over time. It usually denotes as x deg/s/sqrt(s) for a gyro. So the bias of the signal (not the integration) is proportional to the square root of time. So it means at time t, if the bias is B, then at time t+1, the mean of the bias is B, but the deviation is x; at time t+2, the mean of the bias is still B, but the deviation is x * sqrt(2).

So for the MTx sensor, it shows that the white noise for the gyro and the accelerometer are 0.05 deg/s/√Hz and 0.002 m/s²/√Hz, respectively. Comparing to MinIMU-9, the white noise for the gyro and the accelerometer of MinIMU-9 are 0.03 deg/s/√Hz and 0.002 m/s²/√Hz (cannot find for LSM303DLM. But I found it for LSM303DLHC). This means the gyro in MinIMU-9 is better than MTx, and the accelerometers are same.

For the bias instability, MTx has 1 deg/s and 0.02 m/s² for gyro and accelerometer, respectively. But for MinIMU-9, we cannot find them in the datasheet. But based on my measurement, I found it is about 0.4 deg/s and 0.25 m/s². So this means our gyro is still better than Mtx, but the accelerometer is 10 times worse than MTx!!!

Do you think my analysis is correct?

And for the tracking problem, if we account for both the gryo and accelerometer readings, the drift error is 1500m in 1 min. But if we only account for the accelerometer readings, and feed the gyro reading with the ground truth [0,0,0], the drift error is only 47m. This makes sense to me, because if we account for the gyro readings, we would estimate the wrong orentation, and thus would project the gravity into wrong direction. For example, if we estimate the orientation a little bit wrong and thus project 0.5 m/s2 of gravity into the horizontal plane, then for 60 seconds, we would get a drift of 0.5 * 60 * 60 = 1800m.

In the report I attached in the previous post, the author got an drift error of 150m for accounting for both gyro and accelerometer, and only 3m for only considering accelerometers, which is 10 times better than my results. I think it is very likely caused by the accelerometer in the MinIMU-9, which has 10 times worse bias instability than MTx.

Do you think my explanation correct?

The accelerometer and magnetometer in the various LSM303 modules have substantial errors in offset and axis scaling and in just about any situation, each unit needs to be individually calibrated before actual use. This is a large part of what you pay for in a self-contained unit such as the MTx.

Have you calibrated your IMU? If not, you can certainly expect very large errors upon integration of the output, and this can be misleading. The calibration procedure suggested by the Pololu engineers is simple and straightforward, but cannot take into account cross-axis correlations. I have had good success with the procedures outlined on this web site: … ation.html

Although magnetometer calibration is discussed, the author’s procedure works well for the accelerometer, too, provided that the device is held as still as possible while each data point is collected (tedious but necessary). You can use 1.0 for the magnitude of the local field in either case.

The numerical method you use also matters. For example, you use the post-gyro orientation for the accelerometer readings, but that’s not guaranteed to be the right frame of reference. Depending on latency of data reporting and internal implementation, I imagine you can be off by more than one sample’s duration in either direction between the two. Try using another time basis for the orientation you apply the acceleration in – one that lets you slide the time basis backwards and forwards (this requires buffering some samples.) Then you can try with different assumed latency offsets, and see if you can find a sweet spot that minimizes error.

Also, you should not ignore the third available input source: the compass. You can use that as a long-term correcting factor to your orientation estimation that you get from the gyro. Doing this, I imagine that you will get much better results, as long as there are no magnetic interference sources (like motors) close by.

Thanks for the explanation, I think it makes sense. I am not sure if your other analyses and explanations are correct.