I'll try to explain better, sorry, I don't speak English very well... I now see that I used term "deviations" incorrectly, I meant "shifts"...
I don't change gyro_scales, they are "1" as by default.
My suggestion is the the initial gyro_bias.x,y,z are not cleared on the start of calibration procedure and participate in calculations in some way.
I just reproduced the issue. Here is what I do:
1. In Object Browser I set :
- Settings | AccelGyroSettings | gyro_bias.[X] = 1
- Settings | AccelGyroSettings | gyro_bias.[Y] = 100
- Settings | AccelGyroSettings | gyro_bias.[Z] = 1000
2. As a result, in the scopes Raw GyroState shows values for
- X: 21 deg/s
- Y: -92 deg/s
- Z: -999 deg/s
3. I perform Configuration | Attitude | Calibration | Gyro Bias Calibration | Start ....... Save
This is with the UAV perfectly still, in quiet environment. Thermal calibration was done before for that FC, range -10..90C, in complete darkness and motionless, presumably no air pressure changes.
4. In the scopes Raw GyroState shows values for
- X: -23.6 deg/s
- Y: -6.6 deg/s
- Z: -0.2 deg/s
These values are far from expected +-0.1 deg/s.
5. I perform again Configuration | Attitude | Calibration | Gyro Bias Calibration | Start ....... Save
6. In the scopes Raw GyroState shows values for
- X: -0.05 deg/s
- Y: 0.05 deg/s
- Z: 0.65 deg/s
These values are much better but Z axle is still shifted unpleasantly.
Of course, in normal situation starting gyro biases won't have so abnormally high values. But they still mess the subsequent gyro bias calibrations.
7. Finally, I set manually in Object Browser :
- Settings | AccelGyroSettings | gyro_bias.[X] = 0
- Settings | AccelGyroSettings | gyro_bias.[Y] = 0
- Settings | AccelGyroSettings | gyro_bias.[Z] = 0
8. In the scopes I see uncalibrated Raw GyroState values :
- X: -0.9 deg/s
- Y: 0.75 deg/s
- Z: 0.7 deg/s
9. I perform Configuration | Attitude | Calibration | Gyro Bias Calibration | Start ....... Save
10. In the scopes I now see very nice Raw GyroState values, approximately :
- X: 0 deg/s
- Y: 0 deg/s
- Z: 0 deg/s
So: If gyro_bias is cleared manually in Object Browser before starting Gyro Bias Calibration procedure, the results of calibration are perfect, otherwise not.