From 6839f6c89b51aa94a3961c0ea03470e84409b5f8 Mon Sep 17 00:00:00 2001 From: Bill Geyer Date: Fri, 20 May 2022 22:45:12 -0400 Subject: [PATCH] AC_AutoTune: Tradheli-modify I gain for angle p and tune check --- libraries/AC_AutoTune/AC_AutoTune_Heli.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp b/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp index 4bf8756158..6a751aef23 100644 --- a/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp +++ b/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp @@ -502,8 +502,8 @@ void AC_AutoTune_Heli::load_test_gains() float rate_p, rate_i, rate_d; switch (axis) { case ROLL: - if (tune_type == SP_UP) { - rate_i = orig_roll_ri; + if (tune_type == SP_UP || tune_type == TUNE_CHECK) { + rate_i = tune_roll_rff*AUTOTUNE_FFI_RATIO_FINAL; } else { // freeze integrator to hold trim by making i term small during rate controller tuning rate_i = 0.01f * orig_roll_ri; @@ -518,8 +518,8 @@ void AC_AutoTune_Heli::load_test_gains() load_gain_set(ROLL, rate_p, rate_i, rate_d, tune_roll_rff, tune_roll_sp, tune_roll_accel, orig_roll_fltt, 0.0f, 0.0f); break; case PITCH: - if (tune_type == SP_UP) { - rate_i = orig_pitch_ri; + if (tune_type == SP_UP || tune_type == TUNE_CHECK) { + rate_i = tune_pitch_rff*AUTOTUNE_FFI_RATIO_FINAL; } else { // freeze integrator to hold trim by making i term small during rate controller tuning rate_i = 0.01f * orig_pitch_ri; @@ -534,8 +534,13 @@ void AC_AutoTune_Heli::load_test_gains() load_gain_set(PITCH, rate_p, rate_i, rate_d, tune_pitch_rff, tune_pitch_sp, tune_pitch_accel, orig_pitch_fltt, 0.0f, 0.0f); break; case YAW: - // freeze integrator to hold trim by making i term small during rate controller tuning - load_gain_set(YAW, tune_yaw_rp, tune_yaw_rp*0.01f, tune_yaw_rd, tune_yaw_rff, tune_yaw_sp, tune_yaw_accel, orig_yaw_fltt, tune_yaw_rLPF, 0.0f); + if (tune_type == SP_UP || tune_type == TUNE_CHECK) { + rate_i = tune_yaw_rp*AUTOTUNE_YAW_PI_RATIO_FINAL; + } else { + // freeze integrator to hold trim by making i term small during rate controller tuning + rate_i = 0.01f * orig_yaw_ri; + } + load_gain_set(YAW, tune_yaw_rp, rate_i, tune_yaw_rd, tune_yaw_rff, tune_yaw_sp, tune_yaw_accel, orig_yaw_fltt, tune_yaw_rLPF, 0.0f); break; } }