From a998da1781ac17d13076306d65346b06d19cf0a0 Mon Sep 17 00:00:00 2001 From: bresch <brescianimathieu@gmail.com> Date: Fri, 3 Apr 2020 08:48:05 +0200 Subject: [PATCH] terrain_estimator: initialize with valid delayed measurement --- EKF/terrain_estimator.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/EKF/terrain_estimator.cpp b/EKF/terrain_estimator.cpp index 74986f4d51..5f96da1875 100644 --- a/EKF/terrain_estimator.cpp +++ b/EKF/terrain_estimator.cpp @@ -46,8 +46,6 @@ bool Ekf::initHagl() { bool initialized = false; - // get most recent range measurement from buffer - const rangeSample &latest_measurement = _range_buffer.get_newest(); if (!_control_status.flags.in_air) { // if on ground, do not trust the range sensor, but assume a ground clearance @@ -57,11 +55,9 @@ bool Ekf::initHagl() initialized = true; } else if ((_params.terrain_fusion_mode & TerrainFusionMask::TerrainFuseRangeFinder) - && _range_sensor.isHealthy() - && isRecent(latest_measurement.time_us, (uint64_t)2e5)) { + && _range_sensor.isDataHealthy()) { // if we have a fresh measurement, use it to initialise the terrain estimator - // TODO: the latest measurment did not go through the checks and could be invalid! - _terrain_vpos = _state.pos(2) + latest_measurement.rng * _range_sensor.getCosTilt(); + _terrain_vpos = _state.pos(2) + _range_sensor.getRange() * _range_sensor.getCosTilt(); // initialise state variance to variance of measurement _terrain_var = sq(_params.range_noise); // success