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

Define a contact force residual function. More...

#include <sobec/crocomplements/contact/contact-force.hpp>

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

Public Types

typedef crocoddyl::MathBaseTpl< ScalarMathBase
 
typedef crocoddyl::ResidualModelContactForceTpl< ScalarBase
 
typedef crocoddyl::ResidualDataContactForceTpl< ScalarData
 
typedef crocoddyl::StateMultibodyTpl< ScalarStateMultibody
 
typedef crocoddyl::ResidualDataAbstractTpl< ScalarResidualDataAbstract
 
typedef pinocchio::ForceTpl< ScalarForce
 
typedef MathBase::VectorXs VectorXs
 
typedef MathBase::MatrixXs MatrixXs
 

Public Member Functions

 ResidualModelContactForceTpl (boost::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const Force &fref, const std::size_t nc, const std::size_t nu)
 Initialize the contact force residual model. More...
 
 ResidualModelContactForceTpl (boost::shared_ptr< StateMultibody > state, const pinocchio::FrameIndex id, const Force &fref, const std::size_t nc)
 Initialize the contact force residual model. More...
 
virtual ~ResidualModelContactForceTpl ()
 
virtual void calc (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 Compute the contact force residual. More...
 
virtual void calcDiff (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 Compute the derivatives of the contact force residual. More...
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 

Detailed Description

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

Define a contact force residual function.

This residual function is defined as \(\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 or ActionModelImpulseFwdDynamicTpl, with nc as the dimension of the contact.

Both residual and residual Jacobians are computed analytically, where the force vector \(\boldsymbol{\lambda}\) and its Jacobians \(\left(\frac{\partial\boldsymbol{\lambda}}{\partial\mathbf{x}}, \frac{\partial\boldsymbol{\lambda}}{\partial\mathbf{u}}\right)\) are computed by DifferentialActionModelContactFwdDynamicsTpl or ActionModelImpulseFwdDynamicTpl. These values are stored in a shared data (i.e., DataCollectorContactTpl or DataCollectorImpulseTpl). Note that this residual function cannot be used with other action models.

See also
ResidualModelAbstractTpl, calc(), calcDiff(), createData(), DifferentialActionModelContactFwdDynamicsTpl, ActionModelImpulseFwdDynamicTpl, DataCollectorContactTpl, DataCollectorImpulseTpl

Member Typedef Documentation

◆ Base

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

◆ Data

template<typename _Scalar >
typedef crocoddyl::ResidualDataContactForceTpl<Scalar> sobec::newcontacts::ResidualModelContactForceTpl< _Scalar >::Data

◆ Force

template<typename _Scalar >
typedef pinocchio::ForceTpl<Scalar> sobec::newcontacts::ResidualModelContactForceTpl< _Scalar >::Force

◆ MathBase

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

◆ MatrixXs

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

◆ ResidualDataAbstract

template<typename _Scalar >
typedef crocoddyl::ResidualDataAbstractTpl<Scalar> sobec::newcontacts::ResidualModelContactForceTpl< _Scalar >::ResidualDataAbstract

◆ StateMultibody

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

◆ VectorXs

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

Constructor & Destructor Documentation

◆ ResidualModelContactForceTpl() [1/2]

template<typename Scalar >
sobec::newcontacts::ResidualModelContactForceTpl< Scalar >::ResidualModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
const pinocchio::FrameIndex  id,
const Force fref,
const std::size_t  nc,
const std::size_t  nu 
)

Initialize the contact force residual model.

Parameters
[in]stateMultibody state
[in]idReference frame id
[in]frefReference spatial contact force in the contact coordinates
[in]ncDimension of the contact force (nc <= 6)
[in]nuDimension of control vector

◆ ResidualModelContactForceTpl() [2/2]

template<typename Scalar >
sobec::newcontacts::ResidualModelContactForceTpl< Scalar >::ResidualModelContactForceTpl ( boost::shared_ptr< StateMultibody state,
const pinocchio::FrameIndex  id,
const Force fref,
const std::size_t  nc 
)

Initialize the contact force residual model.

The default nu is obtained from StateAbstractTpl::get_nv().

Parameters
[in]stateMultibody state
[in]idReference frame id
[in]frefReference spatial contact force in the contact coordinates
[in]ncDimension of the contact force (nc <= 6)

◆ ~ResidualModelContactForceTpl()

Member Function Documentation

◆ calc()

template<typename Scalar >
void sobec::newcontacts::ResidualModelContactForceTpl< Scalar >::calc ( const boost::shared_ptr< ResidualDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
virtual

Compute the contact force residual.

The CoP residual is computed based on the \(\mathbf{A}\) matrix, the force vector is computed by DifferentialActionModelContactFwdDynamicsTpl or ActionModelImpulseFwdDynamicTpl which is stored in DataCollectorContactTpl or DataCollectorImpulseTpl.

Parameters
[in]dataContact force data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]uControl input \(\mathbf{u}\in\mathbb{R}^{nu}\)

◆ calcDiff()

template<typename Scalar >
void sobec::newcontacts::ResidualModelContactForceTpl< Scalar >::calcDiff ( const boost::shared_ptr< ResidualDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x,
const Eigen::Ref< const VectorXs > &  u 
)
virtual

Compute the derivatives of the contact force residual.

The CoP residual is computed based on the \(\mathbf{A}\) matrix, the force vector is computed by DifferentialActionModelContactFwdDynamicsTpl or ActionModelImpulseFwdDynamicTpl which is stored in DataCollectorContactTpl or DataCollectorImpulseTpl.

Parameters
[in]dataContact force data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)
[in]uControl input \(\mathbf{u}\in\mathbb{R}^{nu}\)

Member Data Documentation

◆ Scalar

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

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