ekf2: refactor output predictor to class

- refactor all EKF backend output predictor pieces into new OutputPredictor class
 - output states are now calculated immediately with new high rate IMU rather than after EKF update
 - IMU delayed sample is passed as around as control data to avoid storing an extra copy and make the requirement clear
This commit is contained in:
Daniel Agar
2023-01-18 10:59:34 -05:00
committed by GitHub
parent c054ca20cc
commit 95300d5637
39 changed files with 855 additions and 618 deletions
+3 -3
View File
@@ -214,7 +214,7 @@ void Ekf::startEvPosFusion(const Vector2f &measurement, const Vector2f &measurem
_ev_pos_b_est.reset();
}
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
aid_src.time_last_fuse = _time_delayed_us;
_nb_ev_pos_reset_available = 5;
_information_events.flags.starting_vision_pos_fusion = true;
@@ -237,7 +237,7 @@ void Ekf::updateEvPosFusion(const Vector2f &measurement, const Vector2f &measure
_ev_pos_b_est.setBias(-Vector2f(_state.pos.xy()) + measurement);
}
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
aid_src.time_last_fuse = _time_delayed_us;
} else {
// EV has reset, but quality isn't sufficient
@@ -279,7 +279,7 @@ void Ekf::updateEvPosFusion(const Vector2f &measurement, const Vector2f &measure
}
}
aid_src.time_last_fuse = _imu_sample_delayed.time_us;
aid_src.time_last_fuse = _time_delayed_us;
if (_control_status.flags.in_air) {
_nb_ev_pos_reset_available--;