10 #include <initializer_list>
14 #include "CircularBuffer.h"
68 std::initializer_list<double> ffGains,
69 std::initializer_list<double> fbGains);
71 std::initializer_list<double> ffGains,
72 const std::vector<double>& fbGains);
74 const std::vector<double>& ffGains,
75 std::initializer_list<double> fbGains);
77 const std::vector<double>& ffGains,
78 const std::vector<double>& fbGains);
82 double timeConstant,
double period);
84 double timeConstant,
double period);
89 double Get()
const override;
90 void Reset()
override;
98 std::vector<double> m_inputGains;
99 std::vector<double> m_outputGains;
static LinearDigitalFilter SinglePoleIIR(std::shared_ptr< PIDSource > source, double timeConstant, double period)
Creates a one-pole IIR low-pass filter of the form: y[n] = (1-gain)*x[n] + gain*y[n-1] where gain = e...
Definition: LinearDigitalFilter.cpp:75
LinearDigitalFilter(std::shared_ptr< PIDSource > source, std::initializer_list< double > ffGains, std::initializer_list< double > fbGains)
Create a linear FIR or IIR filter.
Definition: LinearDigitalFilter.cpp:19
Interface for filters.
Definition: Filter.h:16
static LinearDigitalFilter MovingAverage(std::shared_ptr< PIDSource > source, unsigned int taps)
Creates a K-tap FIR moving average filter of the form: y[n] = 1/k * (x[k] + x[k-1] + ...
Definition: LinearDigitalFilter.cpp:110
double Get() const override
Returns the current filter estimate without also inserting new data as PIDGet() would do...
Definition: LinearDigitalFilter.cpp:121
void Reset() override
Reset the filter state.
Definition: LinearDigitalFilter.cpp:138
static LinearDigitalFilter HighPass(std::shared_ptr< PIDSource > source, double timeConstant, double period)
Creates a first-order high-pass filter of the form: y[n] = gain*x[n] + (-gain)*x[n-1] + gain*y[n-1] w...
Definition: LinearDigitalFilter.cpp:93
double PIDGet() override
Calculates the next value of the filter.
Definition: LinearDigitalFilter.cpp:148
This class implements a linear, digital filter.
Definition: LinearDigitalFilter.h:65