/* read the rangefinder and update height estimate */ void Plane::read_rangefinder(void) { #if RANGEFINDER_ENABLED == ENABLED // notify the rangefinder of our approximate altitude above ground to allow it to power on // during low-altitude flight when configured to power down during higher-altitude flight float height; #if AP_TERRAIN_AVAILABLE if (terrain.status() == AP_Terrain::TerrainStatusOK && terrain.height_above_terrain(height, true)) { rangefinder.set_estimated_terrain_height(height); } else #endif { // use the best available alt estimate via baro above home if (flight_stage == AP_SpdHgtControl::FLIGHT_LAND_APPROACH || flight_stage == AP_SpdHgtControl::FLIGHT_LAND_PREFLARE || flight_stage == AP_SpdHgtControl::FLIGHT_LAND_FINAL) { // ensure the rangefinder is powered-on when land alt is higher than home altitude. // This is done using the target alt which we know is below us and we are sinking to it height = height_above_target(); } else { // otherwise just use the best available baro estimate above home. height = relative_altitude(); } rangefinder.set_estimated_terrain_height(height); } rangefinder.update(); if (should_log(MASK_LOG_SONAR)) Log_Write_Sonar(); rangefinder_height_update(); #endif }
/* read the rangefinder and update height estimate */ void Plane::read_rangefinder(void) { #if RANGEFINDER_ENABLED == ENABLED rangefinder.update(); if (should_log(MASK_LOG_SONAR)) Log_Write_Sonar(); rangefinder_height_update(); #endif }