Want to make IMU - don't really know too much about anything

Hey guys!

I am currently working on making an IMU but I have so many questions. It would be really awesome if you could help me out (=

I am using an Arduino Uno and the Adafruit 10dof sensor (Adafruit 10-DOF IMU Breakout - L3GD20H + LSM303 + BMP180 : ID 1604 : $29.95 : Adafruit Industries, Unique & fun DIY electronics and kits)
Datasheet for the gyro: http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/DM00036465.pdf

1.) I know that I need to compensate for the drift of the gyro with the accelerometer but I have no idea how to do that... Like how do I combine the two values?

2.) My sensor has a high-pass filter. What exactly does this do and why and when should i use it?
And what cut-off frequency is wise to use?

3.) On page 31 of the datasheet there is a table for different Output data rate and bandwidth selections. What exactly does output data rate and bandwith mean in the context of the I2C connection? And what should be chosen here?

4.) What kind of setup would be wise for an active stabilization system using an IMU? should be the reading from the sensor be done with an interrupt routine? or should both the reading and the stabilization be in the main loop?

5.) I tried to set up a interrupt with the gyro but it doesn't work. Could you explein me what the parts of CTRL_REG3 do and how I need to set them up in order to get the interrupt working?

6.) Is gimbal lock an issue with an sensor like this I have to watch out for?

I know these are a lot of questions... I just want to learn and make progress with my project. It is totaly fine if you don't answer them all or just point me to some sources I can learn from.

Have a nice day (=

I know

  1. The usual answer is a Kalman filter. Most descriptions of it dive deep into the mathematics but the operating principle is relatively simple.

  2. Not sure.

  3. Bandwidth usually refers to a low-pass filter. You don't need to see high frequency vibrations in the output, particularly if you are reading at a much lower data rate. Look up Nyquist bandwidth theory.

  4. Main loop.

  5. I never tried to do this.

  6. No. Unless your mathematics uses some of the simpler assumptions, then you can get the equivalent of gimbal lock in your equations.

You could continue development with RTIMULib for Arduino, which was state of the art a couple of years ago, but is no longer supported.

It works very, very well with certain off the shelf sensors.

Thank you guys (=