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 |