MinIMU-9v5 Calibration

If you really are getting +/- 1° accuracy, for the full 3D range, that is about the best you can do with a consumer grade sensor. That is, if you are comparing sensor-reported 3D orientations to precisely known 3D orientations.

3D orientation accuracy is limited by calibration errors (systematic errors) as well as sensor noise (random errors), which is stated in the sensor data sheet. To reduce sensor noise, you need to average over many static 3D orientation measurements, which is not usually practical for a robot.

Test calibration of accelerometers and magnetometers by making a 3D plot of the corrected data, which should map to a sphere exactly centered on the origin. A magnetometer calibration example is posted here: Correcting the Balboa magnetometer

Incidentally, I’ve recently posted Python code to replace Magneto for estimating the calibration constants for the 9 parameter method . If you are familiar with Python on a PC, it is much easier to use than Magneto and especially nice for producing publication quality plots. See GitHub - jremington/AltIMU-AHRS: Arduino Madgwick/Mahoney AHRS filters for the Pololu AltIMU9 and 10 series of 9 and 10DOF sensors. Includes code for sensor calibration.