I'm running the DMP example for Arduino. Upon startup the yaw value wanders for about ten seconds before stabilizing at ~38°. Pitch and roll are stable from the start, but after the ten seconds everybody is basically perfect. This is confusing to me because of the way sensor fusion works. In a fused sensor the acceleration vector is used to cancel drift in the x and y gyro readings, and a magnetometer does the same for roll around z. The MPU-6050 doesn't have a magnetometer, so why does the yaw stabilize? I know something's not quite right with the yaw; it drifts for a while when pitch and roll are steady from the start. However, from looking at the erratic drift in the raw gyro rates, I don't see a reason why the yaw would ever stabilize.
I realize that I'm kind of asking "How does DMP work" and that nobody really knows. But maybe someone has an idea?
Anyway, thanks for the work you've done, Jeff. Your praises shall be sung to the farthest reaches of the interwebs, followed by lusty cursings of InvenSense. But maybe a kind word every once in a while.