Template Class ResidualModelNumDiffTpl

Inheritance Relationships

Base Type

Class Documentation

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

This class computes the numerical differentiation of a residual model.

It computes the Jacobian of the residual model via numerical differentiation, i.e., \(\mathbf{R_x}\) and \(\mathbf{R_u}\) which denote the Jacobians of the residual function \(\mathbf{r}(\mathbf{x},\mathbf{u})\).

See also

ResidualModelAbstractTpl(), calcDiff()

Public Types

typedef ResidualDataAbstractTpl<Scalar> ResidualDataAbstract
typedef ResidualModelAbstractTpl<Scalar> Base
typedef ResidualDataNumDiffTpl<Scalar> Data
typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract
typedef MathBaseTpl<Scalar> MathBase
typedef MathBaseTpl<Scalar>::VectorXs VectorXs
typedef MathBaseTpl<Scalar>::MatrixXs MatrixXs
typedef boost::function<void(const VectorXs&, const VectorXs&)> ReevaluationFunction

Public Functions

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

Initialize the numdiff residual model.

Parameters:

model – Residual model that we want to apply the numerical differentiation

virtual ~ResidualModelNumDiffTpl() = default

Initialize the numdiff residual model.

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

Compute the residual vector.

Parameters:
  • data[in] Residual data

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

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

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

Compute the Jacobian of the residual vector.

It computes the Jacobian the residual function. It assumes that calc() has been run first.

Parameters:
  • data[in] 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) override
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>
ResidualModelNumDiffTpl<NewScalar> cast() const
const std::shared_ptr<Base> &get_model() const

Return the original residual model.

const Scalar get_disturbance() const

Return the disturbance constant used by the numerical differentiation routine.

void set_disturbance(const Scalar disturbance)

Modify the disturbance constant used by the numerical differentiation routine.

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

Register functions that updates the shared data computed for a system rollout 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::size_t nu_

Control dimension.

std::shared_ptr<StateAbstract> state_

State description.

VectorXs unone_

No control vector.