From bdc57178d4144342eeeeb725372efa287b1ebb6d Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Mon, 4 Oct 2021 09:53:43 +0200 Subject: [PATCH] Tailsitter: add add transition timeout (abort transition after VT_TRANS_TMEOUT, Quadchute) Signed-off-by: Silvan Fuhrer --- src/modules/vtol_att_control/tailsitter.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/modules/vtol_att_control/tailsitter.cpp b/src/modules/vtol_att_control/tailsitter.cpp index e76b925f86..50bf2943da 100644 --- a/src/modules/vtol_att_control/tailsitter.cpp +++ b/src/modules/vtol_att_control/tailsitter.cpp @@ -130,6 +130,8 @@ void Tailsitter::update_vtol_state() case vtol_mode::TRANSITION_FRONT_P1: { + const float time_since_trans_start = (float)(hrt_absolute_time() - _vtol_schedule.transition_start) * 1e-6f; + const bool airspeed_triggers_transition = PX4_ISFINITE(_airspeed_validated->calibrated_airspeed_m_s) && !_params->airspeed_disabled; @@ -151,6 +153,14 @@ void Tailsitter::update_vtol_state() _vtol_schedule.flight_mode = vtol_mode::FW_MODE; } + // check front transition timeout + if (_params->front_trans_timeout > FLT_EPSILON) { + if (time_since_trans_start > _params->front_trans_timeout) { + // transition timeout occured, abort transition + _attc->quadchute(VtolAttitudeControl::QuadchuteReason::TransitionTimeout); + } + } + break; }