Class LinearInterpolationPredictorWrapped

Class Documentation

class LinearInterpolationPredictorWrapped

An object that is similar in every respect to the LinearInterpolationPredictor object except that it uses WrappedFloat’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 preceeding lastUpdateCallTime.

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.