diff --git a/src/modules/fw_att_control/CMakeLists.txt b/src/modules/fw_att_control/CMakeLists.txt index dd503140c4..75dd515ddb 100644 --- a/src/modules/fw_att_control/CMakeLists.txt +++ b/src/modules/fw_att_control/CMakeLists.txt @@ -38,7 +38,6 @@ px4_add_module( FixedwingAttitudeControl.cpp FixedwingAttitudeControl.hpp - ecl_controller.cpp fw_pitch_controller.cpp fw_roll_controller.cpp fw_wheel_controller.cpp diff --git a/src/modules/fw_att_control/FixedwingAttitudeControl.cpp b/src/modules/fw_att_control/FixedwingAttitudeControl.cpp index 55dec9fab8..81be49634e 100644 --- a/src/modules/fw_att_control/FixedwingAttitudeControl.cpp +++ b/src/modules/fw_att_control/FixedwingAttitudeControl.cpp @@ -322,21 +322,6 @@ void FixedwingAttitudeControl::Run() } } - /* Prepare data for attitude controllers */ - ECL_ControlData control_input{}; - control_input.roll = euler_angles.phi(); - control_input.pitch = euler_angles.theta(); - control_input.yaw = euler_angles.psi(); - control_input.body_z_rate = angular_velocity.xyz[2]; - control_input.roll_setpoint = _att_sp.roll_body; - control_input.pitch_setpoint = _att_sp.pitch_body; - control_input.yaw_setpoint = _att_sp.yaw_body; - control_input.euler_pitch_rate_setpoint = _pitch_ctrl.get_euler_rate_setpoint(); - control_input.euler_yaw_rate_setpoint = _yaw_ctrl.get_euler_rate_setpoint(); - control_input.airspeed_constrained = get_airspeed_constrained(); - control_input.groundspeed = _groundspeed; - control_input.groundspeed_scaler = groundspeed_scale; - /* Run attitude controllers */ if (_vcontrol_mode.flag_control_attitude_enabled && _in_fw_or_transition_wo_tailsitter_transition) { diff --git a/src/modules/fw_att_control/ecl_controller.cpp b/src/modules/fw_att_control/ecl_controller.cpp deleted file mode 100644 index 324ff8c376..0000000000 --- a/src/modules/fw_att_control/ecl_controller.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2020-2022 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name ECL nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/** - * @file ecl_controller.cpp - * Definition of base class for other controllers - * - * @author Lorenz Meier - * @author Thomas Gubler - * - * Acknowledgements: - * - * The control design is based on a design - * by Paul Riseborough and Andrew Tridgell, 2013, - * which in turn is based on initial work of - * Jonathan Challinger, 2012. - */ - -#include "ecl_controller.h" - -#include -#include - -ECL_Controller::ECL_Controller() : - _last_run(0), - _tc(0.1f), - _k_p(0.0f), - _k_i(0.0f), - _k_ff(0.0f), - _integrator_max(0.0f), - _max_rate(0.0f), - _last_output(0.0f), - _integrator(0.0f), - _euler_rate_setpoint(0.0f), - _body_rate_setpoint(0.0f) -{ -} diff --git a/src/modules/fw_att_control/ecl_controller.h b/src/modules/fw_att_control/ecl_controller.h deleted file mode 100644 index 4fc2832d34..0000000000 --- a/src/modules/fw_att_control/ecl_controller.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2020-2022 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name PX4 nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/** - * @file ecl_controller.h - * Definition of base class for other controllers - * - * @author Lorenz Meier - * @author Thomas Gubler - * - * Acknowledgements: - * - * The control design is based on a design - * by Paul Riseborough and Andrew Tridgell, 2013, - * which in turn is based on initial work of - * Jonathan Challinger, 2012. - */ - -#pragma once - -#include -#include - -struct ECL_ControlData { - float roll; - float pitch; - float yaw; - float body_z_rate; - float roll_setpoint; - float pitch_setpoint; - float yaw_setpoint; - float euler_pitch_rate_setpoint; - float euler_yaw_rate_setpoint; - float airspeed_constrained; - float groundspeed; - float groundspeed_scaler; -}; - -class ECL_Controller -{ -public: - ECL_Controller(); - virtual ~ECL_Controller() = default; - - /** - * @brief Calculates both euler and body rate setpoints. Has different implementations for all body axes. - * - * @param dt Time step [s] - * @param ctrl_data Various control inputs (attitude, body rates, attitdue stepoints, euler rate setpoints, current speeed) - * @return Body rate setpoint [rad/s] - */ - virtual float control_attitude(const float dt, const ECL_ControlData &ctl_data) = 0; - - void set_time_constant(float time_constant) { _tc = time_constant; } - void set_k_p(float k_p) { _k_p = k_p; } - void set_k_i(float k_i) { _k_i = k_i; } - void set_k_ff(float k_ff) { _k_ff = k_ff; } - void set_integrator_max(float max) { _integrator_max = max; } - void set_max_rate(float max_rate) { _max_rate = max_rate; } - - float get_euler_rate_setpoint() { return _euler_rate_setpoint; } - float get_body_rate_setpoint() { return _body_rate_setpoint; } - float get_integrator() { return _integrator; } - - void reset_integrator() { _integrator = 0.f; } - -protected: - uint64_t _last_run; - float _tc; - float _k_p; - float _k_i; - float _k_ff; - float _integrator_max; - float _max_rate; - float _last_output; - float _integrator; - float _euler_rate_setpoint; - float _body_rate_setpoint; -};