Define a stack of contact models. More...
#include <sobec/crocomplements/contact/multiple-contacts.hpp>
Public Types | |
typedef crocoddyl::ContactModelMultipleTpl< Scalar > | Base |
typedef crocoddyl::MathBaseTpl< Scalar > | MathBase |
typedef crocoddyl::StateMultibodyTpl< Scalar > | StateMultibody |
typedef crocoddyl::ContactDataAbstractTpl< Scalar > | ContactDataAbstract |
typedef crocoddyl::ContactDataMultipleTpl< Scalar > | ContactDataMultiple |
typedef crocoddyl::ContactModelAbstractTpl< Scalar > | ContactModelAbstract |
typedef crocoddyl::ContactItemTpl< Scalar > | ContactItem |
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 |
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.
typedef crocoddyl::ContactModelMultipleTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Base |
typedef crocoddyl::ContactDataAbstractTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactDataAbstract |
typedef std::map<std::string, boost::shared_ptr<ContactDataAbstract> > sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactDataContainer |
typedef crocoddyl::ContactDataMultipleTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactDataMultiple |
typedef crocoddyl::ContactItemTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactItem |
typedef crocoddyl::ContactModelAbstractTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactModelAbstract |
typedef std::map<std::string, boost::shared_ptr<ContactItem> > sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ContactModelContainer |
typedef pinocchio::container::aligned_vector< pinocchio::ForceTpl<Scalar> >::iterator sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::ForceIterator |
typedef crocoddyl::MathBaseTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::MathBase |
typedef MathBase::Matrix3s sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Matrix3s |
typedef MathBase::MatrixXs sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::MatrixXs |
typedef crocoddyl::StateMultibodyTpl<Scalar> sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::StateMultibody |
typedef MathBase::Vector2s sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Vector2s |
typedef MathBase::Vector3s sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Vector3s |
typedef MathBase::VectorXs sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::VectorXs |
sobec::newcontacts::ContactModelMultipleTpl< Scalar >::ContactModelMultipleTpl | ( | boost::shared_ptr< StateMultibody > | state, |
const std::size_t | nu | ||
) |
Initialize the multi-contact model.
[in] | state | Multibody state |
[in] | nu | Dimension of control vector |
sobec::newcontacts::ContactModelMultipleTpl< Scalar >::ContactModelMultipleTpl | ( | boost::shared_ptr< StateMultibody > | state | ) |
Initialize the multi-contact model.
[in] | state | Multibody state |
sobec::newcontacts::ContactModelMultipleTpl< Scalar >::~ContactModelMultipleTpl |
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.
[in] | data | Multi-contact data |
[in] | df_dx | Jacobian 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_du | Jacobian of the spatial impulse defined in frame coordinate \(\frac{\partial{}^o\underline{\boldsymbol{\lambda}}_c}{\partial\mathbf{u}}\in\mathbb{R}^{nc\times{nu}}\) |
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
[in] | data | Multi-contact data |
[in] | pinocchio | Pinocchio data |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar sobec::newcontacts::ContactModelMultipleTpl< _Scalar >::Scalar |