Files
PX4-Autopilot/src/modules/fw_rate_control/fw_rate_control_params.c
T
Silvan Fuhrer ad769db8d6 FW Rate Controller: allow to enable/disable yaw axis in Acro (#21566)
* RateControl: rename setGains to setPidGains to be more precise

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

* FW Rate controller: only allow to disable Yaw in Acro, not roll and pitch

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>

---------

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2023-05-26 15:09:29 +02:00

553 lines
12 KiB
C

/****************************************************************************
*
* Copyright (c) 2013-2023 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 fw_rate_control_params.c
*
* Parameters defined by the fixed-wing attitude control task
*
* @author Lorenz Meier <lorenz@px4.io>
* @author Thomas Gubler <thomas@px4.io>
*/
/*
* Controller parameters, accessible via MAVLink
*
*/
/**
* Minimum Airspeed (CAS)
*
* The minimal airspeed (calibrated airspeed) the user is able to command.
* Further, if the airspeed falls below this value, the TECS controller will try to
* increase airspeed more aggressively.
* Has to be set according to the vehicle's stall speed (which should be set in FW_AIRSPD_STALL),
* with some margin between the stall speed and minimum airspeed.
* This value corresponds to the desired minimum speed with the default load factor (level flight, default weight),
* and is automatically adpated to the current load factor (calculated from roll setpoint and WEIGHT_GROSS/WEIGHT_BASE).
*
* @unit m/s
* @min 0.5
* @max 40
* @decimal 1
* @increment 0.5
* @group FW TECS
*/
PARAM_DEFINE_FLOAT(FW_AIRSPD_MIN, 10.0f);
/**
* Maximum Airspeed (CAS)
*
* The maximal airspeed (calibrated airspeed) the user is able to command.
*
* @unit m/s
* @min 0.5
* @max 40
* @decimal 1
* @increment 0.5
* @group FW TECS
*/
PARAM_DEFINE_FLOAT(FW_AIRSPD_MAX, 20.0f);
/**
* Airspeed mode
*
* On vehicles without airspeed sensor this parameter can be used to
* enable flying without an airspeed reading
*
* @value 0 Use airspeed in controller
* @value 1 Do not use airspeed in controller
* @group FW Attitude Control
*/
PARAM_DEFINE_INT32(FW_ARSP_MODE, 0);
/**
* Trim (Cruise) Airspeed
*
* The trim CAS (calibrated airspeed) of the vehicle. If an airspeed controller is active,
* this is the default airspeed setpoint that the controller will try to achieve.
*
* @unit m/s
* @min 0.5
* @max 40
* @decimal 1
* @increment 0.5
* @group FW TECS
*/
PARAM_DEFINE_FLOAT(FW_AIRSPD_TRIM, 15.0f);
/**
* Stall Airspeed (CAS)
*
* The stall airspeed (calibrated airspeed) of the vehicle.
* It is used for airspeed sensor failure detection and for the control
* surface scaling airspeed limits.
*
* @unit m/s
* @min 0.5
* @max 40
* @decimal 1
* @increment 0.5
* @group FW TECS
*/
PARAM_DEFINE_FLOAT(FW_AIRSPD_STALL, 7.0f);
/**
* Pitch rate proportional gain.
*
* @unit %/rad/s
* @min 0.0
* @max 1.0
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_PR_P, 0.08f);
/**
* Pitch rate derivative gain.
*
* Pitch rate differential gain.
*
* @unit %/rad/s
* @min 0.0
* @max 1.0
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_PR_D, 0.f);
/**
* Pitch rate integrator gain.
*
* This gain defines how much control response will result out of a steady
* state error. It trims any constant error.
*
* @unit %/rad
* @min 0.0
* @max 0.5
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_PR_I, 0.1f);
/**
* Pitch rate integrator limit
*
* The portion of the integrator part in the control surface deflection is
* limited to this value
*
* @min 0.0
* @max 1.0
* @decimal 2
* @increment 0.05
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_PR_IMAX, 0.4f);
/**
* Roll rate proportional Gain
*
* @unit %/rad/s
* @min 0.0
* @max 1.0
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_RR_P, 0.05f);
/**
* Roll rate derivative Gain
*
* Roll rate differential gain. Small values help reduce fast oscillations.
* If value is too big oscillations will appear again.
*
* @unit %/rad/s
* @min 0.0
* @max 1.0
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_RR_D, 0.00f);
/**
* Roll rate integrator Gain
*
* This gain defines how much control response will result out of a steady
* state error. It trims any constant error.
*
* @unit %/rad
* @min 0.0
* @max 0.2
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_RR_I, 0.1f);
/**
* Roll integrator anti-windup
*
* The portion of the integrator part in the control surface deflection is limited to this value.
*
* @min 0.0
* @max 1.0
* @decimal 2
* @increment 0.05
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_RR_IMAX, 0.2f);
/**
* Yaw rate proportional gain
*
* @unit %/rad/s
* @min 0.0
* @max 1.0
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_YR_P, 0.05f);
/**
* Yaw rate derivative gain
*
* Yaw rate differential gain. Small values help reduce fast oscillations.
* If value is too big oscillations will appear again.
*
* @unit %/rad/s
* @min 0.0
* @max 1.0
* @decimal 3
* @increment 0.005
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_YR_D, 0.0f);
/**
* Yaw rate integrator gain
*
* This gain defines how much control response will result out of a steady
* state error. It trims any constant error.
*
* @unit %/rad
* @min 0.0
* @max 50.0
* @decimal 1
* @increment 0.5
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_YR_I, 0.1f);
/**
* Yaw rate integrator limit
*
* The portion of the integrator part in the control surface deflection is
* limited to this value
*
* @min 0.0
* @max 1.0
* @decimal 2
* @increment 0.05
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_YR_IMAX, 0.2f);
/**
* Roll rate feed forward
*
* Direct feed forward from rate setpoint to control surface output. Use this
* to obtain a tigher response of the controller without introducing
* noise amplification.
*
* @unit %/rad/s
* @min 0.0
* @max 10.0
* @decimal 2
* @increment 0.05
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_RR_FF, 0.5f);
/**
* Pitch rate feed forward
*
* Direct feed forward from rate setpoint to control surface output
*
* @unit %/rad/s
* @min 0.0
* @max 10.0
* @decimal 2
* @increment 0.05
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_PR_FF, 0.5f);
/**
* Yaw rate feed forward
*
* Direct feed forward from rate setpoint to control surface output
*
* @unit %/rad/s
* @min 0.0
* @max 10.0
* @decimal 2
* @increment 0.05
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_YR_FF, 0.3f);
/**
* Acro body x max rate.
*
* This is the rate the controller is trying to achieve if the user applies full roll
* stick input in acro mode.
*
* @min 45
* @max 720
* @unit deg
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_ACRO_X_MAX, 90);
/**
* Acro body pitch max rate setpoint.
*
* @min 45
* @max 720
* @unit deg
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_ACRO_Y_MAX, 90);
/**
* Acro body yaw max rate setpoint.
*
* @min 10
* @max 180
* @unit deg
* @group FW Rate Control
*/
PARAM_DEFINE_FLOAT(FW_ACRO_Z_MAX, 45);
/**
* Enable throttle scale by battery level
*
* This compensates for voltage drop of the battery over time by attempting to
* normalize performance across the operating range of the battery.
*
* @boolean
* @group FW Rate Control
*/
PARAM_DEFINE_INT32(FW_BAT_SCALE_EN, 0);
/**
* Enable airspeed scaling
*
* This enables a logic that automatically adjusts the output of the rate controller to take
* into account the real torque produced by an aerodynamic control surface given
* the current deviation from the trim airspeed (FW_AIRSPD_TRIM).
*
* Enable when using aerodynamic control surfaces (e.g.: plane)
* Disable when using rotor wings (e.g.: autogyro)
*
* @boolean
* @group FW Rate Control
*/
PARAM_DEFINE_INT32(FW_ARSP_SCALE_EN, 1);
/**
* Roll trim increment at minimum airspeed
*
* This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MIN.
*
* @group FW Rate Control
* @min -0.25
* @max 0.25
* @decimal 2
* @increment 0.01
*/
PARAM_DEFINE_FLOAT(FW_DTRIM_R_VMIN, 0.0f);
/**
* Pitch trim increment at minimum airspeed
*
* This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MIN.
*
* @group FW Rate Control
* @min -0.25
* @max 0.25
* @decimal 2
* @increment 0.01
*/
PARAM_DEFINE_FLOAT(FW_DTRIM_P_VMIN, 0.0f);
/**
* Yaw trim increment at minimum airspeed
*
* This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MIN.
*
* @group FW Rate Control
* @min -0.25
* @max 0.25
* @decimal 2
* @increment 0.01
*/
PARAM_DEFINE_FLOAT(FW_DTRIM_Y_VMIN, 0.0f);
/**
* Roll trim increment at maximum airspeed
*
* This increment is added to TRIM_ROLL when airspeed is FW_AIRSPD_MAX.
*
* @group FW Rate Control
* @min -0.25
* @max 0.25
* @decimal 2
* @increment 0.01
*/
PARAM_DEFINE_FLOAT(FW_DTRIM_R_VMAX, 0.0f);
/**
* Pitch trim increment at maximum airspeed
*
* This increment is added to TRIM_PITCH when airspeed is FW_AIRSPD_MAX.
*
* @group FW Rate Control
* @min -0.25
* @max 0.25
* @decimal 2
* @increment 0.01
*/
PARAM_DEFINE_FLOAT(FW_DTRIM_P_VMAX, 0.0f);
/**
* Yaw trim increment at maximum airspeed
*
* This increment is added to TRIM_YAW when airspeed is FW_AIRSPD_MAX.
*
* @group FW Rate Control
* @min -0.25
* @max 0.25
* @decimal 2
* @increment 0.01
*/
PARAM_DEFINE_FLOAT(FW_DTRIM_Y_VMAX, 0.0f);
/**
* Manual roll scale
*
* Scale factor applied to the desired roll actuator command in full manual mode. This parameter allows
* to adjust the throws of the control surfaces.
*
* @unit norm
* @min 0.0
* @max 1.0
* @decimal 2
* @increment 0.01
* @group FW Attitude Control
*/
PARAM_DEFINE_FLOAT(FW_MAN_R_SC, 1.0f);
/**
* Manual pitch scale
*
* Scale factor applied to the desired pitch actuator command in full manual mode. This parameter allows
* to adjust the throws of the control surfaces.
*
* @unit norm
* @min 0.0
* @decimal 2
* @increment 0.01
* @group FW Attitude Control
*/
PARAM_DEFINE_FLOAT(FW_MAN_P_SC, 1.0f);
/**
* Manual yaw scale
*
* Scale factor applied to the desired yaw actuator command in full manual mode. This parameter allows
* to adjust the throws of the control surfaces.
*
* @unit norm
* @min 0.0
* @decimal 2
* @increment 0.01
* @group FW Attitude Control
*/
PARAM_DEFINE_FLOAT(FW_MAN_Y_SC, 1.0f);
/**
* Roll control to yaw control feedforward gain.
*
* This gain can be used to counteract the "adverse yaw" effect for fixed wings.
* When the plane enters a roll it will tend to yaw the nose out of the turn.
* This gain enables the use of a yaw actuator to counteract this effect.
*
* @min 0.0
* @decimal 1
* @increment 0.01
* @group FW Attitude Control
*/
PARAM_DEFINE_FLOAT(FW_RLL_TO_YAW_FF, 0.0f);
/**
* Spoiler input in manual flight
*
* Chose source for manual setting of spoilers in manual flight modes.
*
* @value 0 Disabled
* @value 1 Flaps channel
* @value 2 Aux1
* @group FW Attitude Control
*/
PARAM_DEFINE_INT32(FW_SPOILERS_MAN, 0);
/**
* Enable yaw rate controller in Acro
*
* If this parameter is set to 1, the yaw rate controller is enabled in Fixed-wing Acro mode.
* Otherwise the pilot commands directly the yaw actuator.
* It is disabled by default because an active yaw rate controller will fight against the
* natural turn coordination of the plane.
*
* @boolean
* @group FW Rate Control
*/
PARAM_DEFINE_INT32(FW_ACRO_YAW_EN, 0);