Using only the accelerometer we were not able to get any reliable readings.

Once moving to the AHRS system we got between 2 and 10 meters of error after the 15 second autonomous period. More information about this can be found here however their findings are about 10x the error that we calculated.

The next attempt of this is to integrate it with with information from the motor encoders. The drive base we are using is equipped with mechanum wheels. Because of this we have to calculate a velocity vector as the robot can move in any direction. The velocity, direction, and rate of rotation can not be accurately be calculated from the mechanum wheels alone as they tend to slip. This is where the accelerometer comes in. We can easily calculate the absolute heading and rate of rotation from the AHRS software already running on the arduino. This allows us to correct the error in the values coming from the encoders.

We now have reliable drive base heading and rotation from the AHRS and reliable relative direction from the encoders (a little bit of error correction comes from the accelerometer on this). Finally by combining the accelerometer data with the encoders we can calculate the position much more accurately that with either of the sensors alone.