diff --git a/src/modules/fw_att_control/FixedwingAttitudeControl.cpp b/src/modules/fw_att_control/FixedwingAttitudeControl.cpp index 2d825fcc0b..daa1375b33 100644 --- a/src/modules/fw_att_control/FixedwingAttitudeControl.cpp +++ b/src/modules/fw_att_control/FixedwingAttitudeControl.cpp @@ -550,47 +550,7 @@ void FixedwingAttitudeControl::run() continue; } - /* default flaps to center */ - float flap_control = 0.0f; - - /* map flaps by default to manual if valid */ - if (PX4_ISFINITE(_manual.flaps) && _vcontrol_mode.flag_control_manual_enabled - && fabsf(_parameters.flaps_scale) > 0.01f) { - flap_control = 0.5f * (_manual.flaps + 1.0f) * _parameters.flaps_scale; - - } else if (_vcontrol_mode.flag_control_auto_enabled - && fabsf(_parameters.flaps_scale) > 0.01f) { - flap_control = _att_sp.apply_flaps ? 1.0f * _parameters.flaps_scale : 0.0f; - } - - // move the actual control value continuous with time, full flap travel in 1sec - if (fabsf(_flaps_applied - flap_control) > 0.01f) { - _flaps_applied += (_flaps_applied - flap_control) < 0 ? deltaT : -deltaT; - - } else { - _flaps_applied = flap_control; - } - - /* default flaperon to center */ - float flaperon_control = 0.0f; - - /* map flaperons by default to manual if valid */ - if (PX4_ISFINITE(_manual.aux2) && _vcontrol_mode.flag_control_manual_enabled - && fabsf(_parameters.flaperon_scale) > 0.01f) { - flaperon_control = 0.5f * (_manual.aux2 + 1.0f) * _parameters.flaperon_scale; - - } else if (_vcontrol_mode.flag_control_auto_enabled - && fabsf(_parameters.flaperon_scale) > 0.01f) { - flaperon_control = _att_sp.apply_flaps ? 1.0f * _parameters.flaperon_scale : 0.0f; - } - - // move the actual control value continuous with time, full flap travel in 1sec - if (fabsf(_flaperons_applied - flaperon_control) > 0.01f) { - _flaperons_applied += (_flaperons_applied - flaperon_control) < 0 ? deltaT : -deltaT; - - } else { - _flaperons_applied = flaperon_control; - } + control_flaps(deltaT); /* decide if in stabilized or full manual control */ if (_vcontrol_mode.flag_control_rates_enabled) { @@ -859,6 +819,51 @@ void FixedwingAttitudeControl::run() } } +void FixedwingAttitudeControl::control_flaps(const float dt) +{ + /* default flaps to center */ + float flap_control = 0.0f; + + /* map flaps by default to manual if valid */ + if (PX4_ISFINITE(_manual.flaps) && _vcontrol_mode.flag_control_manual_enabled + && fabsf(_parameters.flaps_scale) > 0.01f) { + flap_control = 0.5f * (_manual.flaps + 1.0f) * _parameters.flaps_scale; + + } else if (_vcontrol_mode.flag_control_auto_enabled + && fabsf(_parameters.flaps_scale) > 0.01f) { + flap_control = _att_sp.apply_flaps ? 1.0f * _parameters.flaps_scale : 0.0f; + } + + // move the actual control value continuous with time, full flap travel in 1sec + if (fabsf(_flaps_applied - flap_control) > 0.01f) { + _flaps_applied += (_flaps_applied - flap_control) < 0 ? dt : -dt; + + } else { + _flaps_applied = flap_control; + } + + /* default flaperon to center */ + float flaperon_control = 0.0f; + + /* map flaperons by default to manual if valid */ + if (PX4_ISFINITE(_manual.aux2) && _vcontrol_mode.flag_control_manual_enabled + && fabsf(_parameters.flaperon_scale) > 0.01f) { + flaperon_control = 0.5f * (_manual.aux2 + 1.0f) * _parameters.flaperon_scale; + + } else if (_vcontrol_mode.flag_control_auto_enabled + && fabsf(_parameters.flaperon_scale) > 0.01f) { + flaperon_control = _att_sp.apply_flaps ? 1.0f * _parameters.flaperon_scale : 0.0f; + } + + // move the actual control value continuous with time, full flap travel in 1sec + if (fabsf(_flaperons_applied - flaperon_control) > 0.01f) { + _flaperons_applied += (_flaperons_applied - flaperon_control) < 0 ? dt : -dt; + + } else { + _flaperons_applied = flaperon_control; + } +} + FixedwingAttitudeControl *FixedwingAttitudeControl::instantiate(int argc, char *argv[]) { return new FixedwingAttitudeControl(); diff --git a/src/modules/fw_att_control/FixedwingAttitudeControl.hpp b/src/modules/fw_att_control/FixedwingAttitudeControl.hpp index 39fac9d7da..4347cbfb28 100644 --- a/src/modules/fw_att_control/FixedwingAttitudeControl.hpp +++ b/src/modules/fw_att_control/FixedwingAttitudeControl.hpp @@ -267,39 +267,18 @@ private: ECL_YawController _yaw_ctrl; ECL_WheelController _wheel_ctrl; + void control_flaps(const float dt); + /** * Update our local parameter cache. */ int parameters_update(); - /** - * Check for changes in vehicle control mode. - */ void vehicle_control_mode_poll(); - - /** - * Check for changes in manual inputs. - */ void vehicle_manual_poll(); - - /** - * Check for set triplet updates. - */ void vehicle_setpoint_poll(); - - /** - * Check for global position updates. - */ void global_pos_poll(); - - /** - * Check for vehicle status updates. - */ void vehicle_status_poll(); - - /** - * Check for vehicle land detected updates. - */ void vehicle_land_detected_poll(); };