Hi Folks,
I've been using the I2C MPU-6050 libs as a basis for an arduino based orientation tracker. All working well but I'm now delving deeping into the Invensense docs and examples and they differ in how calibration is handled.
Do I have the following right ?
The gyro/accel offset registers used by the I2Cdevlibs (setXGyroOffset etc) appear to be undocumented by invensense and used for factory calibration. I can see these are useful if re-calibration is needed as they're non-volatile and automatically used by DMP.
The invensense motion driver code/examples recalibrate by pushing bias values calulated by the host (from raw gyro/accel data) down to the DMP using dmp_set_gyro_bias, etc. This is volatile so needs to be stored by the host somewhere such as additional EEPROM.
The DMP can also be configured to perform 'self calibration' of gyro data after 8 seconds of no motion.
Using the I2Cdevlib calibration I get good results. To combat yaw drift I add a drift compensation to the values which works very well as yaw drift seems to be consistent and stable even with lots of motions.
Cheers,
Rob