|
| CostModelContactFrictionConeTpl (boost::shared_ptr< StateMultibody > state, boost::shared_ptr< ActivationModelAbstract > activation, const FrameFrictionCone &fref, const std::size_t nu) |
| Initialize the contact friction cone cost model. More...
|
|
| CostModelContactFrictionConeTpl (boost::shared_ptr< StateMultibody > state, boost::shared_ptr< ActivationModelAbstract > activation, const FrameFrictionCone &fref) |
| Initialize the contact friction cone cost model. More...
|
|
| CostModelContactFrictionConeTpl (boost::shared_ptr< StateMultibody > state, const FrameFrictionCone &fref, const std::size_t nu) |
| Initialize the contact friction cone cost model. More...
|
|
| CostModelContactFrictionConeTpl (boost::shared_ptr< StateMultibody > state, const FrameFrictionCone &fref) |
| Initialize the contact friction cone 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 friction cone 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 friction cone cost. More...
|
|
virtual boost::shared_ptr< CostDataAbstract > | createData (DataCollectorAbstract *const data) |
| Create the contact friction cone cost data.
|
|
| 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< ActivationModelAbstract > activation) |
|
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu) |
|
| CostModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr) |
|
virtual void | calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0 |
| Compute the cost value and its residual vector. More...
|
|
void | calc (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
|
virtual void | calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)=0 |
| Compute the Jacobian and Hessian of cost and its residual vector. More...
|
|
void | calcDiff (const boost::shared_ptr< CostDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
|
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 () const |
| Return the cost reference.
|
|
const boost::shared_ptr< StateAbstract > & | get_state () const |
| Return the state.
|
|
template<class ReferenceType > |
void | set_reference (ReferenceType ref) |
| Modify the cost reference.
|
|
template<typename _Scalar>
class crocoddyl::CostModelContactFrictionConeTpl< _Scalar >
Contact friction cone cost.
This cost function defines a residual vector as \(\mathbf{r}=\mathbf{A}\boldsymbol{\lambda}\), where \(\mathbf{A}\in~\mathbb{R}^{nr\times nc}\) describes the linearized friction cone, \(\boldsymbol{\lambda}\in~\mathbb{R}^{nc}\) is the spatial contact forces computed by DifferentialActionModelContactFwdDynamicsTpl
, and nr
, nc
are the number of cone facets and dimension of the contact, respectively.
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}} \).
As described in CostModelAbstractTpl(), the cost value and its derivatives are calculated by calc
and calcDiff
, respectively.
- See also
CostModelAbstractTpl
, DifferentialActionModelContactFwdDynamicsTpl
, calc()
, calcDiff()
, createData()
Definition at line 49 of file contact-friction-cone.hpp.