sobec::newcontacts::ContactModelMultipleTpl< _Scalar > Class Template Reference

Define a stack of contact models. More...

#include <sobec/crocomplements/contact/multiple-contacts.hpp>

Inheritance diagram for sobec::newcontacts::ContactModelMultipleTpl< _Scalar >:
Collaboration diagram for sobec::newcontacts::ContactModelMultipleTpl< _Scalar >:

Public Types

typedef crocoddyl::ContactModelMultipleTpl< ScalarBase
 
typedef crocoddyl::MathBaseTpl< ScalarMathBase
 
typedef crocoddyl::StateMultibodyTpl< ScalarStateMultibody
 
typedef crocoddyl::ContactDataAbstractTpl< ScalarContactDataAbstract
 
typedef crocoddyl::ContactDataMultipleTpl< ScalarContactDataMultiple
 
typedef crocoddyl::ContactModelAbstractTpl< ScalarContactModelAbstract
 
typedef crocoddyl::ContactItemTpl< ScalarContactItem
 
typedef MathBase::Vector2s Vector2s
 
typedef MathBase::Vector3s Vector3s
 
typedef MathBase::VectorXs VectorXs
 
typedef MathBase::MatrixXs MatrixXs
 
typedef MathBase::Matrix3s Matrix3s
 
typedef std::map< std::string, boost::shared_ptr< ContactItem > > ContactModelContainer
 
typedef std::map< std::string, boost::shared_ptr< ContactDataAbstract > > ContactDataContainer
 
typedef pinocchio::container::aligned_vector< pinocchio::ForceTpl< Scalar > >::iterator ForceIterator
 

Public Member Functions

 ContactModelMultipleTpl (boost::shared_ptr< StateMultibody > state, const std::size_t nu)
 Initialize the multi-contact model. More...
 
 ContactModelMultipleTpl (boost::shared_ptr< StateMultibody > state)
 Initialize the multi-contact model. More...
 
 ~ContactModelMultipleTpl ()
 
void updateForceDiff (const boost::shared_ptr< ContactDataMultiple > &data, const boost::shared_ptr< MatrixXs > df_dx, const boost::shared_ptr< MatrixXs > df_du) const
 Update the Jacobian of the spatial force defined in frame coordinate. More...
 
void updateRneaDerivatives (const boost::shared_ptr< ContactDataMultiple > &data, pinocchio::DataTpl< Scalar > &pinocchio) const
 Update the RNEA derivatives dtau_dq by adding the skew term (necessary for contacts expressed in LOCAL_WORLD_ALIGNED) More...
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 

Detailed Description

template<typename _Scalar>
class sobec::newcontacts::ContactModelMultipleTpl< _Scalar >

Define a stack of contact models.

The contact models can be defined with active and inactive status. The idea behind this design choice is to be able to create a mechanism that allocates the entire data needed for the computations. Then, there are designed routines that update the only active contacts.

Member Typedef Documentation

◆ Base

template<typename _Scalar >
typedef crocoddyl::ContactModelMultipleTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Base

◆ ContactDataAbstract

template<typename _Scalar >
typedef crocoddyl::ContactDataAbstractTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactDataAbstract

◆ ContactDataContainer

template<typename _Scalar >
typedef std::map<std::string, boost::shared_ptr<ContactDataAbstract> > sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactDataContainer

◆ ContactDataMultiple

template<typename _Scalar >
typedef crocoddyl::ContactDataMultipleTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactDataMultiple

◆ ContactItem

template<typename _Scalar >
typedef crocoddyl::ContactItemTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactItem

◆ ContactModelAbstract

template<typename _Scalar >
typedef crocoddyl::ContactModelAbstractTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactModelAbstract

◆ ContactModelContainer

template<typename _Scalar >
typedef std::map<std::string, boost::shared_ptr<ContactItem> > sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactModelContainer

◆ ForceIterator

template<typename _Scalar >
typedef pinocchio::container::aligned_vector< pinocchio::ForceTpl<Scalar> >::iterator sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ForceIterator

◆ MathBase

template<typename _Scalar >
typedef crocoddyl::MathBaseTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::MathBase

◆ Matrix3s

template<typename _Scalar >
typedef MathBase::Matrix3s sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Matrix3s

◆ MatrixXs

template<typename _Scalar >
typedef MathBase::MatrixXs sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::MatrixXs

◆ StateMultibody

template<typename _Scalar >
typedef crocoddyl::StateMultibodyTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::StateMultibody

◆ Vector2s

template<typename _Scalar >
typedef MathBase::Vector2s sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Vector2s

◆ Vector3s

template<typename _Scalar >
typedef MathBase::Vector3s sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Vector3s

◆ VectorXs

template<typename _Scalar >
typedef MathBase::VectorXs sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::VectorXs

Constructor & Destructor Documentation

◆ ContactModelMultipleTpl() [1/2]

template<typename Scalar >
sobec::newcontacts::ContactModelMultipleTpl< Scalar >::ContactModelMultipleTpl ( boost::shared_ptr< StateMultibody state,
const std::size_t  nu 
)

Initialize the multi-contact model.

Parameters
[in]stateMultibody state
[in]nuDimension of control vector

◆ ContactModelMultipleTpl() [2/2]

template<typename Scalar >
sobec::newcontacts::ContactModelMultipleTpl< Scalar >::ContactModelMultipleTpl ( boost::shared_ptr< StateMultibody state)

Initialize the multi-contact model.

Parameters
[in]stateMultibody state

◆ ~ContactModelMultipleTpl()

Member Function Documentation

◆ updateForceDiff()

template<typename Scalar >
void sobec::newcontacts::ContactModelMultipleTpl< Scalar >::updateForceDiff ( const boost::shared_ptr< ContactDataMultiple > &  data,
const boost::shared_ptr< MatrixXs df_dx,
const boost::shared_ptr< MatrixXs df_du 
) const

Update the Jacobian of the spatial force defined in frame coordinate.

Parameters
[in]dataMulti-contact data
[in]df_dxJacobian of the spatial impulse defined in frame coordinate \(\frac{\partial{}^o\underline{\boldsymbol{\lambda}}_c}{\partial\mathbf{x}}\in\mathbb{R}^{nc\times{ndx}}\)
[in]df_duJacobian of the spatial impulse defined in frame coordinate \(\frac{\partial{}^o\underline{\boldsymbol{\lambda}}_c}{\partial\mathbf{u}}\in\mathbb{R}^{nc\times{nu}}\)

◆ updateRneaDerivatives()

template<typename Scalar >
void sobec::newcontacts::ContactModelMultipleTpl< Scalar >::updateRneaDerivatives ( const boost::shared_ptr< ContactDataMultiple > &  data,
pinocchio::DataTpl< Scalar > &  pinocchio 
) const

Update the RNEA derivatives dtau_dq by adding the skew term (necessary for contacts expressed in LOCAL_WORLD_ALIGNED)

as explained in this document : https://www.overleaf.com/read/tzvrrxxtntwk

Parameters
[in]dataMulti-contact data
[in]pinocchioPinocchio data

Member Data Documentation

◆ Scalar

template<typename _Scalar >
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Scalar

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