crocoddyl  1.4.0
Contact RObot COntrol by Differential DYnamic programming Library (Crocoddyl)
CostModelContactForceTpl< _Scalar > Class Template Reference

Define a contact force cost function. More...

#include <crocoddyl/multibody/costs/contact-force.hpp>

Inheritance diagram for CostModelContactForceTpl< _Scalar >:
Collaboration diagram for CostModelContactForceTpl< _Scalar >:

Public Types

typedef ActivationModelAbstractTpl< Scalar > ActivationModelAbstract
 
typedef ActivationModelQuadTpl< Scalar > ActivationModelQuad
 
typedef CostModelAbstractTpl< Scalar > Base
 
typedef CostDataAbstractTpl< Scalar > CostDataAbstract
 
typedef CostDataContactForceTpl< Scalar > Data
 
typedef DataCollectorAbstractTpl< Scalar > DataCollectorAbstract
 
typedef FrameForceTpl< Scalar > FrameForce
 
typedef MathBaseTpl< Scalar > MathBase
 
typedef MathBase::MatrixXs MatrixXs
 
typedef StateMultibodyTpl< Scalar > StateMultibody
 
typedef MathBase::Vector6s Vector6s
 
typedef MathBase::VectorXs VectorXs
 
- Public Types inherited from CostModelAbstractTpl< _Scalar >
typedef ActivationModelAbstractTpl< Scalar > ActivationModelAbstract
 
typedef ActivationModelQuadTpl< Scalar > ActivationModelQuad
 
typedef CostDataAbstractTpl< Scalar > CostDataAbstract
 
typedef DataCollectorAbstractTpl< Scalar > DataCollectorAbstract
 
typedef MathBaseTpl< Scalar > MathBase
 
typedef MathBase::MatrixXs MatrixXs
 
typedef StateMultibodyTpl< Scalar > StateMultibody
 
typedef MathBase::VectorXs VectorXs
 

Public Member Functions

 CostModelContactForceTpl (boost::shared_ptr< StateMultibody > state, boost::shared_ptr< ActivationModelAbstract > activation, const FrameForce &fref, const std::size_t &nu)
 Initialize the contact force cost model. More...
 
 CostModelContactForceTpl (boost::shared_ptr< StateMultibody > state, boost::shared_ptr< ActivationModelAbstract > activation, const FrameForce &fref)
 Initialize the contact force cost model. More...
 
 CostModelContactForceTpl (boost::shared_ptr< StateMultibody > state, const FrameForce &fref, const std::size_t &nr, const std::size_t &nu)
 Initialize the contact force cost model. More...
 
 CostModelContactForceTpl (boost::shared_ptr< StateMultibody > state, const FrameForce &fref, const std::size_t &nr)
 Initialize the contact force cost model. More...
 
 CostModelContactForceTpl (boost::shared_ptr< StateMultibody > state, const FrameForce &fref)
 Initialize the contact force cost model. More...
 
virtual void calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 Compute the contact force cost. More...
 
virtual void calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 Compute the derivatives of the contact force cost. More...
 
virtual boost::shared_ptr< CostDataAbstractcreateData (DataCollectorAbstract *const data)
 Create the contact force cost data. More...
 
 DEPRECATED ("Use set_reference<FrameForceTpl<Scalar> >()", void set_fref(const FrameForce &fref))
 
 DEPRECATED ("Use get_reference<FrameForceTpl<Scalar> >()", const FrameForce &get_fref() const)
 
- Public Member Functions inherited from CostModelAbstractTpl< _Scalar >
 CostModelAbstractTpl (boost::shared_ptr< StateMultibody > state, boost::shared_ptr< ActivationModelAbstract > activation, const std::size_t &nu)
 
 CostModelAbstractTpl (boost::shared_ptr< StateMultibody > state, boost::shared_ptr< ActivationModelAbstract > activation)
 
 CostModelAbstractTpl (boost::shared_ptr< StateMultibody > state, const std::size_t &nr, const std::size_t &nu)
 
 CostModelAbstractTpl (boost::shared_ptr< StateMultibody > state, const std::size_t &nr)
 
void calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 
void calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 
const boost::shared_ptr< ActivationModelAbstract > & get_activation () const
 
const std::size_t & get_nu () const
 
template<class ReferenceType >
ReferenceType get_reference () const
 
const boost::shared_ptr< StateMultibody > & get_state () const
 
template<class ReferenceType >
void set_reference (ReferenceType ref)
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 
- Public Attributes inherited from CostModelAbstractTpl< _Scalar >
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 

Protected Member Functions

virtual void get_referenceImpl (const std::type_info &ti, void *pv) const
 Modify the reference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\).
 
virtual void set_referenceImpl (const std::type_info &ti, const void *pv)
 Return the reference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\).
 

Protected Attributes

FrameForce fref_
 
- Protected Attributes inherited from CostModelAbstractTpl< _Scalar >
boost::shared_ptr< ActivationModelAbstractactivation_
 
std::size_t nu_
 
boost::shared_ptr< StateMultibodystate_
 
VectorXs unone_
 

Detailed Description

template<typename _Scalar>
class crocoddyl::CostModelContactForceTpl< _Scalar >

