mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-06 07:53:43 +08:00
changed v_ctl_auto_pitch_igain to positive
already had positive definition for guidance_v (standard control), but negative for guidance_v_n (control new)
This commit is contained in:
@@ -167,7 +167,7 @@
|
||||
<!-- auto pitch inner loop -->
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.03"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
<define name="AUTO_PITCH_CLIMB_THROTTLE_INCREMENT" value="0.14"/>
|
||||
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
|
||||
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
<!-- auto pitch inner loop -->
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.05"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.01"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.01"/>
|
||||
<!--define name="AUTO_PITCH_CLIMB_THROTTLE_INCREMENT" value="0.14"/-->
|
||||
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
|
||||
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.02"/>
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.038"/> <!-- -0.03 -->
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.036"/> <!-- -0.03 -->
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
|
||||
<!-- airspeed control -->
|
||||
<define name="AUTO_AIRSPEED_SETPOINT" value="16."/>
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
|
||||
<!-- auto pitch inner loop -->
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.06"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
|
||||
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.08"/>
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.0"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
|
||||
<!-- airspeed control -->
|
||||
<define name="AUTO_AIRSPEED_SETPOINT" value="17."/>
|
||||
|
||||
@@ -150,7 +150,7 @@
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.08"/>
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.0"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
|
||||
<!-- airspeed control -->
|
||||
<define name="AUTO_AIRSPEED_SETPOINT" value="17."/>
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
|
||||
<!-- auto pitch inner loop -->
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.035000000149"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.01"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.01"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0"/>
|
||||
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
|
||||
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.02"/>
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.038"/> <!-- -0.03 -->
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.036"/> <!-- -0.03 -->
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
|
||||
<!-- airspeed control -->
|
||||
<define name="AUTO_AIRSPEED_SETPOINT" value="16."/>
|
||||
|
||||
@@ -265,10 +265,10 @@ http://paparazzi.enac.fr/w/index.php?title=Theory_of_Operation
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.20" unit="rad/(m/s)"/>
|
||||
<!--define name="AUTO_PITCH_PGAIN" value="0.0"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.0"/-->
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/-->
|
||||
<define name="AUTO_PITCH_PGAIN" value="0.052"/>
|
||||
<define name="AUTO_PITCH_DGAIN" value="-0.0"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="-0.065"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.065"/>
|
||||
|
||||
|
||||
<!-- airspeed control -->
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle" module="guidance/guidance_v" handler="SetCruiseThrottle" param="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>
|
||||
|
||||
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_igain" shortname="pitch_i" param="V_CTL_AUTO_PITCH_IGAIN"/>
|
||||
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_igain" shortname="pitch_i" param="V_CTL_AUTO_PITCH_IGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_dgain" shortname="pitch_d" param="V_CTL_AUTO_PITCH_DGAIN" module="guidance/guidance_v_n"/>
|
||||
|
||||
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_p" param="V_CTL_AUTO_THROTTLE_PGAIN"/>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle" module="guidance/guidance_v" handler="SetCruiseThrottle" param="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>
|
||||
|
||||
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_igain" shortname="pitch_i" param="V_CTL_AUTO_PITCH_IGAIN"/>
|
||||
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_igain" shortname="pitch_i" param="V_CTL_AUTO_PITCH_IGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_dgain" shortname="pitch_d" param="V_CTL_AUTO_PITCH_DGAIN" module="guidance/guidance_v_n"/>
|
||||
|
||||
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_p" param="V_CTL_AUTO_THROTTLE_PGAIN"/>
|
||||
|
||||
@@ -138,7 +138,7 @@ void v_ctl_init( void ) {
|
||||
#ifdef V_CTL_AUTO_PITCH_PGAIN
|
||||
/* "auto pitch" inner loop parameters */
|
||||
v_ctl_auto_pitch_pgain = ABS(V_CTL_AUTO_PITCH_PGAIN);
|
||||
v_ctl_auto_pitch_igain = V_CTL_AUTO_PITCH_IGAIN;
|
||||
v_ctl_auto_pitch_igain = ABS(V_CTL_AUTO_PITCH_IGAIN);
|
||||
v_ctl_auto_pitch_sum_err = 0.;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ void v_ctl_init( void ) {
|
||||
/* "auto pitch" inner loop parameters */
|
||||
v_ctl_auto_pitch_pgain = ABS(V_CTL_AUTO_PITCH_PGAIN);
|
||||
v_ctl_auto_pitch_dgain = V_CTL_AUTO_PITCH_DGAIN;
|
||||
v_ctl_auto_pitch_igain = V_CTL_AUTO_PITCH_IGAIN;
|
||||
v_ctl_auto_pitch_igain = ABS(V_CTL_AUTO_PITCH_IGAIN);
|
||||
v_ctl_auto_pitch_sum_err = 0.;
|
||||
|
||||
#ifdef USE_AIRSPEED
|
||||
@@ -211,9 +211,9 @@ static inline void v_ctl_set_pitch ( void ) {
|
||||
float d_err = err - last_err;
|
||||
last_err = err;
|
||||
|
||||
if (v_ctl_auto_pitch_igain < 0.) {
|
||||
if (v_ctl_auto_pitch_igain > 0.) {
|
||||
v_ctl_auto_pitch_sum_err += err*(1./60.);
|
||||
BoundAbs(v_ctl_auto_pitch_sum_err, V_CTL_AUTO_PITCH_MAX_SUM_ERR / (-v_ctl_auto_pitch_igain));
|
||||
BoundAbs(v_ctl_auto_pitch_sum_err, V_CTL_AUTO_PITCH_MAX_SUM_ERR / v_ctl_auto_pitch_igain);
|
||||
}
|
||||
|
||||
// PI loop + feedforward ctl
|
||||
@@ -221,7 +221,7 @@ static inline void v_ctl_set_pitch ( void ) {
|
||||
+ v_ctl_auto_throttle_pitch_of_vz_pgain * v_ctl_climb_setpoint
|
||||
- v_ctl_auto_pitch_pgain * err
|
||||
+ v_ctl_auto_pitch_dgain * d_err
|
||||
+ v_ctl_auto_pitch_igain * v_ctl_auto_pitch_sum_err;
|
||||
- v_ctl_auto_pitch_igain * v_ctl_auto_pitch_sum_err;
|
||||
|
||||
}
|
||||
|
||||
@@ -267,11 +267,11 @@ static inline void v_ctl_set_airspeed( void ) {
|
||||
last_err_vz = err_vz;
|
||||
if (v_ctl_auto_throttle_igain > 0.) {
|
||||
v_ctl_auto_throttle_sum_err += err_vz*AIRSPEED_LOOP_PERIOD;
|
||||
BoundAbs(v_ctl_auto_throttle_sum_err, V_CTL_AUTO_THROTTLE_MAX_SUM_ERR / (v_ctl_auto_throttle_igain));
|
||||
BoundAbs(v_ctl_auto_throttle_sum_err, V_CTL_AUTO_THROTTLE_MAX_SUM_ERR / v_ctl_auto_throttle_igain);
|
||||
}
|
||||
if (v_ctl_auto_pitch_igain < 0.) {
|
||||
if (v_ctl_auto_pitch_igain > 0.) {
|
||||
v_ctl_auto_pitch_sum_err += err_vz*AIRSPEED_LOOP_PERIOD;
|
||||
BoundAbs(v_ctl_auto_pitch_sum_err, V_CTL_AUTO_PITCH_MAX_SUM_ERR / (-v_ctl_auto_pitch_igain));
|
||||
BoundAbs(v_ctl_auto_pitch_sum_err, V_CTL_AUTO_PITCH_MAX_SUM_ERR / v_ctl_auto_pitch_igain);
|
||||
}
|
||||
|
||||
float err_airspeed = v_ctl_auto_airspeed_setpoint - estimator_airspeed;
|
||||
@@ -300,7 +300,7 @@ static inline void v_ctl_set_airspeed( void ) {
|
||||
+ v_ctl_auto_throttle_pitch_of_vz_pgain * v_ctl_climb_setpoint
|
||||
- v_ctl_auto_pitch_pgain * err_vz
|
||||
+ v_ctl_auto_pitch_dgain * d_err_vz
|
||||
+ v_ctl_auto_pitch_igain * v_ctl_auto_pitch_sum_err
|
||||
- v_ctl_auto_pitch_igain * v_ctl_auto_pitch_sum_err
|
||||
- v_ctl_auto_airspeed_pitch_pgain * err_airspeed
|
||||
- v_ctl_auto_airspeed_pitch_dgain * d_err_airspeed
|
||||
- v_ctl_auto_airspeed_pitch_igain * v_ctl_auto_airspeed_pitch_sum_err;
|
||||
|
||||
Reference in New Issue
Block a user