Allow rangefinder fusion in vision height mode (Fix for #994) (#999)

Co-authored-by: Daniel Agar <daniel@agar.ca>
This commit is contained in:
Eike
2021-04-30 20:17:39 +02:00
committed by GitHub
parent 4ac57d3bde
commit a7b8afe420
+5 -8
View File
@@ -788,8 +788,7 @@ void Ekf::controlHeightSensorTimeouts()
// check if height has been inertial deadreckoning for too long // check if height has been inertial deadreckoning for too long
// in vision hgt mode check for vision data // in vision hgt mode check for vision data
const bool hgt_fusion_timeout = isTimedOut(_time_last_hgt_fuse, (uint64_t)5e6) || const bool hgt_fusion_timeout = isTimedOut(_time_last_hgt_fuse, (uint64_t)5e6);
(_control_status.flags.ev_hgt && !isRecent(_time_last_ext_vision, 5 * EV_MAX_INTERVAL));
if (hgt_fusion_timeout || continuous_bad_accel_hgt) { if (hgt_fusion_timeout || continuous_bad_accel_hgt) {
@@ -1079,13 +1078,11 @@ void Ekf::controlHeightFusion()
} }
} }
if (_control_status.flags.baro_hgt && _baro_data_ready && !_baro_hgt_faulty) { if (_control_status.flags.ev_hgt && _ev_data_ready) {
// switch to baro if there was a reset to baro
fuse_height = true; fuse_height = true;
} } else if (_control_status.flags.rng_hgt && _range_sensor.isDataHealthy()) {
fuse_height = true;
// determine if we should use the vertical position observation } else if (_control_status.flags.baro_hgt && _baro_data_ready && !_baro_hgt_faulty) {
if (_control_status.flags.ev_hgt) {
fuse_height = true; fuse_height = true;
} }