This class computes the numerical differentiation of a residual model. More...
#include <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 ActivationDataAbstractTpl< Scalar > | ActivationDataAbstract |
typedef CostDataAbstractTpl< Scalar > | CostDataAbstract |
typedef DataCollectorAbstractTpl< Scalar > | DataCollectorAbstract |
typedef MathBase::DiagonalMatrixXs | DiagonalMatrixXs |
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 std::shared_ptr< Base > &model) | |
Initialize the numdiff residual model. | |
virtual | ~ResidualModelNumDiffTpl ()=default |
Initialize the numdiff residual model. | |
virtual void | calc (const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override |
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. | |
virtual void | calcDiff (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. | |
template<typename NewScalar > | |
ResidualModelNumDiffTpl< NewScalar > | cast () const |
virtual std::shared_ptr< ResidualDataAbstract > | createData (DataCollectorAbstract *const data) override |
Create the residual data. | |
const Scalar | get_disturbance () const |
Return the disturbance constant used by the numerical differentiation routine. | |
const std::shared_ptr< Base > & | get_model () const |
Return the original residual model. | |
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. | |
![]() | |
ResidualModelAbstractTpl (std::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 (std::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. | |
virtual void | calc (const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
Compute the residual vector for nodes that depends only on the state. | |
virtual void | calc (const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
Compute the residual vector. | |
virtual void | calcCostDiff (const std::shared_ptr< CostDataAbstract > &cdata, const std::shared_ptr< ResidualDataAbstract > &rdata, const std::shared_ptr< ActivationDataAbstract > &adata, const bool update_u=true) |
Compute the derivative of the cost function. | |
virtual void | calcDiff (const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) |
Compute the Jacobian of the residual functions with respect to the state only. | |
virtual void | calcDiff (const std::shared_ptr< ResidualDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) |
Compute the Jacobian of the residual vector. | |
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 std::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. | |
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. | |
std::shared_ptr< StateAbstract > | state_ |
State description. | |
VectorXs | unone_ |
No control vector. | |
![]() | |
std::size_t | nr_ |
Residual vector dimension. | |
std::size_t | nu_ |
Control dimension. | |
bool | q_dependent_ |
std::shared_ptr< StateAbstract > | state_ |
State description. | |
bool | u_dependent_ |
VectorXs | unone_ |
No control vector. | |
bool | v_dependent_ |
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})\).
ResidualModelAbstractTpl()
, calcDiff()
Definition at line 29 of file residual.hpp.
typedef ResidualDataAbstractTpl<Scalar> ResidualDataAbstract |
Definition at line 35 of file residual.hpp.
typedef ResidualModelAbstractTpl<Scalar> Base |
Definition at line 36 of file residual.hpp.
typedef ResidualDataNumDiffTpl<Scalar> Data |
Definition at line 37 of file residual.hpp.
typedef DataCollectorAbstractTpl<Scalar> DataCollectorAbstract |
Definition at line 38 of file residual.hpp.
typedef MathBaseTpl<Scalar> MathBase |
Definition at line 39 of file residual.hpp.
typedef MathBaseTpl<Scalar>::VectorXs VectorXs |
Definition at line 40 of file residual.hpp.
typedef MathBaseTpl<Scalar>::MatrixXs MatrixXs |
Definition at line 41 of file residual.hpp.
typedef boost::function<void(const VectorXs&, const VectorXs&)> ReevaluationFunction |
Definition at line 43 of file residual.hpp.
|
explicit |
Initialize the numdiff residual model.
model | Residual model that we want to apply the numerical differentiation |
|
overridevirtual |
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}\) |
|
overridevirtual |
|
overridevirtual |
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}\) |
|
overridevirtual |
|
overridevirtual |
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.
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 34 of file residual.hpp.
|
protected |
Control dimension.
Definition at line 232 of file residual-base.hpp.
|
protected |
State description.
Definition at line 230 of file residual-base.hpp.
|
protected |
No control vector.
Definition at line 233 of file residual-base.hpp.