Strange calibration Accel-Gyro-Magne in driver MPU9250

I have a questions about calibration MPU9250. Driver had two function MPU9250::calib_acc and MPU9250::calib_mag. But this functions can’t calibrate or calibrate with very low precision, because MPU9250 not calibrate on a factory. For calibrate gyro need a get data raw values while MPU9250 don’t move. For calibrate accel need a get data raw values while MPU9250 is rotating. Calibrate magne need for give calibration matrix and bias. This matrix and vector needs to calculate z angle taking into account the slopes along the x and y axes. For calibrate magne need get data raw values while MPU9250 is rotating, and get calibration matrix and bias from utility Magneto ( ).
I don’t a proffecional in this question, but this info i read from multiple sources. Am I right about the calibration accuracy in the driver? If so, why do you just calibrate? I’m sorry if I’m not right about the incorrect calibration in the driver.

Driver LSM9DS1 don’t have calibration, because his senses had a factory calibration values (when switched on, the calibration is ~20 ms). But how accurate is it (I found it is still advised to calibrate to ensure accuracy)? Why use MPU9250 when there is a calibrated LSM9DS1 ? For filtred?


These examples are needed only for testing hardware and for giving an idea how to work with it. That’s why they are simple and don’t have such things as calibration like in ArduPilot.

In MPU9250 driver you can find calib_acc method, which makes simple calibration using values from SELF_TEST_…_ACCEL registers. Values in this registers indicates the self test output generated during manufacturing tests.

ArduPilot uses both mpu9250 and lsm9ds1 sensors.


This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.