I am doing this open, but haven't push recent commits to Github, because it doesn't work yet (the DMP part that is). I was trying to adapt the i2cdevlib implementation for MultiWii (
https://github.com/jrowberg/i2cdevlib), but found out Arducopter/Ardupilot has a nearly complete implementation of DMP code already (experimental and they talk to it via SPI instead of I2C):
http://code.google.com/p/ardupilot-mega ... PU6000.cppThey use it in parallel to the existing code at fixed 200 Hz sample (and DMP) rate.
From those code examples I found out:
- there are some calibration registers to set gain, bias and alignment (??) for all the sensors
- 9 axis fusion should be possible, but I haven't found a working implementation (with FreeIMU) yet
- DMP and sensors are separate entities, so it's possible to use DMP for quaternions and still read out sensor data via normal registers ... or you get those values from the FIFO
- the FIFO is a nice concept where you can expect new values every x µs ... since the buffer is quite large it's unlikely to miss values, so integration of acceleration to support alt hold (baro) and position hold (GPS) at fixed time intervals should be possible even if we don't retrieve the data from the FIFO at fixed time intervals
- from the examples (i2cdevlib) it looks like drift is an issue, but settles few seconds after initialisation. Maybe the DMP has some auto calibration feature (that would be nice for mag) or it's just the Kalman filter effect.
Invensense should release documentation for this feature ... damn it

It seems to be very powerful, but nobody is really using it ... well over a year after this sensor was announced :/