ekf: return beta test ratio in get_innovation_test_status

Signed-off-by: CarlOlsson <carlolsson.co@gmail.com>
This commit is contained in:
CarlOlsson 2017-12-18 15:36:28 +01:00
parent e70206f74b
commit 5c8b22b43f
3 changed files with 5 additions and 3 deletions

View File

@ -224,7 +224,7 @@ public:
// Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold. // Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold.
// A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF // A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF
// Where a measurement type is a vector quantity, eg magnetoemter, GPS position, etc, the maximum value is returned. // Where a measurement type is a vector quantity, eg magnetoemter, GPS position, etc, the maximum value is returned.
void get_innovation_test_status(uint16_t *status, float *mag, float *vel, float *pos, float *hgt, float *tas, float *hagl); void get_innovation_test_status(uint16_t *status, float *mag, float *vel, float *pos, float *hgt, float *tas, float *hagl, float *beta);
// return a bitmask integer that describes which state estimates can be used for flight control // return a bitmask integer that describes which state estimates can be used for flight control
void get_ekf_soln_status(uint16_t *status); void get_ekf_soln_status(uint16_t *status);

View File

@ -1100,7 +1100,7 @@ bool Ekf::reset_imu_bias()
// Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold. // Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold.
// A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF // A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF
// Where a measurement type is a vector quantity, eg magnetoemter, GPS position, etc, the maximum value is returned. // Where a measurement type is a vector quantity, eg magnetoemter, GPS position, etc, the maximum value is returned.
void Ekf::get_innovation_test_status(uint16_t *status, float *mag, float *vel, float *pos, float *hgt, float *tas, float *hagl) void Ekf::get_innovation_test_status(uint16_t *status, float *mag, float *vel, float *pos, float *hgt, float *tas, float *hagl, float *beta)
{ {
// return the integer bitmask containing the consistency check pass/fail satus // return the integer bitmask containing the consistency check pass/fail satus
*status = _innov_check_fail_status.value; *status = _innov_check_fail_status.value;
@ -1116,6 +1116,8 @@ void Ekf::get_innovation_test_status(uint16_t *status, float *mag, float *vel, f
*tas = sqrtf(_tas_test_ratio); *tas = sqrtf(_tas_test_ratio);
// return the terrain height innovation test ratio // return the terrain height innovation test ratio
*hagl = sqrtf(_terr_test_ratio); *hagl = sqrtf(_terr_test_ratio);
// return the synthetic sideslip innovation test ratio
*beta = sqrtf(_beta_test_ratio);
} }
// return a bitmask integer that describes which state estimates are valid // return a bitmask integer that describes which state estimates are valid

View File

@ -338,7 +338,7 @@ public:
// Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold. // Innovation Test Ratios - these are the ratio of the innovation to the acceptance threshold.
// A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF // A value > 1 indicates that the sensor measurement has exceeded the maximum acceptable level and has been rejected by the EKF
// Where a measurement type is a vector quantity, eg magnetoemter, GPS position, etc, the maximum value is returned. // Where a measurement type is a vector quantity, eg magnetoemter, GPS position, etc, the maximum value is returned.
virtual void get_innovation_test_status(uint16_t *status, float *mag, float *vel, float *pos, float *hgt, float *tas, float *hagl) = 0; virtual void get_innovation_test_status(uint16_t *status, float *mag, float *vel, float *pos, float *hgt, float *tas, float *hagl, float *beta) = 0;
// return a bitmask integer that describes which state estimates can be used for flight control // return a bitmask integer that describes which state estimates can be used for flight control
virtual void get_ekf_soln_status(uint16_t *status) = 0; virtual void get_ekf_soln_status(uint16_t *status) = 0;