Define a contact force cost function. More...
#include <crocoddyl/multibody/costs/contact-force.hpp>


Public Types | |
| typedef ActivationModelAbstractTpl< Scalar > | ActivationModelAbstract |
| typedef CostModelResidualTpl< Scalar > | Base |
| typedef FrameForceTpl< Scalar > | FrameForce |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef MathBase::MatrixXs | MatrixXs |
| typedef ResidualModelContactForceTpl< Scalar > | ResidualModelContactForce |
| typedef StateMultibodyTpl< Scalar > | StateMultibody |
| typedef MathBase::VectorXs | VectorXs |
Public Types inherited from CostModelResidualTpl< _Scalar > | |
| typedef ActivationModelAbstractTpl< Scalar > | ActivationModelAbstract |
| typedef CostModelAbstractTpl< Scalar > | Base |
| typedef CostDataAbstractTpl< Scalar > | CostDataAbstract |
| typedef CostDataResidualTpl< Scalar > | Data |
| typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef MathBase::MatrixXs | MatrixXs |
| typedef ResidualModelAbstractTpl< Scalar > | ResidualModelAbstract |
| 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 ResidualModelAbstractTpl< Scalar > | ResidualModelAbstract |
| typedef StateAbstractTpl< Scalar > | StateAbstract |
| typedef MathBase::VectorXs | VectorXs |
Public Member Functions | |
| 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, 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, const FrameForce &fref) | |
| 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, const std::size_t nr, const std::size_t nu) | |
| Initialize the contact force cost model. More... | |
Public Member Functions inherited from CostModelResidualTpl< _Scalar > | |
| CostModelResidualTpl (boost::shared_ptr< typename Base::StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation, boost::shared_ptr< ResidualModelAbstract > residual) | |
| Initialize the residual cost model. More... | |
| CostModelResidualTpl (boost::shared_ptr< typename Base::StateAbstract > state, boost::shared_ptr< ResidualModelAbstract > residual) | |
| Initialize the residual cost model. More... | |
| virtual void | calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
| Compute the residual cost based on state only. More... | |
| virtual void | calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
| Compute the residual cost. More... | |
| virtual void | calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
| Compute the derivatives of the residual cost with respect to the state only. 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 residual cost. More... | |
| virtual boost::shared_ptr< CostDataAbstract > | createData (DataCollectorAbstract *const data) |
| Create the residual cost data. | |
| virtual void | print (std::ostream &os) const |
| Print relevant information of the cost-residual model. More... | |
Public Member Functions inherited from CostModelAbstractTpl< _Scalar > | |
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation) | |
| Initialize the cost model. More... | |
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation, boost::shared_ptr< ResidualModelAbstract > residual) | |
| Initialize the cost model. More... | |
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ActivationModelAbstract > activation, const std::size_t nu) | |
| Initialize the cost model. More... | |
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, boost::shared_ptr< ResidualModelAbstract > residual) | |
| Initialize the cost model. More... | |
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr) | |
| Initialize the cost model. More... | |
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu) | |
| Initialize the cost model. More... | |
| const boost::shared_ptr< ActivationModelAbstract > & | get_activation () const |
| Return the activation model. | |
| std::size_t | get_nu () const |
| Return the dimension of the control input. | |
| template<class ReferenceType > | |
| ReferenceType | get_reference () |
| Return the cost reference. | |
| const boost::shared_ptr< ResidualModelAbstract > & | get_residual () const |
| Return the residual model. | |
| const boost::shared_ptr< StateAbstract > & | get_state () const |
| Return the state. | |
| template<class ReferenceType > | |
| void | set_reference (ReferenceType ref) |
| Modify the cost reference. | |
Public Attributes | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Public Attributes inherited from CostModelResidualTpl< _Scalar > | |
| 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) |
| Modify the reference spatial contact force \(\boldsymbol{\lambda}^*\). | |
| virtual void | set_referenceImpl (const std::type_info &ti, const void *pv) |
| Return the reference spatial contact force \(\boldsymbol{\lambda}^*\). | |
Protected Attributes | |
| boost::shared_ptr< ActivationModelAbstract > | activation_ |
| Activation model. | |
| FrameForce | fref_ |
| Reference spatial contact force \(\boldsymbol{\lambda}^*\). | |
| std::size_t | nu_ |
| Control dimension. | |
| boost::shared_ptr< ResidualModelAbstract > | residual_ |
| Residual model. | |
| boost::shared_ptr< StateAbstract > | state_ |
| State description. | |
| VectorXs | unone_ |
| No control vector. | |
Protected Attributes inherited from CostModelResidualTpl< _Scalar > | |
| boost::shared_ptr< ActivationModelAbstract > | activation_ |
| Activation model. | |
| std::size_t | nu_ |
| Control dimension. | |
| boost::shared_ptr< ResidualModelAbstract > | residual_ |
| Residual model. | |
| boost::shared_ptr< StateAbstract > | state_ |
| State description. | |
| VectorXs | unone_ |
| No control vector. | |
Protected Attributes inherited from CostModelAbstractTpl< _Scalar > | |
| boost::shared_ptr< ActivationModelAbstract > | activation_ |
| Activation model. | |
| std::size_t | nu_ |
| Control dimension. | |
| boost::shared_ptr< ResidualModelAbstract > | residual_ |
| Residual model. | |
| boost::shared_ptr< StateAbstract > | state_ |
| State description. | |
| VectorXs | unone_ |
| No control vector. | |
Define a contact force cost function.
This cost function defines a residual vector \(\mathbf{r}=\boldsymbol{\lambda}-\boldsymbol{\lambda}^*\), where \(\boldsymbol{\lambda}, \boldsymbol{\lambda}^*\) are the current and reference spatial forces, respectively. The current spatial forces \(\boldsymbol{\lambda}\in\mathbb{R}^{nc}\)is computed by DifferentialActionModelContactFwdDynamicsTpl, with nc as the dimension of the contact.
Both cost and residual derivatives are computed analytically, where th force vector \(\boldsymbol{\lambda}\) and its derivatives \(\left(\frac{\partial\boldsymbol{\lambda}}{\partial\mathbf{x}}, \frac{\partial\boldsymbol{\lambda}}{\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. For the computation of the cost Hessian, we use the Gauss-Newton approximation, e.g. \(\mathbf{l_{xu}} = \mathbf{l_{x}}^T \mathbf{l_{u}} \).
DifferentialActionModelContactFwdDynamicsTpl, DataCollectorContactTpl, ActivationModelAbstractTpl Definition at line 43 of file contact-force.hpp.
| 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.
| [in] | state | Multibody state |
| [in] | activation | Activation model |
| [in] | fref | Reference spatial contact force \(\boldsymbol{\lambda}^*\) |
| [in] | nu | Dimension of control vector |
| CostModelContactForceTpl | ( | boost::shared_ptr< StateMultibody > | state, |
| boost::shared_ptr< ActivationModelAbstract > | activation, | ||
| const FrameForce & | fref | ||
| ) |
Initialize the contact force cost model.
The default nu is obtained from StateAbstractTpl::get_nv(). Note that the nr, defined in the activation model, has to be lower / equals than 6.
| [in] | state | Multibody state |
| [in] | activation | Activation model |
| [in] | fref | Reference spatial contact force \(\boldsymbol{\lambda}^*\) |
| 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.
We use ActivationModelQuadTpl as a default activation model (i.e. \(a=\frac{1}{2}\|\mathbf{r}\|^2\)). Note that the nr, defined in the activation model, has to be lower / equals than 6.
| [in] | state | Multibody state |
| [in] | fref | Reference spatial contact force \(\boldsymbol{\lambda}^*\) |
| [in] | nr | Dimension of residual vector |
| [in] | nu | Dimension of control vector |
| CostModelContactForceTpl | ( | boost::shared_ptr< StateMultibody > | state, |
| const FrameForce & | fref, | ||
| const std::size_t | nr | ||
| ) |
Initialize the contact force cost model.
We use ActivationModelQuadTpl as a default activation model (i.e. \(a=\frac{1}{2}\|\mathbf{r}\|^2\)), and nu is obtained from StateAbstractTpl::get_nv(). Note that the nr, defined in the activation model, has to be lower / equals than 6.
| [in] | state | Multibody state |
| [in] | fref | Reference spatial contact force \(\boldsymbol{\lambda}^*\) |
| [in] | nr | Dimension of residual vector |
| CostModelContactForceTpl | ( | boost::shared_ptr< StateMultibody > | state, |
| const FrameForce & | fref | ||
| ) |
Initialize the contact force cost model.
We use ActivationModelQuadTpl as a default activation model (i.e. \(a=\frac{1}{2}\|\mathbf{r}\|^2\)), and nr and nu are equals to 6 and StateAbstractTpl::get_nv(), respectively.
| [in] | state | Multibody state |
| [in] | fref | Reference spatial contact force \(\boldsymbol{\lambda}^*\) |