From 1b7672a84f68a4ff5f9ac4cde0f1e8b05470a53f Mon Sep 17 00:00:00 2001 From: Gone4Dirt Date: Sat, 4 Apr 2020 09:58:46 +0100 Subject: [PATCH] AP_Motors: Correctly adjust heli run up timer in bailout --- libraries/AP_Motors/AP_MotorsHeli_RSC.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/AP_Motors/AP_MotorsHeli_RSC.cpp b/libraries/AP_Motors/AP_MotorsHeli_RSC.cpp index 119a118fa4..d05356b188 100644 --- a/libraries/AP_Motors/AP_MotorsHeli_RSC.cpp +++ b/libraries/AP_Motors/AP_MotorsHeli_RSC.cpp @@ -338,16 +338,21 @@ void AP_MotorsHeli_RSC::update_rotor_ramp(float rotor_ramp_input, float dt) // update_rotor_runup - function to slew rotor runup scalar, outputs float scalar to _rotor_runup_ouptut void AP_MotorsHeli_RSC::update_rotor_runup(float dt) { + int8_t runup_time = _runup_time; // sanity check runup time - if (_runup_time < _ramp_time) { - _runup_time = _ramp_time; - } - if (_runup_time <= 0 ) { - _runup_time = 1; + runup_time = MAX(_ramp_time+1,runup_time); + + // adjust rotor runup when bailing out + if (_use_bailout_ramp) { + // maintain same delta as set in parameters + runup_time = _runup_time-_ramp_time+1; } + // protect against divide by zero + runup_time = MAX(1,runup_time); + // ramp speed estimate towards control out - float runup_increment = dt / _runup_time; + float runup_increment = dt / runup_time; if (_rotor_runup_output < _rotor_ramp_output) { _rotor_runup_output += runup_increment; if (_rotor_runup_output > _rotor_ramp_output) {