From c29ca6c9597e2de2b116afcf867e1907b6ae402c Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Tue, 17 May 2022 17:51:39 +0200 Subject: [PATCH] tailsitter: guard against division by 0 Signed-off-by: Silvan Fuhrer --- src/modules/vtol_att_control/tailsitter.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/vtol_att_control/tailsitter.cpp b/src/modules/vtol_att_control/tailsitter.cpp index 44f50bb53a..a4209531dc 100644 --- a/src/modules/vtol_att_control/tailsitter.cpp +++ b/src/modules/vtol_att_control/tailsitter.cpp @@ -234,7 +234,8 @@ void Tailsitter::update_transition_state() if (_vtol_schedule.flight_mode == vtol_mode::TRANSITION_FRONT_P1) { - const float trans_pitch_rate = M_PI_2_F / _param_vt_f_trans_dur.get() ; + // calculate pitching rate - and constrain to at least 0.1s transition time + const float trans_pitch_rate = M_PI_2_F / math::max(_param_vt_f_trans_dur.get(), 0.1f); if (tilt < M_PI_2_F - math::radians(_param_fw_psp_off.get())) { _q_trans_sp = Quatf(AxisAnglef(_trans_rot_axis, @@ -251,7 +252,8 @@ void Tailsitter::update_transition_state() } else if (_vtol_schedule.flight_mode == vtol_mode::TRANSITION_BACK) { - const float trans_pitch_rate = M_PI_2_F / _param_vt_b_trans_dur.get() ; + // calculate pitching rate - and constrain to at least 0.1s transition time + const float trans_pitch_rate = M_PI_2_F / math::max(_param_vt_b_trans_dur.get(), 0.1f); if (!_flag_idle_mc) { _flag_idle_mc = set_idle_mc();