From 5bb36162be583d3ccbace93f2f1cbacf40c94314 Mon Sep 17 00:00:00 2001 From: sander Date: Sun, 14 Aug 2016 17:09:25 +0200 Subject: [PATCH] Start time based transition blending half-way --- src/modules/vtol_att_control/standard.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/vtol_att_control/standard.cpp b/src/modules/vtol_att_control/standard.cpp index 85f48dfcf8..fc607ebdb1 100644 --- a/src/modules/vtol_att_control/standard.cpp +++ b/src/modules/vtol_att_control/standard.cpp @@ -263,10 +263,14 @@ void Standard::update_transition_state() // time based blending when no airspeed sensor is set } else if (_params_standard.airspeed_mode == control_state_s::AIRSPD_MODE_DISABLED && - (float)hrt_elapsed_time(&_vtol_schedule.transition_start) < (_params_standard.front_trans_time_min * 1000000.0f) + (float)hrt_elapsed_time(&_vtol_schedule.transition_start) < (_params_standard.front_trans_time_min * 1000000.0f) && + (float)hrt_elapsed_time(&_vtol_schedule.transition_start) > ((_params_standard.front_trans_time_min / 2.0f) * 1000000.0f) ) { - float weight = 1.0f - (float)(hrt_elapsed_time(&_vtol_schedule.transition_start) / - (_params_standard.front_trans_time_min * 1000000.0f)); + float weight = 1.0f - ((float)(hrt_elapsed_time(&_vtol_schedule.transition_start) - ((_params_standard.front_trans_time_min / 2.0f) * 1000000.0f)) / + ((_params_standard.front_trans_time_min / 2.0f) * 1000000.0f)); + + weight = math::constrain(weight, 0.0f, 1.0f); + _mc_roll_weight = weight; _mc_pitch_weight = weight; _mc_yaw_weight = weight;