mirror of https://github.com/ArduPilot/ardupilot
APM: added a SCALING_SPEED parameter
this allows users to adjust the base speed used for scaling roll/pitch PIDs. This can be used to make PIDs work for both airspeed and non-airspeed control
This commit is contained in:
parent
caa16cbb54
commit
6243cf77a8
|
@ -14,7 +14,7 @@ static void stabilize()
|
||||||
if (airspeed.use()) {
|
if (airspeed.use()) {
|
||||||
float aspeed = airspeed.get_airspeed();
|
float aspeed = airspeed.get_airspeed();
|
||||||
if (aspeed > 0) {
|
if (aspeed > 0) {
|
||||||
speed_scaler = STANDARD_SPEED / aspeed;
|
speed_scaler = g.scaling_speed / aspeed;
|
||||||
} else {
|
} else {
|
||||||
speed_scaler = 2.0;
|
speed_scaler = 2.0;
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ static void calc_nav_roll()
|
||||||
#else
|
#else
|
||||||
// this is the old nav_roll calculation. We will use this for 2.50
|
// this is the old nav_roll calculation. We will use this for 2.50
|
||||||
// then remove for a future release
|
// then remove for a future release
|
||||||
float nav_gain_scaler = (float)g_gps->ground_speed / (STANDARD_SPEED * 100.0);
|
float nav_gain_scaler = 0.01 * g_gps->ground_speed / g.scaling_speed;
|
||||||
nav_gain_scaler = constrain(nav_gain_scaler, 0.2, 1.4);
|
nav_gain_scaler = constrain(nav_gain_scaler, 0.2, 1.4);
|
||||||
nav_roll = g.pidNavRoll.get_pid(bearing_error, nav_gain_scaler); //returns desired bank angle in degrees*100
|
nav_roll = g.pidNavRoll.get_pid(bearing_error, nav_gain_scaler); //returns desired bank angle in degrees*100
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -163,6 +163,7 @@ public:
|
||||||
k_param_kff_rudder_mix,
|
k_param_kff_rudder_mix,
|
||||||
k_param_kff_pitch_to_throttle,
|
k_param_kff_pitch_to_throttle,
|
||||||
k_param_kff_throttle_to_pitch,
|
k_param_kff_throttle_to_pitch,
|
||||||
|
k_param_scaling_speed,
|
||||||
|
|
||||||
//
|
//
|
||||||
// 210: flight modes
|
// 210: flight modes
|
||||||
|
@ -265,6 +266,9 @@ public:
|
||||||
AP_Float kff_pitch_to_throttle;
|
AP_Float kff_pitch_to_throttle;
|
||||||
AP_Float kff_throttle_to_pitch;
|
AP_Float kff_throttle_to_pitch;
|
||||||
|
|
||||||
|
// speed used for speed scaling
|
||||||
|
AP_Float scaling_speed;
|
||||||
|
|
||||||
// Crosstrack navigation
|
// Crosstrack navigation
|
||||||
//
|
//
|
||||||
AP_Float crosstrack_gain;
|
AP_Float crosstrack_gain;
|
||||||
|
@ -402,6 +406,7 @@ public:
|
||||||
kff_rudder_mix (RUDDER_MIX),
|
kff_rudder_mix (RUDDER_MIX),
|
||||||
kff_pitch_to_throttle (P_TO_T),
|
kff_pitch_to_throttle (P_TO_T),
|
||||||
kff_throttle_to_pitch (T_TO_P),
|
kff_throttle_to_pitch (T_TO_P),
|
||||||
|
scaling_speed (SCALING_SPEED),
|
||||||
|
|
||||||
crosstrack_gain (XTRACK_GAIN_SCALED),
|
crosstrack_gain (XTRACK_GAIN_SCALED),
|
||||||
crosstrack_entry_angle (XTRACK_ENTRY_ANGLE_CENTIDEGREE),
|
crosstrack_entry_angle (XTRACK_ENTRY_ANGLE_CENTIDEGREE),
|
||||||
|
|
|
@ -392,6 +392,13 @@ static const AP_Param::Info var_info[] PROGMEM = {
|
||||||
// @User: User
|
// @User: User
|
||||||
GSCALAR(airspeed_cruise_cm, "TRIM_ARSPD_CM"),
|
GSCALAR(airspeed_cruise_cm, "TRIM_ARSPD_CM"),
|
||||||
|
|
||||||
|
// @Param: SCALING_SPEED
|
||||||
|
// @DisplayName: speed used for speed scaling calculations
|
||||||
|
// @Description: Airspeed in m/s to use when calculating surface speed scaling. Note that changing this value will affect all PID values
|
||||||
|
// @Units: m/s
|
||||||
|
// @User: Advanced
|
||||||
|
GSCALAR(scaling_speed, "SCALING_SPEED"),
|
||||||
|
|
||||||
// @Param: MIN_GNDSPD_CM
|
// @Param: MIN_GNDSPD_CM
|
||||||
// @DisplayName: Minimum ground speed
|
// @DisplayName: Minimum ground speed
|
||||||
// @Description: Minimum ground speed in cm/s when under airspeed control
|
// @Description: Minimum ground speed in cm/s when under airspeed control
|
||||||
|
|
|
@ -817,11 +817,9 @@
|
||||||
// Developer Items
|
// Developer Items
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef STANDARD_SPEED
|
#ifndef SCALING_SPEED
|
||||||
# define STANDARD_SPEED 15.0
|
# define SCALING_SPEED 15.0
|
||||||
#define STANDARD_SPEED_SQUARED (STANDARD_SPEED * STANDARD_SPEED)
|
|
||||||
#endif
|
#endif
|
||||||
#define STANDARD_THROTTLE_SQUARED (THROTTLE_CRUISE * THROTTLE_CRUISE)
|
|
||||||
|
|
||||||
// use this to enable servos in HIL mode
|
// use this to enable servos in HIL mode
|
||||||
#ifndef HIL_SERVOS
|
#ifndef HIL_SERVOS
|
||||||
|
|
Loading…
Reference in New Issue