// Configuration values
double Kp; // proportional gain
+ SGPropertyNode_ptr Kp_prop;
double alpha; // low pass filter weighing factor (usually 0.1)
double beta; // process value weighing factor for
// (usually 0.0)
double Ti; // Integrator time (sec)
+ SGPropertyNode_ptr Ti_prop;
double Td; // Derivator time (sec)
-
+ SGPropertyNode_ptr Td_prop;
double u_min; // Minimum output clamp
+ SGPropertyNode_ptr umin_prop;
double u_max; // Maximum output clamp
+ SGPropertyNode_ptr umax_prop;
// Previous state tracking values
double ep_n_1; // ep[n-1] (prop error)
// proportional component data
bool proportional;
double Kp;
+ SGPropertyNode_ptr Kp_prop;
SGPropertyNode_ptr offset_prop;
double offset_value;
double r_scale; // scale reference input from property system
double u_min; // Minimum output clamp
+ SGPropertyNode_ptr umin_prop;
double u_max; // Maximum output clamp
+ SGPropertyNode_ptr umax_prop;
public:
double Tf; // Filter time [s]
unsigned int samples; // Number of input samples to average
double rateOfChange; // The maximum allowable rate of change [1/s]
+ double gainFactor;
+ double output_min_clamp;
+ double output_max_clamp;
+ SGPropertyNode_ptr gain_prop;
+
deque <double> output;
deque <double> input;
- enum filterTypes { exponential, doubleExponential, movingAverage, noiseSpike };
+ enum filterTypes { exponential, doubleExponential, movingAverage,
+ noiseSpike, gain, reciprocal };
filterTypes filterType;
bool debug;