I'm trying to develop an IMU for my Arduino-based UAVS (heli) project. In my first test I just used a three-axis accelerometer, but it didn't work because the motor vibration generated too much noise. I then tried it just with gyros, but of course the the gyros drifted. So I learned through experience what everyone already knows: that the onlyway to make a good IMU is by mixing accelerometers with gyros andKalman Filters, which is eventually what I did ;-)
I ran a test to see how my IMU is responding, and I made a line chart to see the results. The test consists of rotating the device to 70 degrees and then shake it, to see how the filters reduce the "noise". It looks pretty good:
The samples was taken every 20 miliseconds, the blue line is just accelerometer and the red line is Accelerometer+Gyros+KalmanFilters.
Source code here: ArduIMU Beta1
Special thanks to Tom Pycke
Comments
http://en.wikipedia.org/wiki/White_noise
By the way, the white noise calm down Crying babies:
http://youtube.com/watch?v=lATx_c1aepU
About accelerometers: the most famous (used by tom p.) is this:
http:/sparkfun.com/
commerce/product_info.php?products_id=741
Dual axis gyroscope with +-500 degrees per seconds, and 3 axis accelerometers +-2G's, is nice, but i bought this:
http://sparkfun.com/commerce
/product_info.php?products_id=395
For money reasons, and use Nintendo Wii Accelerometer (Is called the Mexican way, survive with less). =)
I'm looking at gyros now... I wonder if I can get away with a 2 axis setup.
"There are more forces working on a flying airplane then just good old gravity! Just think about the centripetal force when following a circle path. We’ll need gyroscopes to correct this."
Have you experimented with using the accelerometer data alone, but averaging the samples over time, only allowing each reading to contribute to some percentage of the estimated measurement?