summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mathias Agopian <mathias@google.com> 2013-05-30 14:26:36 -0700
committer Mathias Agopian <mathias@google.com> 2013-05-30 14:26:36 -0700
commit24f9bea8ebc752cee0047fce1c0cddbb431e886d (patch)
tree0dd1cff0635b6a913268d3bee8ae87ca09928150
parent2e2a560c4b60c24258e0eaadc1189eb9dcc1a0b4 (diff)
revert parts of dc5b63e40, which made gyro drift estimation unstable
initialize the system covariance matrix with non-zero values for the gyro-bias part. this improves the initial bias estimation speed significantly. the initial covariance matrix should be small because the drift changes slowly. the real problem is that we're not starting with a good estimate of the drift, which this algorithm relies on. so with this revert, it'll take a while for the drift to be estimated but it won't be unstable. Change-Id: Id5584bc114a2390d507643b2451b2650c1b90721
-rw-r--r--services/sensorservice/Fusion.cpp16
1 files changed, 0 insertions, 16 deletions
diff --git a/services/sensorservice/Fusion.cpp b/services/sensorservice/Fusion.cpp
index 93d6127df7..4f63c31d16 100644
--- a/services/sensorservice/Fusion.cpp
+++ b/services/sensorservice/Fusion.cpp
@@ -220,22 +220,6 @@ void Fusion::initFusion(const vec4_t& q, float dT)
// initial covariance: Var{ x(t0) }
// TODO: initialize P correctly
P = 0;
-
- // it is unclear how to set the initial covariance. It does affect
- // how quickly the fusion converges. Experimentally it would take
- // about 10 seconds at 200 Hz to estimate the gyro-drift with an
- // initial covariance of 0, and about a second with an initial covariance
- // of about 1 deg/s.
- const float covv = 0;
- const float covu = 0.5f * (float(M_PI) / 180);
- mat33_t& Pv = P[0][0];
- Pv[0][0] = covv;
- Pv[1][1] = covv;
- Pv[2][2] = covv;
- mat33_t& Pu = P[1][1];
- Pu[0][0] = covu;
- Pu[1][1] = covu;
- Pu[2][2] = covu;
}
bool Fusion::hasEstimate() const {