From ddcb8342ef7f40313f385f3e554eb31df3555b55 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Sun, 7 May 2023 18:36:26 +0530 Subject: [PATCH] Fix Dervivative equation wrong brackets (#1693) --- pkg/sfu/buffer/rtpstats.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/sfu/buffer/rtpstats.go b/pkg/sfu/buffer/rtpstats.go index 9b274f4e3..6ef8a60da 100644 --- a/pkg/sfu/buffer/rtpstats.go +++ b/pkg/sfu/buffer/rtpstats.go @@ -194,7 +194,9 @@ func NewRTPStats(params RTPStatsParams) *RTPStats { r.pidController.SetGains(2.0, 0.5, 0.25) r.pidController.SetDerivativeLPF(0.02) - r.pidController.SetOutputLimits(-0.025*float64(params.ClockRate), 0.025*float64(params.ClockRate)) + outMin, outMax := -0.025*float64(params.ClockRate), 0.025*float64(params.ClockRate) + r.pidController.SetOutputLimits(outMin, outMax) + r.pidController.SetIntegralLimits(outMin/2.0, outMax/2.0) return r } @@ -1837,7 +1839,7 @@ func (p *PIDController) Update(setpoint, measurement float64, at time.Time) floa } } - p.dVal = (-2.0 * p.kd * (measurement - p.prevMeasurement)) + (((2.0*p.tau - duration) * p.dVal) / (2.0*p.tau + duration)) + p.dVal = (-2.0*p.kd*(measurement-p.prevMeasurement) + (2.0*p.tau-duration)*p.dVal) / (2.0*p.tau + duration) output := proportional + p.iVal + p.dVal if p.isOutLimitsSet {