41 maxIntegral(o.maxIntegral),
42 conditionalIntegralErrorTreshold(o.conditionalIntegralErrorTreshold),
43 derivative(o.derivative),
44 previousError(o.previousError),
45 processValue(o.processValue),
47 lastUpdateTime(o.lastUpdateTime),
48 controlValue(o.controlValue),
49 controlValueDerivation(o.controlValueDerivation),
50 maxControlValue(o.maxControlValue),
51 maxDerivation(o.maxDerivation),
53 limitless(o.limitless),
54 threadSafe(o.threadSafe),
55 differentialFilter(
std::move(o.differentialFilter)),
56 pdOutputFilter(
std::move(o.pdOutputFilter))
63 maxIntegral(o.maxIntegral),
64 conditionalIntegralErrorTreshold(o.conditionalIntegralErrorTreshold),
65 derivative(o.derivative),
66 previousError(o.previousError),
67 processValue(o.processValue),
69 lastUpdateTime(o.lastUpdateTime),
70 controlValue(o.controlValue),
71 controlValueDerivation(o.controlValueDerivation),
72 maxControlValue(o.maxControlValue),
73 maxDerivation(o.maxDerivation),
75 limitless(o.limitless),
76 threadSafe(o.threadSafe),
77 differentialFilter(o.differentialFilter->clone()),
78 pdOutputFilter(o.pdOutputFilter->clone())
139 controlValueDerivation(0),
140 maxControlValue(maxControlValue),
141 maxDerivation(maxDerivation),
142 limitless(limitless),
143 threadSafe(threadSafe)
150 ScopedRecursiveLockPtr lock = getLock();
169 return std::make_unique<ScopedRecursiveLock>(mutex);
173 return ScopedRecursiveLockPtr();
179 ScopedRecursiveLockPtr lock = getLock();
188 update(
dt, measuredValue, targetValue);
195 ScopedRecursiveLockPtr lock = getLock();
201 ScopedRecursiveLockPtr lock = getLock();
207 ScopedRecursiveLockPtr lock = getLock();
213 ScopedRecursiveLockPtr lock = getLock();
253 pdControlValue =
pdOutputFilter->update(deltaSec, pdControlValue);
258 double deriv = (
controlValue - oldControlValue) / deltaSec;
275 ScopedRecursiveLockPtr lock = getLock();