TVM  0.9.2
tvm::task_dynamics::VelocityDamper Class Reference

#include <tvm/task_dynamics/VelocityDamper.h>

Inheritance diagram for tvm::task_dynamics::VelocityDamper:
Collaboration diagram for tvm::task_dynamics::VelocityDamper:

Classes

class  AnisotropicConfig
 
class  Config
 
class  Impl
 

Public Member Functions

 VelocityDamper (const Config &config, double big=constant::big_number)
 Velocity damper for first order dynamics. More...
 
 VelocityDamper (const AnisotropicConfig &config, double big=constant::big_number)
 Velocity damper for first order dynamics. More...
 
 VelocityDamper (double dt, const Config &config, double big=constant::big_number)
 Velocity damper for second order dynamics. More...
 
 VelocityDamper (double dt, const AnisotropicConfig &config, double big=constant::big_number)
 Velocity damper for second order dynamics. More...
 
 ~VelocityDamper () override=default
 
- Public Member Functions inherited from tvm::task_dynamics::abstract::TaskDynamics
virtual ~TaskDynamics ()=default
 
std::unique_ptr< TaskDynamicsImplimpl (FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs) const
 
Order order () const
 

Protected Member Functions

std::unique_ptr< abstract::TaskDynamicsImplimpl_ (FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs) const override
 
Order order_ () const override
 
template<typename Derived , typename... Args>
std::unique_ptr< abstract::TaskDynamicsImplimpl_ (FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs, Args &&... args) const
 

Detailed Description

A first or second order dynamic task implementing the so-called velocity damper of Faverjon and Tournassoud. For a lower bound tasks e>=0, we have, for e<=di:

  • first order: dot{e}_i* = -xsi * (e_i-ds)/(di-ds)
  • second order: ddot{e}_i* = -xsi/dt * (e_i-ds)/(di-ds) -dot{e}_i/dt

and for e>di:

  • first order: dot{e}* = big
  • second order: ddot{e}* = big

For upper bound tasks e <= 0 this is adapted to get the same behavior as -e >= 0.

xsi can be computed automatically (see autoXsi parameter).

Attention
For xsi to be computed automatically in the first order case, the value of dot{e} is used.
To know when to compute xsi in automatic mode, the class keeps data on the last iterations. Consequently if the velocity damper is applied to a function f with variable x, its output value will be the same if x keeps the same value x0 and velocity v0 between two consecutive updates, but the same entries x0 and v0 may give different values for unrelated updates, because of history differences.
This remark only applies when the automatic computation of xsi is required.

Constructor & Destructor Documentation

◆ VelocityDamper() [1/4]

tvm::task_dynamics::VelocityDamper::VelocityDamper ( const Config config,
double  big = constant::big_number 
)

Velocity damper for first order dynamics.

Parameters
configconfiguration of the damper.
See also
VelocityDamperConfig
Parameters
bigvalue used as infinity.
Attention
When autoXsi is true, the value update will declare a dependency to the Velocity of the error function. It is the user responsibility to ensure the velocity is correctly provided (in particular, this might require the value of the variables first derivatives to be set correctly).

◆ VelocityDamper() [2/4]

tvm::task_dynamics::VelocityDamper::VelocityDamper ( const AnisotropicConfig config,
double  big = constant::big_number 
)

Velocity damper for first order dynamics.

Parameters
configconfiguration of the damper.
See also
VelocityDamperAnisotropicConfig
Parameters
bigvalue used as infinity.
Attention
Previous remark on autoXsi apply. Furthermore, the dimensions of config must match the function for which this task dynamic will be used.

◆ VelocityDamper() [3/4]

tvm::task_dynamics::VelocityDamper::VelocityDamper ( double  dt,
const Config config,
double  big = constant::big_number 
)

Velocity damper for second order dynamics.

Parameters
dtintegration time step to integrate acceleration to velocity (should be the control time step). Must be strictly positive.
configconfiguration of the damper.
See also
VelocityDamperConfig
Parameters
bigvalue used as infinity.

◆ VelocityDamper() [4/4]

tvm::task_dynamics::VelocityDamper::VelocityDamper ( double  dt,
const AnisotropicConfig config,
double  big = constant::big_number 
)

Velocity damper for second order dynamics.

Parameters
dtintegration time step to integrate acceleration to velocity (should be the control time step). Must be strictly positive.
configconfiguration of the damper.
See also
VelocityDamperAnisotropicConfig
Parameters
bigvalue used as infinity.

◆ ~VelocityDamper()

tvm::task_dynamics::VelocityDamper::~VelocityDamper ( )
overridedefault

Member Function Documentation

◆ impl_() [1/2]

std::unique_ptr<abstract::TaskDynamicsImpl> tvm::task_dynamics::VelocityDamper::impl_ ( FunctionPtr  f,
constraint::Type  t,
const Eigen::VectorXd &  rhs 
) const
overrideprotectedvirtual

◆ impl_() [2/2]

template<typename Derived , typename... Args>
std::unique_ptr<abstract::TaskDynamicsImpl> tvm::task_dynamics::VelocityDamper::impl_ ( FunctionPtr  f,
constraint::Type  t,
const Eigen::VectorXd &  rhs,
Args &&...  args 
) const
inlineprotected

◆ order_()

Order tvm::task_dynamics::VelocityDamper::order_ ( ) const
overrideprotectedvirtual

The documentation for this class was generated from the following file: