mirror of https://github.com/ArduPilot/ardupilot
AP_NavEKF3: Increase lower state variance limit when vibration affected
This makes state corrections from GPS and baro observations more aggressive
This commit is contained in:
parent
c3f38ec159
commit
ca00da81cd
|
@ -1853,8 +1853,12 @@ void NavEKF3_core::ConstrainVariances()
|
||||||
for (uint8_t i=0; i<=3; i++) P[i][i] = constrain_ftype(P[i][i],0.0,1.0); // attitude error
|
for (uint8_t i=0; i<=3; i++) P[i][i] = constrain_ftype(P[i][i],0.0,1.0); // attitude error
|
||||||
for (uint8_t i=4; i<=5; i++) P[i][i] = constrain_ftype(P[i][i], VEL_STATE_MIN_VARIANCE, 1.0e3); // NE velocity
|
for (uint8_t i=4; i<=5; i++) P[i][i] = constrain_ftype(P[i][i], VEL_STATE_MIN_VARIANCE, 1.0e3); // NE velocity
|
||||||
|
|
||||||
// check for collapse of the vertical velocity variance
|
// if vibration affected use sensor observation variances to set a floor on the state variances
|
||||||
if (P[6][6] < VEL_STATE_MIN_VARIANCE) {
|
if (badIMUdata) {
|
||||||
|
P[6][6] = fmaxF(P[6][6], sq(frontend->_gpsVertVelNoise));
|
||||||
|
P[9][9] = fmaxF(P[9][9], sq(frontend->_baroAltNoise));
|
||||||
|
} else if (P[6][6] < VEL_STATE_MIN_VARIANCE) {
|
||||||
|
// handle collapse of the vertical velocity variance
|
||||||
P[6][6] = VEL_STATE_MIN_VARIANCE;
|
P[6][6] = VEL_STATE_MIN_VARIANCE;
|
||||||
// this counter is decremented by 1 each prediction cycle in CovariancePrediction
|
// this counter is decremented by 1 each prediction cycle in CovariancePrediction
|
||||||
// resulting in the count from each clip event fading to zero over 1 second which
|
// resulting in the count from each clip event fading to zero over 1 second which
|
||||||
|
|
Loading…
Reference in New Issue