|
|
@@ -79,10 +79,31 @@ public class Axis9Handler : AxisBaseHandler
|
|
|
}
|
|
|
|
|
|
public override void ResetMag() {
|
|
|
+ _SaveOldMag();
|
|
|
_9Axis.Attitude.MagCalibrater = new o0.IMU.MagnetometerAutoCalibrater(0.001d);
|
|
|
Debug.Log("地磁计校准结果主动重置!");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private string _oldEllipsoidFitting = "{\"Center\":[-3.0443925790756605,-3.6882526269162423,-0.9424965068421579],\"CorrectMatrixArray\":[[0.2584454016577151,0.00410177628600846,0.005727574526798527],[0.00410177628600846,0.2639115667519193,-0.03866026824619133],[0.005727574526798523,-0.03866026824619133,0.23912157876854007]],\"Radius\":[4.764270274783962,3.854047926765827,3.4233050788114037]}";
|
|
|
+ private double _oldVariance = 0.000362;
|
|
|
+ private void _SaveOldMag()
|
|
|
+ {
|
|
|
+ if (!_9Axis.Attitude.MagCalibrater.Complete) return;
|
|
|
+ _oldVariance = _9Axis.Attitude.MagCalibrater.Variance;
|
|
|
+ _oldEllipsoidFitting = attitudeJson.Stringify(_9Axis.Attitude.MagCalibrater.EllipsoidFitting);
|
|
|
+ }
|
|
|
+
|
|
|
+ //应用不精准地磁数据,为让客户不地磁校准成功也能动
|
|
|
+ public override void ApplyImpreciseMag()
|
|
|
+ {
|
|
|
+ if (_9Axis.Attitude.MagCalibrater.Complete) return;
|
|
|
+ _9Axis.Attitude.MagCalibrater.Lock = true;
|
|
|
+ _9Axis.Attitude.MagCalibrater.Init();
|
|
|
+ _9Axis.Attitude.MagCalibrater.EllipsoidFitting = attitudeJson.Parse<o0.IMU.EllipsoidFitting>(_oldEllipsoidFitting);
|
|
|
+ _9Axis.Attitude.MagCalibrater.Variance = _oldVariance;
|
|
|
+ }
|
|
|
+
|
|
|
public override bool IsGyrCompleted() {
|
|
|
return _9Axis.Attitude.GyrCalibrater.Count > 0;
|
|
|
}
|