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< ResidualDataAbstract > | createData (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< StateAbstract > | state_ |
State description. | |
VectorXs | unone_ |
No control vector. | |
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})\).
ResidualModelAbstractTpl()
, calcDiff()
|
explicit |
Initialize the numdiff residual model.
model | Residual model that we want to apply the numerical differentiation |
|
virtual |
Compute the residual vector.
[in] | data | Residual data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
[in] | u | Control input \(\mathbf{u}\in\mathbb{R}^{nu}\) |
|
virtual |
It updates the residual vector based on the state only. This function is used in the terminal nodes of an optimal control problem.
[in] | data | Residual data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
|
virtual |
Compute the Jacobian of the residual vector.
It computes the Jacobian the residual function. It assumes that calc()
has been run first.
[in] | data | Residual data |
[in] | x | State point \(\mathbf{x}\in\mathbb{R}^{ndx}\) |
[in] | u | Control input \(\mathbf{u}\in\mathbb{R}^{nu}\) |
|
virtual |
|
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.
data | Data collector |
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.
reevals | are the registered functions. |