crocoddyl  1.9.0
Contact RObot COntrol by Differential DYnamic programming Library (Crocoddyl)
ResidualModelNumDiffTpl< _Scalar > Class Template Reference

This class computes the numerical differentiation of a residual model. More...

#include <crocoddyl/core/numdiff/residual.hpp>

Public Types

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

Public Member Functions

 ResidualModelNumDiffTpl (const boost::shared_ptr< Base > &model)
 Initialize the numdiff residual model. More...
 
virtual ~ResidualModelNumDiffTpl ()
 Initialize the numdiff residual model.
 
virtual void calc (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 
virtual void calc (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 Compute the residual vector. More...
 
virtual void calcDiff (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
 
virtual void calcDiff (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
 Compute the Jacobian of the residual vector. More...
 
virtual boost::shared_ptr< ResidualDataAbstractcreateData (DataCollectorAbstract *const data)
 Create the residual data. More...
 
const Scalar get_disturbance () const
 Return the disturbance value used by the numdiff routine.
 
const boost::shared_ptr< Base > & get_model () const
 Return the original residual model.
 
void set_disturbance (const Scalar disturbance)
 Modify the disturbance value used by the numdiff 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. More...
 

Public Attributes

EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar
 

Protected Attributes

std::size_t nu_
 Control dimension.
 
boost::shared_ptr< StateAbstractstate_
 State description.
 
VectorXs unone_
 No control vector.
 

Detailed Description

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

This class computes the numerical differentiation of a residual model.

It computes 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()

Definition at line 230 of file fwd.hpp.

Constructor & Destructor Documentation

◆ ResidualModelNumDiffTpl()

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

Initialize the numdiff residual model.

Parameters
modelResidual model that we want to apply the numerical differentiation

Member Function Documentation

◆ calc() [1/2]

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

Compute the residual vector.

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

◆ calc() [2/2]

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

It updates the residual vector based on the state only. This function is used in the terminal nodes of an optimal control problem.

Parameters
[in]dataResidual data
[in]xState point \(\mathbf{x}\in\mathbb{R}^{ndx}\)

◆ calcDiff() [1/2]

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

Compute the Jacobian of the residual vector.

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

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

◆ calcDiff() [2/2]

virtual void calcDiff ( const boost::shared_ptr< ResidualDataAbstract > &  data,
const Eigen::Ref< const VectorXs > &  x 
)
virtual

◆ createData()

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

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 specialized this function if we need to create additional data, for instance, to avoid dynamic memory allocation.

Parameters
dataData collector
Returns
the residual data

◆ set_reevals()

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
reevalsare the registered functions.

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