diff --git a/src/main/navigation/navigation.c b/src/main/navigation/navigation.c index 17d5e45636..15dfe3f29e 100755 --- a/src/main/navigation/navigation.c +++ b/src/main/navigation/navigation.c @@ -3213,9 +3213,9 @@ void navigationUsePIDs(void) NAV_DTERM_CUT_HZ ); - navPidInit(&posControl.pids.fw_heading, (float)pidProfile()->bank_fw.pid[PID_POS_HEADING].P / 100.0f, - (float)pidProfile()->bank_fw.pid[PID_POS_HEADING].I / 100.0f, - (float)pidProfile()->bank_fw.pid[PID_POS_HEADING].D / 100.0f, + navPidInit(&posControl.pids.fw_heading, (float)pidProfile()->bank_fw.pid[PID_POS_HEADING].P / 10.0f, + (float)pidProfile()->bank_fw.pid[PID_POS_HEADING].I / 10.0f, + (float)pidProfile()->bank_fw.pid[PID_POS_HEADING].D / 10.0f, 0.0f, 2.0f ); diff --git a/src/main/navigation/navigation_fixedwing.c b/src/main/navigation/navigation_fixedwing.c index 78a6b56040..9130b10e8a 100755 --- a/src/main/navigation/navigation_fixedwing.c +++ b/src/main/navigation/navigation_fixedwing.c @@ -354,6 +354,8 @@ static void updatePositionHeadingController_FW(timeUs_t currentTimeUs, timeDelta limit = pidProfile()->navFwPosHdgPidsumLimit * 100.0f; } + const pidControllerFlags_e yawPidFlags = errorIsDecreasing ? PID_SHRINK_INTEGRATOR : 0; + float yawAdjustment = navPidApply2( &posControl.pids.fw_heading, 0, @@ -361,7 +363,7 @@ static void updatePositionHeadingController_FW(timeUs_t currentTimeUs, timeDelta US2S(deltaMicros), -limit, limit, - pidFlags + yawPidFlags ) / 100.0f; DEBUG_SET(DEBUG_NAV_YAW, 0, posControl.pids.fw_heading.proportional);