From d21a009d405262e8d8fc3fcee30dec8c46956fa0 Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Fri, 30 Jan 2015 22:09:36 +0100 Subject: [PATCH] Change scale for I and D for inflight adjustments to PIDs of FP based PID. --- src/main/io/rc_controls.c | 12 ++++++------ src/test/unit/rc_controls_unittest.cc | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/io/rc_controls.c b/src/main/io/rc_controls.c index b73a867f1..9c79231c1 100644 --- a/src/main/io/rc_controls.c +++ b/src/main/io/rc_controls.c @@ -410,9 +410,9 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm break; case ADJUSTMENT_PITCH_ROLL_I: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { - newFloatValue = pidProfile->I_f[PIDPITCH] + (float)(delta / 10.0f); + newFloatValue = pidProfile->I_f[PIDPITCH] + (float)(delta / 100.0f); pidProfile->I_f[PIDPITCH] = constrainf(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c - newFloatValue = pidProfile->I_f[PIDROLL] + (float)(delta / 10.0f); + newFloatValue = pidProfile->I_f[PIDROLL] + (float)(delta / 100.0f); pidProfile->I_f[PIDROLL] = constrainf(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->I8[PIDPITCH] + delta; @@ -423,9 +423,9 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm break; case ADJUSTMENT_PITCH_ROLL_D: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { - newFloatValue = pidProfile->D_f[PIDPITCH] + (float)(delta / 10.0f); + newFloatValue = pidProfile->D_f[PIDPITCH] + (float)(delta / 1000.0f); pidProfile->D_f[PIDPITCH] = constrainf(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c - newFloatValue = pidProfile->D_f[PIDROLL] + (float)(delta / 10.0f); + newFloatValue = pidProfile->D_f[PIDROLL] + (float)(delta / 1000.0f); pidProfile->D_f[PIDROLL] = constrainf(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->D8[PIDPITCH] + delta; @@ -445,7 +445,7 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm break; case ADJUSTMENT_YAW_I: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { - newFloatValue = pidProfile->I_f[PIDYAW] + (float)(delta / 10.0f); + newFloatValue = pidProfile->I_f[PIDYAW] + (float)(delta / 100.0f); pidProfile->I_f[PIDYAW] = constrainf(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->I8[PIDYAW] + delta; @@ -454,7 +454,7 @@ void applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t adjustm break; case ADJUSTMENT_YAW_D: if (IS_PID_CONTROLLER_FP_BASED(pidProfile->pidController)) { - newFloatValue = pidProfile->D_f[PIDYAW] + (float)(delta / 10.0f); + newFloatValue = pidProfile->D_f[PIDYAW] + (float)(delta / 1000.0f); pidProfile->D_f[PIDYAW] = constrainf(newFloatValue, 0, 100); // FIXME magic numbers repeated in serial_cli.c } else { newValue = (int)pidProfile->D8[PIDYAW] + delta; diff --git a/src/test/unit/rc_controls_unittest.cc b/src/test/unit/rc_controls_unittest.cc index 3e611ce1e..c97348bff 100644 --- a/src/test/unit/rc_controls_unittest.cc +++ b/src/test/unit/rc_controls_unittest.cc @@ -674,12 +674,12 @@ TEST(RcControlsTest, processPIDIncreasePidController2) EXPECT_EQ(0.1f, pidProfile.P_f[PIDPITCH]); EXPECT_EQ(5.1f, pidProfile.P_f[PIDROLL]); EXPECT_EQ(7.1f, pidProfile.P_f[PIDYAW]); - EXPECT_EQ(10.1f, pidProfile.I_f[PIDPITCH]); - EXPECT_EQ(15.1f, pidProfile.I_f[PIDROLL]); - EXPECT_EQ(17.1f, pidProfile.I_f[PIDYAW]); - EXPECT_EQ(20.1f, pidProfile.D_f[PIDPITCH]); - EXPECT_EQ(25.1f, pidProfile.D_f[PIDROLL]); - EXPECT_EQ(27.1f, pidProfile.D_f[PIDYAW]); + EXPECT_EQ(10.01f, pidProfile.I_f[PIDPITCH]); + EXPECT_EQ(15.01f, pidProfile.I_f[PIDROLL]); + EXPECT_EQ(17.01f, pidProfile.I_f[PIDYAW]); + EXPECT_EQ(20.001f, pidProfile.D_f[PIDPITCH]); + EXPECT_EQ(25.001f, pidProfile.D_f[PIDROLL]); + EXPECT_EQ(27.001f, pidProfile.D_f[PIDYAW]); }