I'm going to be experimenting with this device
http://blog.trossenrobotics.com/index.php/2007/02/01/phidgets-announces-3-axis-accelerometer/
which should work on both Windows and Linux systems as a method of
estimating changes in the robots velocity. When combined with stereo
vision this should produce a reliable and completely solid state
solution to the mobile robot perception problem.
With the accelerometer device mounted at some distance from the centre
of rotation of the robot it should be possible to measure its angular
velocity, which can also be fused with scan matching for even greater
accuracy. This effectively reduces the amount of noise within the
motion model, meaning that fewer particles are needed in order to
characterise the robots position uncertainty (which means less
computation is required and so the whole thing will run on more modest
processors).
To begin with these sensors have a low signal to noise ratio, meaning
that a large amount of filtering is needed in order to get usable
data. Even if the noise filtering was perfect you still need to
subtract acceleration due to gravity to get the resulting non-
gravitational component of the acceleration. Gravity varies slightly
from one place to another, so there is always going to be some error
here. In addition the analogue to digital conversion will introduce
further errors, and any data dropped over the USB communications adds
extra error on top of that. Although all these errors may be small
there is no way of recovering from them, so what begin as tiny
velocity errors due to inaccurate integration of acceleration values
over time soon turn into massive velocities. Just because the sensor
has stopped accelerating does not mean that it's not continuing to
move, so there is also the problem of determining when the robot is
stationary. All these problems add up to it being very difficult to
get reliable velocity and position data from this sensor.
So at the moment it's looking like conventional wheel odometry will
have to be used. This is a shame because inertial sensing would have
given a much more compact solution.
http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf
and this video would suggest that it is possible to get good position
values!