Define a contact force cost function.

It builds a cost function that tracks a desired spatial force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c\in\mathbb{R}^{nc}\), i.e. the cost residual vector is described as:

\begin{equation*} \mathbf{r} = {}^o\underline{\boldsymbol{\lambda}}_c - {}^o\underline{\boldsymbol{\lambda}}_c^{reference},\end{equation*}

where \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\) is the reference spatial contact force in the frame coordinate \(c\), and \(nc\) defines the dimension of constrained space \((nc < 6)\). The cost is computed, from the residual vector \(\mathbf{r}\in\mathbb{R}^{nc}\), through an user defined activation model. Additionally, the reference force vector is defined using FrameForceTpl even for cases where \(nc < 6\).

The force vector \({}^o\underline{\boldsymbol{\lambda}}_c\) and its derivatives \(\left(\frac{\partial{}^o\underline{\boldsymbol{\lambda}}_c}{\partial\mathbf{x}}, \frac{\partial{}^o\underline{\boldsymbol{\lambda}}_c}{\partial\mathbf{u}}\right)\) are computed by DifferentialActionModelContactFwdDynamicsTpl. These values are stored in a shared data (i.e. DataCollectorContactTpl). Note that this cost function cannot be used with other action models.

See also
DifferentialActionModelContactFwdDynamicsTpl, DataCollectorContactTpl, ActivationModelAbstractTpl

Definition at line 47 of file contact-force.hpp.

Constructor & Destructor Documentation

◆ CostModelContactForceTpl() [1/5]

CostModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
boost::shared_ptr< ActivationModelAbstract activation,
const FrameForce fref,
const std::size_t &  nu 
)

Initialize the contact force cost model.

Note that the nr, defined in the activation model, has to be lower / equals than 6.

Parameters
[in]stateMultibody state
[in]activationActivation model
[in]frefReference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\)
[in]nuDimension of control vector

◆ CostModelContactForceTpl() [2/5]

CostModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
boost::shared_ptr< ActivationModelAbstract activation,
const FrameForce fref 
)

Initialize the contact force cost model.

For this case the default nu is equals to state->get_nv(). Note that the nr, defined in the activation model, has to be lower / equals than 6.

Parameters
[in]stateMultibody state
[in]activationActivation model
[in]frefReference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\)

◆ CostModelContactForceTpl() [3/5]

CostModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
const FrameForce fref,
const std::size_t &  nr,
const std::size_t &  nu 
)

Initialize the contact force cost model.

For this case the default activation model is quadratic, i.e. ActivationModelQuadTpl(nr). Note that the nr, defined in the activation model, has to be lower / equals than 6.

Parameters
[in]stateMultibody state
[in]frefReference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\)
[in]nrDimension of residual vector
[in]nuDimension of control vector

◆ CostModelContactForceTpl() [4/5]

CostModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
const FrameForce fref,
const std::size_t &  nr 
)

Initialize the contact force cost model.

For this case the default activation model is quadratic, i.e. ActivationModelQuadTpl(nr), and nu is equals to state->get_nv(). Note that the nr, defined in the activation model, has to be lower / equals than 6.

Parameters
[in]stateMultibody state
[in]frefReference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\)
[in]nrDimension of residual vector

◆ CostModelContactForceTpl() [5/5]

CostModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
const FrameForce fref 
)

Initialize the contact force cost model.

For this case the default activation model is quadratic, i.e. ActivationModelQuadTpl(nr), and nr and nu is equals to 6 and state->get_nv(), respectively.

Parameters
[in]stateMultibody state
[in]frefReference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\)

Member Function Documentation

◆ calc()

virtual void calc ( const boost::shared_ptr< CostDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
virtual

Compute the contact force cost.

The force vector is computed by DifferentialActionModelContactFwdDynamicsTpl and stored in DataCollectorContactTpl.

Parameters
[in]dataContact force data
[in]xState vector \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]uControl input \(\mathbf{u}\in\mathbb{R}^{nu}\)

Implements CostModelAbstractTpl< _Scalar >.

◆ calcDiff()

virtual void calcDiff ( const boost::shared_ptr< CostDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
virtual

Compute the derivatives of the contact force cost.

The force derivatives are computed by DifferentialActionModelContactFwdDynamicsTpl and stored in DataCollectorContactTpl.

Parameters
[in]dataContact force data
[in]xState vector \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]uControl input \(\mathbf{u}\in\mathbb{R}^{nu}\)

Implements CostModelAbstractTpl< _Scalar >.

◆ createData()

virtual boost::shared_ptr<CostDataAbstract> createData ( DataCollectorAbstract *const  data)
virtual

Create the contact force cost data.

Each cost model has its own data that needs to be allocated. This function returns the allocated data for a predefined cost.

Parameters
[in]datashared data (it should be of type DataCollectorContactTpl)
Returns
the cost data.

Reimplemented from CostModelAbstractTpl< _Scalar >.

Member Data Documentation

◆ fref_

FrameForce fref_
protected

Reference spatial contact force in the contact coordinates \({}^o\underline{\boldsymbol{\lambda}}_c^{reference}\)

Definition at line 194 of file contact-force.hpp.


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