4.0 defaults

address feedback

updated defaults and yaw I scaling

switch integrated yaw off by default
This commit is contained in:
Thorsten Laux 2019-03-05 09:33:14 +01:00 committed by Michael Keller
parent e44dacd9a6
commit 0ba3c5e468
1 changed files with 13 additions and 8 deletions

View File

@ -133,9 +133,9 @@ void resetPidProfile(pidProfile_t *pidProfile)
{ {
RESET_CONFIG(pidProfile_t, pidProfile, RESET_CONFIG(pidProfile_t, pidProfile,
.pid = { .pid = {
[PID_ROLL] = { 46, 65, 35, 60 }, [PID_ROLL] = { 42, 60, 35, 70 },
[PID_PITCH] = { 50, 75, 38, 60 }, [PID_PITCH] = { 46, 70, 38, 75 },
[PID_YAW] = { 45, 100, 0, 100 }, [PID_YAW] = { 35, 100, 0, 0 },
[PID_LEVEL] = { 50, 50, 75, 0 }, [PID_LEVEL] = { 50, 50, 75, 0 },
[PID_MAG] = { 40, 0, 0, 0 }, [PID_MAG] = { 40, 0, 0, 0 },
}, },
@ -167,16 +167,16 @@ void resetPidProfile(pidProfile_t *pidProfile)
.itermLimit = 400, .itermLimit = 400,
.throttle_boost = 5, .throttle_boost = 5,
.throttle_boost_cutoff = 15, .throttle_boost_cutoff = 15,
.iterm_rotation = true, .iterm_rotation = false,
.smart_feedforward = false, .smart_feedforward = false,
.iterm_relax = ITERM_RELAX_RP, .iterm_relax = ITERM_RELAX_RP,
.iterm_relax_cutoff = ITERM_RELAX_CUTOFF_DEFAULT, .iterm_relax_cutoff = 20,
.iterm_relax_type = ITERM_RELAX_SETPOINT, .iterm_relax_type = ITERM_RELAX_SETPOINT,
.acro_trainer_angle_limit = 20, .acro_trainer_angle_limit = 20,
.acro_trainer_lookahead_ms = 50, .acro_trainer_lookahead_ms = 50,
.acro_trainer_debug_axis = FD_ROLL, .acro_trainer_debug_axis = FD_ROLL,
.acro_trainer_gain = 75, .acro_trainer_gain = 75,
.abs_control_gain = 0, .abs_control_gain = 10,
.abs_control_limit = 90, .abs_control_limit = 90,
.abs_control_error_limit = 20, .abs_control_error_limit = 20,
.abs_control_cutoff = 11, .abs_control_cutoff = 11,
@ -196,11 +196,11 @@ void resetPidProfile(pidProfile_t *pidProfile)
.integrated_yaw_relax = 200, .integrated_yaw_relax = 200,
.thrustLinearization = 0, .thrustLinearization = 0,
.d_min = { 20, 22, 0 }, // roll, pitch, yaw .d_min = { 20, 22, 0 }, // roll, pitch, yaw
.d_min_gain = 20, .d_min_gain = 27,
.d_min_advance = 20, .d_min_advance = 20,
.motor_output_limit = 100, .motor_output_limit = 100,
.auto_profile_cell_count = AUTO_PROFILE_CELL_COUNT_STAY, .auto_profile_cell_count = AUTO_PROFILE_CELL_COUNT_STAY,
.transient_throttle_limit = 0, .transient_throttle_limit = 15,
); );
#ifdef USE_DYN_LPF #ifdef USE_DYN_LPF
pidProfile->dterm_lowpass_hz = 150; pidProfile->dterm_lowpass_hz = 150;
@ -573,6 +573,11 @@ void pidInitConfig(const pidProfile_t *pidProfile)
pidCoefficient[axis].Kd = DTERM_SCALE * pidProfile->pid[axis].D; pidCoefficient[axis].Kd = DTERM_SCALE * pidProfile->pid[axis].D;
pidCoefficient[axis].Kf = FEEDFORWARD_SCALE * (pidProfile->pid[axis].F / 100.0f); pidCoefficient[axis].Kf = FEEDFORWARD_SCALE * (pidProfile->pid[axis].F / 100.0f);
} }
#ifdef USE_INTEGRATED_YAW_CONTROL
if (!pidProfile->use_integrated_yaw) {
#endif
pidCoefficient[FD_YAW].Ki *= 2.5f;
}
levelGain = pidProfile->pid[PID_LEVEL].P / 10.0f; levelGain = pidProfile->pid[PID_LEVEL].P / 10.0f;
horizonGain = pidProfile->pid[PID_LEVEL].I / 10.0f; horizonGain = pidProfile->pid[PID_LEVEL].I / 10.0f;