Template Class ContactModelNumDiffTpl

Inheritance Relationships

Base Type

Class Documentation

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

Public Types

typedef ContactDataAbstractTpl<Scalar> ContactDataAbstract
typedef ContactModelAbstractTpl<Scalar> Base
typedef ContactDataNumDiffTpl<Scalar> Data
typedef MathBaseTpl<Scalar> MathBase
typedef MathBaseTpl<Scalar>::VectorXs VectorXs
typedef boost::function<void(const VectorXs&, const VectorXs&)> ReevaluationFunction

Public Functions

explicit ContactModelNumDiffTpl(const std::shared_ptr<Base> &model)

Construct a new ContactModelNumDiff object from a ContactModelAbstract.

Parameters:

model

virtual ~ContactModelNumDiffTpl() = default

Default destructor of the ContactModelNumDiff object.

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

Compute the contact Jacobian and acceleration drift.

Parameters:
  • data[in] Contact data

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

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

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

Compute the derivatives of the acceleration-based contact.

Parameters:
  • data[in] Contact data

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

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

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

Convert the force into a stack of spatial forces.

Parameters:
  • data[in] Contact data

  • force[in] Contact force

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

Create a Data object.

Parameters:

data – is the Pinocchio data

Returns:

std::shared_ptr<ContactModelAbstract>

template<typename NewScalar>
ContactModelNumDiffTpl<NewScalar> cast() const
const std::shared_ptr<Base> &get_model() const

Return the acton model that we use to numerical differentiate.

const Scalar get_disturbance() const

Return the disturbance constant used in the numerical differentiation routine.

void set_disturbance(const Scalar disturbance)

Modify the disturbance constant used in the numerical differentiation routine.

void set_reevals(const std::vector<ReevaluationFunction> &reevals)

Register functions that take a pinocchio model, a pinocchio data, a state and a control. The updated data is used to evaluate of the gradient and Hessian.

Parameters:

reevals – are the registered functions.

Public Members

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar

Protected Attributes

std::shared_ptr<Base> model_

contact model to differentiate

Scalar e_jac_

Constant used for computing disturbances in Jacobian calculation

std::vector<ReevaluationFunction> reevals_

functions that need execution before calc or calcDiff

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