Template Class ResidualModelCoMPositionTpl

Inheritance Relationships

Base Type

Class Documentation

template<typename _Scalar>
class ResidualModelCoMPositionTpl : public crocoddyl::ResidualModelAbstractTpl<_Scalar>

CoM position residual.

This residual function defines the CoM tracking as \(\mathbf{r}=\mathbf{c}-\mathbf{c}^*\), where \(\mathbf{c},\mathbf{c}^*\in~\mathbb{R}^3\) are the current and reference CoM position, respectively. Note that the dimension of the residual vector is obtained from 3. Furthermore, the Jacobians of the residual function are computed analytically.

As described in ResidualModelAbstractTpl(), the residual value and its Jacobians are calculated by calc and calcDiff, respectively.

Public Types

typedef MathBaseTpl<Scalar> MathBase
typedef ResidualModelAbstractTpl<Scalar> Base
typedef ResidualDataCoMPositionTpl<Scalar> Data
typedef StateMultibodyTpl<Scalar> StateMultibody
typedef ResidualDataAbstractTpl<Scalar> ResidualDataAbstract
typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract
typedef MathBase::Vector3s Vector3s
typedef MathBase::VectorXs VectorXs

Public Functions

ResidualModelCoMPositionTpl(std::shared_ptr<StateMultibody> state, const Vector3s &cref, const std::size_t nu)

Initialize the CoM position residual model.

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

  • cref[in] Reference CoM position

  • nu[in] Dimension of the control vector

ResidualModelCoMPositionTpl(std::shared_ptr<StateMultibody> state, const Vector3s &cref)

Initialize the CoM position residual model.

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

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

  • cref[in] Reference CoM position

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

Compute the CoM position residual.

Parameters:
  • data[in] CoM position residual 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<ResidualDataAbstract> &data, const Eigen::Ref<const VectorXs> &x, const Eigen::Ref<const VectorXs> &u) override

Compute the derivatives of the CoM position residual.

Parameters:
  • data[in] CoM position residual data

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

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

virtual std::shared_ptr<ResidualDataAbstract> createData(DataCollectorAbstract *const data) override

Create the residual data.

The default data contains objects to store the values of the residual vector and their Jacobians. However, it is possible to specialize this function if we need to create additional data, for instance, to avoid dynamic memory allocation.

Parameters:

data – Data collector

Returns:

the residual data

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

Cast the com-position residual 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:

ResidualModelCoMPositionTpl<NewScalar> A residual model with the new scalar type.

const Vector3s &get_reference() const

Return the CoM position reference.

void set_reference(const Vector3s &cref)

Modify the CoM position reference.

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

Print relevant information of the com-position residual.

Parameters:

os[out] Output stream object

Public Members

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar

Protected Attributes

std::size_t nu_

Control dimension.

std::shared_ptr<StateAbstract> state_

State description.

bool u_dependent_

Label that indicates if the residual function depends on u

bool v_dependent_

Label that indicates if the residual function depends on v