From 3a2b973abad44c84970018b72b58091bdd306b9e Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Fri, 19 Apr 2024 17:55:42 +0200 Subject: [PATCH] VTOL Tailsitter: add front transition throttle blending Signed-off-by: Silvan Fuhrer --- src/modules/vtol_att_control/tailsitter.cpp | 8 +++++++- src/modules/vtol_att_control/tailsitter.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/vtol_att_control/tailsitter.cpp b/src/modules/vtol_att_control/tailsitter.cpp index 5693d516b3..c05b4199d7 100644 --- a/src/modules/vtol_att_control/tailsitter.cpp +++ b/src/modules/vtol_att_control/tailsitter.cpp @@ -238,7 +238,7 @@ void Tailsitter::update_transition_state() void Tailsitter::waiting_on_tecs() { // copy the last trust value from the front transition - _v_att_sp->thrust_body[0] = _thrust_transition; + _v_att_sp->thrust_body[0] = -_last_thr_in_mc; } void Tailsitter::update_fw_state() @@ -336,3 +336,9 @@ bool Tailsitter::isFrontTransitionCompletedBase() return transition_to_fw; } + +void Tailsitter::blendThrottleAfterFrontTransition(float scale) +{ + // note: MC throttle is negative (as in negative z), while FW throttle is positive (positive x) + _v_att_sp->thrust_body[0] = scale * _v_att_sp->thrust_body[0] + (1.f - scale) * (-_last_thr_in_mc); +} diff --git a/src/modules/vtol_att_control/tailsitter.h b/src/modules/vtol_att_control/tailsitter.h index 93fa0b2491..39265a2e97 100644 --- a/src/modules/vtol_att_control/tailsitter.h +++ b/src/modules/vtol_att_control/tailsitter.h @@ -66,6 +66,7 @@ public: void update_fw_state() override; void fill_actuator_outputs() override; void waiting_on_tecs() override; + void blendThrottleAfterFrontTransition(float scale) override; private: enum class vtol_mode {