Skip to content

Commit bc66dfe

Browse files
authored
dterm bugfix for angle-mode (emuflight#309)
* found by @Quickflash * correction as per @Quickflash
1 parent 0b75ed3 commit bc66dfe

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

src/main/flight/pid.c

+2-3
Original file line numberDiff line numberDiff line change
@@ -757,11 +757,10 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an
757757
if (pidCoefficient[axis].Kd > 0)
758758
{
759759
//filter Kd properly, no setpoint filtering
760-
const float pureRD = getSetpointRate(axis) - gyroRate; // cr - y
761-
const float pureError = pureRD - previousError[axis];
760+
const float pureError = errorRate - previousError[axis];
762761
const float pureMeasurement = -(gyro.gyroADCf[axis] - previousMeasurement[axis]);
763762
previousMeasurement[axis] = gyro.gyroADCf[axis];
764-
previousError[axis] = pureRD;
763+
previousError[axis] = errorRate;
765764
float dDelta = ((feathered_pids * pureMeasurement) + ((1 - feathered_pids) * pureError)) * pidFrequency; //calculating the dterm determine how much is calculated using measurement vs error
766765
//filter the dterm
767766
dDelta = dtermLowpassApplyFn((filter_t *)&dtermLowpass[axis], dDelta);

0 commit comments

Comments
 (0)