Description
A motion function p=f(s) where p(t) is an externally-provided sample, as a ZOH (zero order hold) of FOH (first order).
You must keep the setpoint p updated via multiple calls to SetSetpoint(), for example calling SetSetpoint() at each timestep in the simulation loop. It is assumed that one will later evaluate Get_p(), Get_p_ds() etc. in close vicinity of the setpoint (old setpoints are not saved), preferably ecactly at the same s, but in vicinity of s there will be extrapolation (after last s) and interpolation (before last s) according to: If in ZOH mode: value p will persist indefinitely until next call, derivative p_ds and p_dsds will be zero. If in FOH mode: value p will interpolate linearly from the previous value, derivative p_ds will be constant, p_dsds will be zero. If in SOH mode: value p will interpolate quadratically, derivative p_ds will be linear, p_dsds will be constant. Default: uses FOH mode. Use SetMode() to change it.
#include <ChFunctionPosition_setpoint.h>


| Public Types | |
| enum | eChSetpointMode { ZOH, FOH, SOH, OVERRIDE } | 
| Type of setpoint interpolation/extrapolation - zero order hold, first order hold, etc.  More... | |
| Public Member Functions | |
| ChFunctionPosition_setpoint (const ChFunctionPosition_setpoint &other) | |
| virtual ChFunctionPosition_setpoint * | Clone () const override | 
| "Virtual" copy constructor. | |
| void | SetMode (eChSetpointMode mmode) | 
| Sets the extrapolation/interpolation mode. | |
| eChSetpointMode | GetMode () | 
| Gets the extrapolation/interpolation mode. | |
| void | Reset (double ms=0) | 
| Use this to go back to s=0 (the SetSetpoint() function works only if called at increasing s values) | |
| virtual void | SetSetpoint (ChVector<> p_setpoint, double s) | 
| Set the setpoint, and compute its derivatives (speed, acceleration) automatically by backward differentiation (only if s is called at increasing small steps, most often s is time).  More... | |
| virtual void | SetSetpointAndDerivatives (ChVector<> p_setpoint, ChVector<> p_setpoint_ds, ChVector<> p_setpoint_dsds) | 
| Set the setpoint, and also its derivatives.  More... | |
| virtual ChVector | Get_p (double s) const override | 
| Return the p value of the function, at s, as p=f(s). | |
| virtual ChVector | Get_p_ds (double s) const override | 
| Return the dp/ds derivative of the function, at s. | |
| virtual ChVector | Get_p_dsds (double s) const override | 
| Return the ddp/dsds double derivative of the function, at s. | |
| virtual void | ArchiveOUT (ChArchiveOut &marchive) override | 
| Method to allow serialization of transient data to archives. | |
| virtual void | ArchiveIN (ChArchiveIn &marchive) override | 
| Method to allow de-serialization of transient data from archives. | |
|  Public Member Functions inherited from chrono::ChFunctionPosition | |
| ChFunctionPosition (const ChFunctionPosition &other) | |
| virtual void | Estimate_s_domain (double &smin, double &smax) const | 
| Return an estimate of the domain of the function argument.  More... | |
| virtual void | Estimate_boundingbox (ChVector<> &pmin, ChVector<> &pmax) const | 
| Return an estimate of the range of the function value.  More... | |
| virtual void | Update (const double t) | 
| Update could be implemented by children classes, ex. to launch callbacks. | |
Member Enumeration Documentation
◆ eChSetpointMode
Type of setpoint interpolation/extrapolation - zero order hold, first order hold, etc.
| Enumerator | |
|---|---|
| ZOH | Zero Order Hold: p constant, p_ds = p_dsds = 0 in neighbour of setpoint s. | 
| FOH | First Order Hold: p linear, p_ds constant, p_dsds = 0 in neighbour of setpoint s. | 
| SOH | First Order Hold: p parabolic, p_ds linear, p_dsds constant in neighbour of setpoint s. | 
| OVERRIDE | p, p_ds, p_dsds are set via SetSetpointAndDerivatives() and will be considered constant in Get_p(s) regardless of s until next SetSetpointAndDerivatives() | 
Member Function Documentation
◆ SetSetpoint()
| 
 | virtual | 
Set the setpoint, and compute its derivatives (speed, acceleration) automatically by backward differentiation (only if s is called at increasing small steps, most often s is time).
Note: each time must be called with increasing s so that internally it add sthe 'new' setpoint and scrolls the previous samples for computing extrapolation/interpolation, but if called multiple times with exactly the same s value, the buffer of past samples is not scrolled: it just recompute setpoint and derivatives according to the 'updated' setpoint. If in ZOH mode: value p will persist indefinitely until next call, derivative p_ds and p_dsds will be zero. If in FOH mode: value p will interpolate linearly from the previous value, derivative p_ds will be constant, p_dsds will be zero. If in SOH mode: value p will interpolate quadratically, derivative p_ds will be linear, p_dsds will be constant.
◆ SetSetpointAndDerivatives()
| 
 | inlinevirtual | 
Set the setpoint, and also its derivatives.
Moreover, changes the mode to eChSetpointMode::OVERRIDE, so all values will persist indefinitely until next call, that is multiple calls to Get_p(s) Get_p_ds() etc. will give same results (non interpolated) regardless of s.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/motion_functions/ChFunctionPosition_setpoint.h
- /builds/uwsbel/chrono/src/chrono/motion_functions/ChFunctionPosition_setpoint.cpp
