Template Class ContactModel2DTpl

Inheritance Relationships

Base Type

Class Documentation

template<typename _Scalar>
class ContactModel2DTpl : public crocoddyl::ContactModelAbstractTpl<_Scalar>

Public Types

typedef MathBaseTpl<Scalar> MathBase
typedef ContactModelAbstractTpl<Scalar> Base
typedef ContactData2DTpl<Scalar> Data
typedef StateMultibodyTpl<Scalar> StateMultibody
typedef ContactDataAbstractTpl<Scalar> ContactDataAbstract
typedef MathBase::Vector2s Vector2s
typedef MathBase::Vector3s Vector3s
typedef MathBase::VectorXs VectorXs
typedef MathBase::Matrix3s Matrix3s

Public Functions

ContactModel2DTpl(std::shared_ptr<StateMultibody> state, const pinocchio::FrameIndex id, const Vector2s &xref, const std::size_t nu, const Vector2s &gains = Vector2s::Zero())

Initialize the 2d contact model.

Parameters:
  • state[in] State of the multibody system

  • id[in] Reference frame id of the contact

  • xref[in] Contact position used for the Baumgarte stabilization

  • nu[in] Dimension of the control vector

  • gains[in] Baumgarte stabilization gains

ContactModel2DTpl(std::shared_ptr<StateMultibody> state, const pinocchio::FrameIndex id, const Vector2s &xref, const Vector2s &gains = Vector2s::Zero())

Initialize the 2d contact model.

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

Parameters:
  • state[in] State of the multibody system

  • id[in] Reference frame id of the contact

  • xref[in] Contact position used for the Baumgarte stabilization

  • gains[in] Baumgarte stabilization gains

virtual ~ContactModel2DTpl() = default
virtual void calc(const std::shared_ptr<ContactDataAbstract> &data, const Eigen::Ref<const VectorXs> &x) override

Compute the 2d contact Jacobian and drift.

Parameters:
  • data[in] 2d contact data

  • x[in] State point \(\mathbf{x}\in\mathbb{R}^{ndx}\)

  • u[in] Control input \(\mathbf{u}\in\mathbb{R}^{nu}\)

virtual void calcDiff(const std::shared_ptr<ContactDataAbstract> &data, const Eigen::Ref<const VectorXs> &x) override

Compute the derivatives of the 2d contact holonomic constraint.

Parameters:
  • data[in] 2d contact data

  • x[in] State point \(\mathbf{x}\in\mathbb{R}^{ndx}\)

  • u[in] Control input \(\mathbf{u}\in\mathbb{R}^{nu}\)

virtual void updateForce(const std::shared_ptr<ContactDataAbstract> &data, const VectorXs &force) override

Convert the force into a stack of spatial forces.

Parameters:
  • data[in] 2d contact data

  • force[in] 2d force

virtual std::shared_ptr<ContactDataAbstract> createData(pinocchio::DataTpl<Scalar> *const data) override

Create the 2d contact data.

template<typename NewScalar>
ContactModel2DTpl<NewScalar> cast() const

Cast the contact-2d model to a different scalar type.

It is useful for operations requiring different precision or scalar types.

Template Parameters:

NewScalar – The new scalar type to cast to.

Returns:

ContactModel2DTpl<NewScalar> A contact model with the new scalar type.

const Vector2s &get_reference() const

Return the reference frame translation.

const Vector2s &get_gains() const

Create the 2d contact data.

void set_reference(const Vector2s &reference)

Modify the reference frame translation.

virtual void print(std::ostream &os) const override

Print relevant information of the 2d contact model.

Parameters:

os[out] Output stream object

Public Members

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar

Protected Attributes

pinocchio::FrameIndex id_

Reference frame id of the contact.

std::size_t nc_
std::size_t nu_
std::shared_ptr<StateMultibody> state_