diff --git a/src/modules/vtol_att_control/tailsitter.cpp b/src/modules/vtol_att_control/tailsitter.cpp index 7a73bc23d10d7b87a10fe6e4ea05f045a5fa6156..f3af043a5f220d07ddaf57ff119c1474f51d772f 100644 --- a/src/modules/vtol_att_control/tailsitter.cpp +++ b/src/modules/vtol_att_control/tailsitter.cpp @@ -130,15 +130,18 @@ void Tailsitter::update_vtol_state() case FW_MODE: break; - case TRANSITION_FRONT_P1: + case TRANSITION_FRONT_P1: { - // check if we have reached airspeed and pitch angle to switch to TRANSITION P2 mode - if ((_airspeed->indicated_airspeed_m_s >= _params->transition_airspeed - && pitch <= PITCH_TRANSITION_FRONT_P1) || can_transition_on_ground()) { - _vtol_schedule.flight_mode = FW_MODE; - } + bool airspeed_condition_satisfied = _airspeed->indicated_airspeed_m_s >= _params->transition_airspeed; + airspeed_condition_satisfied |= _params->airspeed_disabled; - break; + // check if we have reached airspeed and pitch angle to switch to TRANSITION P2 mode + if ((airspeed_condition_satisfied && pitch <= PITCH_TRANSITION_FRONT_P1) || can_transition_on_ground()) { + _vtol_schedule.flight_mode = FW_MODE; + } + + break; + } case TRANSITION_BACK: // failsafe into fixed wing mode