TVM  0.9.4
tvm::task_dynamics::ProportionalDerivative::Impl Class Reference

#include <tvm/task_dynamics/ProportionalDerivative.h>

Inheritance diagram for tvm::task_dynamics::ProportionalDerivative::Impl:
Collaboration diagram for tvm::task_dynamics::ProportionalDerivative::Impl:

Public Member Functions

 Impl (FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs, const Gain &kp, const Gain &kv)
 
void updateValue () override
 
 ~Impl () override=default
 
std::pair< const Gain &, const Gain & > gains () const
 
void gains (double kp)
 
void gains (const Eigen::VectorXd &kp)
 
void gains (const Eigen::MatrixXd &kp)
 
const Gainkp () const
 
template<typename T >
const T & kp () const
 
Gainkp ()
 
template<typename T >
T & kp ()
 
const Gainkv () const
 
template<typename T >
const T & kv () const
 
Gainkv ()
 
template<typename T >
T & kv ()
 
void gains (double kp, double kv)
 
void gains (const Eigen::VectorXd &kp, const Eigen::VectorXd &kv)
 
void gains (const Eigen::MatrixXd &kp, const Eigen::MatrixXd &kv)
 
void gains (double kp, const Eigen::VectorXd &kv)
 
void gains (double kp, const Eigen::MatrixXd &kv)
 
void gains (const Eigen::VectorXd &kp, double kv)
 
void gains (const Eigen::VectorXd &kp, const Eigen::MatrixXd &kv)
 
void gains (const Eigen::MatrixXd &kp, double kv)
 
void gains (const Eigen::MatrixXd &kp, const Eigen::VectorXd &kv)
 
- Public Member Functions inherited from tvm::task_dynamics::abstract::TaskDynamicsImpl
virtual ~TaskDynamicsImpl ()=default
 
const Eigen::VectorXd & value () const
 
Order order () const
 
template<typename T >
bool checkType () const
 
- Public Member Functions inherited from tvm::graph::internal::AbstractNode
template<typename EnumT >
bool isUpdateEnabled (EnumT e) const
 
virtual bool isUpdateStaticallyEnabled (int) const
 
virtual bool isUpdateCustomEnabled (int) const
 
virtual ~AbstractNode ()=default
 
void update (int i)
 
- Public Member Functions inherited from tvm::graph::internal::Inputs
virtual ~Inputs ()=default
 
template<typename T , typename EnumI , typename... Args>
void addInput (std::shared_ptr< T > source, EnumI i, Args... args)
 
template<typename T , typename EnumI , typename... Args, typename std::enable_if< std::is_base_of< abstract::Outputs, T >::value, int >::type = 0>
void addInput (T &source, EnumI i, Args... args)
 
template<typename T >
void removeInput (T *source)
 
template<typename T , typename... Args>
void removeInput (T *source, Args... args)
 
template<typename T >
Iterator getInput (T *source)
 
template<typename T >
Iterator getInput (const std::shared_ptr< T > &source)
 
- Public Member Functions inherited from tvm::graph::abstract::Outputs
virtual ~Outputs ()=default
 
template<typename EnumT >
bool isOutputEnabled (EnumT e) const
 
bool isOutputEnabled (int i) const
 
virtual bool isOutputStaticallyEnabled (int) const
 
virtual bool isOutputCustomEnabled (int) const
 

Additional Inherited Members

- Public Types inherited from tvm::graph::internal::AbstractNode
enum class  Update_
 
using UpdateParent = AbstractNode
 
using UpdateBase = AbstractNode
 
- Public Types inherited from tvm::graph::internal::Inputs
using inputs_t = std::unordered_map< abstract::Outputs *, std::set< int > >
 
using store_t = std::unordered_set< std::shared_ptr< abstract::Outputs > >
 
- Public Types inherited from tvm::graph::abstract::Outputs
enum class  Output_
 
using OutputParent = Outputs
 
using OutputBase = Outputs
 
- Static Public Member Functions inherited from tvm::graph::internal::AbstractNode
static constexpr const char * UpdateName (Update_)
 
template<typename EnumT >
static constexpr bool UpdateStaticallyEnabled (EnumT)
 
- Static Public Member Functions inherited from tvm::graph::abstract::Outputs
static constexpr const char * OutputName (Output_)
 
template<typename EnumT >
static constexpr bool OutputStaticallyEnabled (EnumT)
 
- Static Public Attributes inherited from tvm::graph::internal::AbstractNode
static constexpr unsigned int UpdateSize = 0
 
static constexpr auto UpdateBaseName = "AbstractNode"
 
- Static Public Attributes inherited from tvm::graph::abstract::Outputs
static constexpr unsigned int OutputSize = 0
 
static constexpr auto OutputBaseName = "Outputs"
 
- Protected Types inherited from tvm::graph::internal::AbstractNode
using input_dependency_t = std::map< Outputs *, std::set< int > >
 
- Protected Member Functions inherited from tvm::task_dynamics::abstract::TaskDynamicsImpl
 TaskDynamicsImpl (Order order, FunctionPtr f, constraint::Type t, const Eigen::VectorXd &rhs)
 
const function::abstract::Functionfunction () const
 
constraint::Type type () const
 
const Eigen::VectorXd & rhs () const
 
- Protected Member Functions inherited from tvm::graph::abstract::Node< TaskDynamicsImpl >
void registerUpdates (EnumT u, void(U::*fn)(), Args... args)
 
void registerUpdates (EnumT u, void(U::*fn)())
 
void addOutputDependency (EnumO o, EnumU u)
 
void addOutputDependency (std::initializer_list< EnumO > os, EnumU u)
 
