First of all, many thanks to jrowberg for making an absolutely wonderful library! It certainly saved me a lot of trouble!
I recently have been working with the MPU-6050 and the Arduino for a project of mine. I've been using i2cdevlib for its DMP support, and I've run in to some issues with regard to accelerometer calibration and how it interacts with the DMP. I've worked with the example code in the various modes (worldaccel, yawpitchroll, etc) and it works great, but I've had some trouble with interperiting the data it gives back. This lead to my questions about the accelerometer calibration process. Here are some of my questions:
First of all, does the DMP auto-calibrate the accelerometer and gyroscope? Does the DMP eliminate bias and scaling factors? From my experience, the gyroscope worked great (it actually informed me that my table wasn't level!) but the accelerometer at rest had nonzero values even when gravity was accounted for. Why does this happen?
If the DMP doesn't calibrate the sensors, how would I go about doing it manually? Where should I look for this kind of process?
One thing that I saw in the code was the use of gyro and accelerometer offsets. Might I use these to somehow remove the error? How does the DMP use these in its sensor calculations? How might I calculate the offsets for my sensors?
Sorry for the barrage of questions... I'm pretty new to working with inertial sensors like this....
Thanks soo much!