From 0b107200344d444b6c4e0652a0896261113b6f36 Mon Sep 17 00:00:00 2001 From: sander Date: Wed, 24 Feb 2016 21:50:21 +0100 Subject: [PATCH] testing tweaks --- src/modules/vtol_att_control/standard.cpp | 18 ++++++++++++++---- src/modules/vtol_att_control/standard.h | 2 +- src/modules/vtol_att_control/vtol_type.h | 1 + 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/modules/vtol_att_control/standard.cpp b/src/modules/vtol_att_control/standard.cpp index b823a3719d..cc5a0b788b 100644 --- a/src/modules/vtol_att_control/standard.cpp +++ b/src/modules/vtol_att_control/standard.cpp @@ -47,11 +47,12 @@ Standard::Standard(VtolAttitudeControl *attc) : VtolType(attc), _flag_enable_mc_motors(true), - _pusher_throttle(0.0f), + _pusher_throttle(0.0f), _airspeed_trans_blend_margin(0.0f) { _vtol_schedule.flight_mode = MC_MODE; _vtol_schedule.transition_start = 0; + _pusher_active = false; _mc_roll_weight = 1.0f; _mc_pitch_weight = 1.0f; @@ -302,12 +303,21 @@ void Standard::fill_actuator_outputs() _actuators_out_0->control[actuator_controls_s::INDEX_ROLL] = _actuators_mc_in->control[actuator_controls_s::INDEX_ROLL] * _mc_roll_weight; // roll - if(_actuators_mc_in->control[actuator_controls_s::INDEX_PITCH] < -0.01f){ - _actuators_out_0->control[actuator_controls_s::INDEX_PITCH] = -0.01f; - _pusher_throttle = _actuators_mc_in->control[actuator_controls_s::INDEX_PITCH] * -1; + if(_actuators_mc_in->control[actuator_controls_s::INDEX_PITCH] < -0.05f){ + _actuators_out_0->control[actuator_controls_s::INDEX_PITCH] = -0.02f; + _pusher_throttle = _actuators_mc_in->control[actuator_controls_s::INDEX_PITCH] * -0.15f; + if(!_pusher_active){ + _pusher_active = true; + warnx("Activating pusher"); + } } else { _actuators_out_0->control[actuator_controls_s::INDEX_PITCH] = _actuators_mc_in->control[actuator_controls_s::INDEX_PITCH] * _mc_pitch_weight; // pitch + if(_pusher_active){ + _pusher_active = false; + warnx("Deactivating pusher"); + } + } diff --git a/src/modules/vtol_att_control/standard.h b/src/modules/vtol_att_control/standard.h index de3ca96e38..ef8c49f6ce 100644 --- a/src/modules/vtol_att_control/standard.h +++ b/src/modules/vtol_att_control/standard.h @@ -98,7 +98,7 @@ private: } _vtol_schedule; bool _flag_enable_mc_motors; - float _pusher_throttle; + float _pusher_throttle; float _airspeed_trans_blend_margin; void set_max_mc(unsigned pwm_value); diff --git a/src/modules/vtol_att_control/vtol_type.h b/src/modules/vtol_att_control/vtol_type.h index 89038ad633..ddfed44f57 100644 --- a/src/modules/vtol_att_control/vtol_type.h +++ b/src/modules/vtol_att_control/vtol_type.h @@ -154,6 +154,7 @@ protected: bool flag_idle_mc = true; //false = "idle is set for fixed wing mode"; true = "idle is set for multicopter mode" + bool _pusher_active = false; float _mc_roll_weight = 1.0f; // weight for multicopter attitude controller roll output float _mc_pitch_weight = 1.0f; // weight for multicopter attitude controller pitch output float _mc_yaw_weight = 1.0f; // weight for multicopter attitude controller yaw output