void addInternalDependency (EnumU1 uDependent, EnumU2 u)
 
void addInputDependency (EnumU u, std::shared_ptr< S > source, EnumO i, Args... args)
 
void addInputDependency (EnumU u, S &source, EnumO i, Args... args)
 
void addDirectDependency (EnumO o, std::shared_ptr< S > source, EnumI i)
 
void addDirectDependency (EnumO o, S &source, EnumI i)
 
- Protected Attributes inherited from tvm::task_dynamics::abstract::TaskDynamicsImpl
Eigen::VectorXd value_
 
- Protected Attributes inherited from tvm::graph::internal::AbstractNode
std::map< int, std::function< void(AbstractNode &)> > updates_
 
std::map< int, std::vector< int > > outputDependencies_
 
std::map< int, std::vector< int > > internalDependencies_
 
std::map< int, input_dependency_tinputDependencies_
 
std::map< int, std::pair< Outputs *, int > > directDependencies_
 
- Protected Attributes inherited from tvm::graph::abstract::Outputs
bool is_node_ = false
 

Constructor & Destructor Documentation

◆ Impl()

tvm::task_dynamics::ProportionalDerivative::Impl::Impl ( FunctionPtr  f,
constraint::Type  t,
const Eigen::VectorXd &  rhs,
const Gain kp,
const Gain kv 
)

◆ ~Impl()

tvm::task_dynamics::ProportionalDerivative::Impl::~Impl ( )
overridedefault

Member Function Documentation

◆ gains() [1/13]

std::pair<const Gain &, const Gain &> tvm::task_dynamics::ProportionalDerivative::Impl::gains ( ) const

Get the current gains as a pair (kp, kv).

◆ gains() [2/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::MatrixXd &  kp)

Critically damped version.

Parameters
kpStiffness gain matrix. The damping gain is automatically computed to get a critically damped behavior. For this version, kp is supposed to be symmetric and positive definite.
Note
The automatic damping computation is relatively heavy, involving a Schur decomposition, matrices multiplications and memory allocation.

◆ gains() [3/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::MatrixXd &  kp,
const Eigen::MatrixXd &  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [4/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::MatrixXd &  kp,
const Eigen::VectorXd &  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [5/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::MatrixXd &  kp,
double  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [6/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::VectorXd &  kp)

Critically damped version.

Parameters
kpDiagonal of the stiffness gain matrix. The damping gain is automatically computed to get a critically damped behavior.

◆ gains() [7/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::VectorXd &  kp,
const Eigen::MatrixXd &  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [8/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::VectorXd &  kp,
const Eigen::VectorXd &  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [9/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( const Eigen::VectorXd &  kp,
double  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [10/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( double  kp)

Critically damped version.

Parameters
kpStiffness gain. The damping gain is automatically computed to get a critically damped behavior.

◆ gains() [11/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( double  kp,
const Eigen::MatrixXd &  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [12/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( double  kp,
const Eigen::VectorXd &  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ gains() [13/13]

void tvm::task_dynamics::ProportionalDerivative::Impl::gains ( double  kp,
double  kv 
)

Set gains.

Parameters
kpStiffness gain, as a scalar, a vector representing a diagonal matrix, or a matrix.
kvDamping gain, as a scalar, a vector representing a diagonal matrix, or a matrix.

◆ kp() [1/4]

Gain& tvm::task_dynamics::ProportionalDerivative::Impl::kp ( )
inline

Get the current kp gain (non-const version).

Warning
No check is made if you change the gain. It is your responsibility to ensure that its values and its size are correct.

◆ kp() [2/4]

template<typename T >
T& tvm::task_dynamics::ProportionalDerivative::Impl::kp ( )
inline

Get the current kp gain cast as T (non-const version).

Template Parameters
TType of the gain.
Exceptions
Throwsif T has not the type corresponding to the gain actually used.
Warning
No check is made if you change the gain. It is your responsibility to ensure that its values and its size are correct.

◆ kp() [3/4]

const Gain& tvm::task_dynamics::ProportionalDerivative::Impl::kp ( ) const
inline

Get the current kp gain

◆ kp() [4/4]

template<typename T >
const T& tvm::task_dynamics::ProportionalDerivative::Impl::kp ( ) const
inline

Get the current kp gain cast as T.

Template Parameters
TType of the gain.
Exceptions
Throwsif T has not the type corresponding to the gain actually used.

◆ kv() [1/4]

Gain& tvm::task_dynamics::ProportionalDerivative::Impl::kv ( )
inline

Get the current kv gain (non-const version).

Warning
No check is made if you change the gain. It is your responsibility to ensure that its values and its size are correct.

◆ kv() [2/4]

template<typename T >
T& tvm::task_dynamics::ProportionalDerivative::Impl::kv ( )
inline

Get the current kv gain cast as T (non-const version).

Template Parameters
TType of the gain.
Exceptions
Throwsif T has not the type corresponding to the gain actually used.
Warning
No check is made if you change the gain. It is your responsibility to ensure that its values and its size are correct.

◆ kv() [3/4]

const Gain& tvm::task_dynamics::ProportionalDerivative::Impl::kv ( ) const
inline

Get the current kv gain

◆ kv() [4/4]

template<typename T >
const T& tvm::task_dynamics::ProportionalDerivative::Impl::kv ( ) const
inline

Get the current kv gain cast as T.

Template Parameters
TType of the gain.
Exceptions
Throwsif T has not the type corresponding to the gain actually used.

◆ updateValue()

void tvm::task_dynamics::ProportionalDerivative::Impl::updateValue ( )
overridevirtual

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