Class LinearInterpolationPredictorWrapped
Class Documentation
-
class LinearInterpolationPredictorWrapped
An object that is similar in every respect to the
LinearInterpolationPredictor
object except that it usesWrappedFloat
’s instead.Public Functions
-
LinearInterpolationPredictorWrapped(float lowerBound, float upperBound)
- Parameters:
lowerBound – [in] Lower bound for linear interpolation WrappedFloat.
upperBound – [in] Upper bound for linear interpolation WrappedFloat.
-
void update(float newValue, uint32_t currTime)
Updates the interpolation using the newValue.
Note
Only call this when you receive a new value (use remote rx counter to tell when there is new data from the remote, for example).
Note
This function should be called with increasing values of
currTime
.- Parameters:
newValue – [in] The new data used in the interpolation.
currTime – [in] The time that this function was called.
-
inline float getInterpolatedValue(uint32_t currTime)
Returns the current value, that is: \(y\) in the equation \(y=slope\cdot (currTime - lastUpdateCallTime) + previousValue\) in the units of whatever value you are inputting in the
update
function.Note
Slope is defined by the previous two values passed into the
update
function, a period preceedinglastUpdateCallTime
.Note
Use a millisecond-resolution timer, e.g.
tap::arch::clock::getTimeMilliseconds()
.- Parameters:
currTime – [in] The current clock time, in ms.
- Returns:
The interpolated value.
-
void reset(float initialValue, uint32_t initialTime)
Resets the predictor. The slope will be reset to 0 and the initial values and time will be used to initialize the predictor.
Note
It is highly recommended that you call this function before calling
update
to “initialize” the system.- Parameters:
initialValue – [in] The value to set the previous value to when resetting.
initialTime – [in] The value to set the previous time to when resetting.
-
LinearInterpolationPredictorWrapped(float lowerBound, float upperBound)