On our Razor IMU there are three different MEM sensors: a 3-axis accelerometer, a 2-axis gyro, and a single axis gyro.  We have been doing our best to get decent unfiltered data out of our IMU to understand better how it works and where the problems lie.  The gyros give us relatively clean instantaneous angular acceleration data that we will be able to convert into a definite position around the X, Y or Z axis once we get our filtering processes implemented.  The accelerometers have been giving us a bit more grief…

Ideally the accelerometers should give us a good idea of the angle we are above or below the horizon in each axis.  This is achieved by mapping the units that are spit out by the analog to digital converter, to a range from -1 to +1.  This range is necessary to make sure that when using the arccosine function (to find the angle) that we do not have any values in our calculations that give us a result that is undefined.  This seems to work well with the Y axis accelerometer, but is not the case with the X axis.

When looking at the Y axis accelerometer data:  at +90 degrees (above the horizon) we get an ADC value of about 610, at 0 degrees we have a value of about 512, and at -90 degrees (below the horizon) we have an adc value of about 410.  This gives us about the same range of sensitivity both above and below the horizon.  This is not the case with the X axis.  As shown in Figure 1, the range that we have below the horizon is non linear, and is about twice the range that we have below the horizon.  At +90 degrees on the X axis we have an ADC value of about 412, at 0 an ADC value of about 512, and at -90 degrees an ADC value of about 768.  This behavior is not what we expected to see.  We expected that both the X and Y axes should behave similarly considering that they are both in the same plane.

Figure 1: The X accelerometer seems to have a "dead spot" and non-linear values around 80 degrees below the horizon

We will have to wait and see if this is a defect in the accelerometer chip, or if it is just a trend that we will be able to filter out with our Kalman Filter that we are currently implementing.

A video that we took of this trend is below. The values on the screen are a bit hard to read, but correspond with  Figure1.