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 |
![]() | |
typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
typedef MathBaseTpl< Scalar > | MathBase |
typedef MathBase::MatrixXs | MatrixXs |
typedef ResidualDataAbstractTpl< Scalar > | ResidualDataAbstract |
typedef StateAbstractTpl< Scalar > | StateAbstract |
typedef MathBase::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... | |
![]() | |
ResidualModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr, const bool q_dependent=true, const bool v_dependent=true, const bool u_dependent=true) | |
ResidualModelAbstractTpl (boost::shared_ptr< StateAbstract > state, const std::size_t nr, const std::size_t nu, const bool q_dependent=true, const bool v_dependent=true, const bool u_dependent=true) | |
Initialize the residual model. More... | |
virtual void | calc (const boost::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
Compute the residual vector for nodes that depends only on the state. More... | |
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) |
Compute the Jacobian of the residual functions with respect to the state only. More... | |
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... | |
std::size_t | get_nr () const |
Return the dimension of the residual vector. | |
std::size_t | get_nu () const |
Return the dimension of the control input. | |
bool | get_q_dependent () const |
Return true if the residual function depends on q. | |
const boost::shared_ptr< StateAbstract > & | get_state () const |
Return the state. | |
bool | get_u_dependent () const |
Return true if the residual function depends on u. | |
bool | get_v_dependent () const |
Return true if the residual function depends on v. | |
virtual void | print (std::ostream &os) const |
Print relevant information of the residual model. More... | |
Public Attributes | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
![]() | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Protected Attributes | |
std::size_t | nu_ |
Control dimension. More... | |
boost::shared_ptr< StateAbstract > | state_ |
State description. More... | |
VectorXs | unone_ |
No control vector. More... | |
![]() | |
std::size_t | nr_ |
Residual vector dimension. More... | |
std::size_t | nu_ |
Control dimension. More... | |
bool | q_dependent_ |
Label that indicates if the residual function depends on q. More... | |
boost::shared_ptr< StateAbstract > | state_ |
State description. More... | |
bool | u_dependent_ |
Label that indicates if the residual function depends on u. More... | |
VectorXs | unone_ |
No control vector. More... | |
bool | v_dependent_ |
Label that indicates if the residual function depends on v. More... | |
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()
Definition at line 28 of file residual.hpp.
typedef ResidualDataAbstractTpl<Scalar> ResidualDataAbstract |
Definition at line 33 of file residual.hpp.
typedef ResidualModelAbstractTpl<Scalar> Base |
Definition at line 34 of file residual.hpp.
typedef ResidualDataNumDiffTpl<Scalar> Data |
Definition at line 35 of file residual.hpp.
typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract |
Definition at line 36 of file residual.hpp.
typedef MathBaseTpl<Scalar> MathBase |
Definition at line 37 of file residual.hpp.
typedef MathBaseTpl<Scalar>::VectorXs VectorXs |
Definition at line 38 of file residual.hpp.
typedef MathBaseTpl<Scalar>::MatrixXs MatrixXs |
Definition at line 39 of file residual.hpp.
typedef boost::function<void(const VectorXs&, const VectorXs&)> ReevaluationFunction |
Definition at line 40 of file residual.hpp.
|
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 |
|
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 |
Reimplemented from ResidualModelAbstractTpl< _Scalar >.
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. |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar |
Definition at line 32 of file residual.hpp.
|
protected |
Control dimension.
Definition at line 181 of file residual-base.hpp.
|
protected |
State description.
Definition at line 179 of file residual-base.hpp.
|
protected |
No control vector.
Definition at line 182 of file residual-base.hpp.