This class computes the numerical differentiation of an action model. More...
#include <action.hpp>
Public Types | |
| typedef ActionDataAbstractTpl< Scalar > | ActionDataAbstract |
| typedef ActionModelAbstractTpl< Scalar > | Base |
| typedef ActionDataNumDiffTpl< Scalar > | Data |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef MathBaseTpl< Scalar >::MatrixXs | MatrixXs |
| typedef MathBaseTpl< Scalar >::VectorXs | VectorXs |
| Public Types inherited from ActionModelAbstractTpl< _Scalar > | |
| typedef ActionDataAbstractTpl< Scalar > | ActionDataAbstract |
| typedef MathBaseTpl< Scalar > | MathBase |
| typedef ScalarSelector< Scalar >::type | ScalarType |
| typedef StateAbstractTpl< Scalar > | StateAbstract |
| typedef MathBase::VectorXs | VectorXs |
Public Member Functions | |
| ActionModelNumDiffTpl (std::shared_ptr< Base > model, bool with_gauss_approx=false) | |
| Initialize the numdiff action model. | |
| virtual void | calc (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override |
| Compute the total cost value for nodes that depends only on the state. | |
| virtual void | calc (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override |
| Compute the next state and cost value. | |
| virtual void | calcDiff (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override |
| Compute the derivatives of the cost functions with respect to the state only. | |
| virtual void | calcDiff (const std::shared_ptr< ActionDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override |
| Compute the derivatives of the dynamics and cost functions. | |
| template<typename NewScalar> | |
| ActionModelNumDiffTpl< NewScalar > | cast () const |
| Cast the action numdiff model to a different scalar type. | |
| virtual std::shared_ptr< ActionDataAbstract > | createData () override |
| Create the action data. | |
| const Scalar | get_disturbance () const |
| Return the disturbance constant used in the numerical differentiation routine. | |
| const std::shared_ptr< Base > & | get_model () const |
| Return the acton model that we use to numerical differentiate. | |
| bool | get_with_gauss_approx () |
| Identify if the Gauss approximation is going to be used or not. | |
| virtual void | print (std::ostream &os) const override |
| Print relevant information of the diff-action numdiff model. | |
| virtual void | quasiStatic (const std::shared_ptr< ActionDataAbstract > &data, Eigen::Ref< VectorXs > u, const Eigen::Ref< const VectorXs > &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9)) override |
| Computes the quasic static commands. | |
| void | set_disturbance (const Scalar disturbance) |
| Modify the disturbance constant used in the numerical differentiation routine. | |
| Public Member Functions inherited from ActionModelAbstractTpl< _Scalar > | |
| ActionModelAbstractTpl (const ActionModelAbstractTpl< Scalar > &other) | |
| Copy constructor. | |
| ActionModelAbstractTpl (std::shared_ptr< StateAbstract > state, const std::size_t nu, const std::size_t nr=0, const std::size_t ng=0, const std::size_t nh=0, const std::size_t ng_T=0, const std::size_t nh_T=0) | |
| Initialize the action model. | |
| virtual bool | checkData (const std::shared_ptr< ActionDataAbstract > &data) |
| Checks that a specific data belongs to this model. | |
| virtual const VectorXs & | get_g_lb () const |
| Return the lower bound of the inequality constraints. | |
| virtual const VectorXs & | get_g_ub () const |
| Return the upper bound of the inequality constraints. | |
| bool | get_has_control_limits () const |
| Indicates if there are defined control limits. | |
| virtual std::size_t | get_ng () const |
| Return the number of inequality constraints. | |
| virtual std::size_t | get_ng_T () const |
| Return the number of inequality terminal constraints. | |
| virtual std::size_t | get_nh () const |
| Return the number of equality constraints. | |
| virtual std::size_t | get_nh_T () const |
| Return the number of equality terminal constraints. | |
| std::size_t | get_nr () const |
| Return the dimension of the cost-residual vector. | |
| std::size_t | get_nu () const |
| Return the dimension of the control input. | |
| const std::shared_ptr< StateAbstract > & | get_state () const |
| Return the state. | |
| const VectorXs & | get_u_lb () const |
| Return the control lower bound. | |
| const VectorXs & | get_u_ub () const |
| Return the control upper bound. | |
| VectorXs | quasiStatic_x (const std::shared_ptr< ActionDataAbstract > &data, const VectorXs &x, const std::size_t maxiter=100, const Scalar tol=Scalar(1e-9)) |
| void | set_g_lb (const VectorXs &g_lb) |
| Modify the lower bound of the inequality constraints. | |
| void | set_g_ub (const VectorXs &g_ub) |
| Modify the upper bound of the inequality constraints. | |
| void | set_u_lb (const VectorXs &u_lb) |
| Modify the control lower bounds. | |
| void | set_u_ub (const VectorXs &u_ub) |
| Modify the control upper bounds. | |
Public Attributes | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
| Public Attributes inherited from ActionModelAbstractTpl< _Scalar > | |
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar | Scalar |
Protected Attributes | |
| bool | has_control_limits_ |
| std::size_t | nr_ |
| std::size_t | nu_ |
| < Dimension of the cost residual | |
| std::shared_ptr< StateAbstract > | state_ |
| < Control dimension | |
| VectorXs | u_lb_ |
| < Model of the state | |
| VectorXs | u_ub_ |
| < Lower control limits | |
| Protected Attributes inherited from ActionModelAbstractTpl< _Scalar > | |
| VectorXs | g_lb_ |
| Lower bound of the inequality constraints. | |
| VectorXs | g_ub_ |
| Lower bound of the inequality constraints. | |
| bool | has_control_limits_ |
| std::size_t | ng_ |
| Number of inequality constraints. | |
| std::size_t | ng_T_ |
| Number of inequality terminal constraints. | |
| std::size_t | nh_ |
| Number of equality constraints. | |
| std::size_t | nh_T_ |
| Number of equality terminal constraints. | |
| std::size_t | nr_ |
| Dimension of the cost residual. | |
| std::size_t | nu_ |
| Control dimension. | |
| std::shared_ptr< StateAbstract > | state_ |
| Model of the state. | |
| VectorXs | u_lb_ |
| Lower control limits. | |
| VectorXs | u_ub_ |
| Upper control limits. | |
| VectorXs | unone_ |
| Neutral state. | |
Additional Inherited Members | |
| Protected Member Functions inherited from ActionModelAbstractTpl< _Scalar > | |
| void | update_has_control_limits () |
| Update the status of the control limits (i.e. if there are defined limits) | |
This class computes the numerical differentiation of an action model.
It computes the Jacobian of the cost, its residual and dynamics via numerical differentiation. It considers that the action model owns a cost residual and the cost is the square of this residual, i.e., 


where the Jacobians of the cost residuals are denoted by 


Finally, in the case that the cost does not have a residual, we set the Hessian to zero, i.e., 
Definition at line 44 of file action.hpp.
| typedef ActionDataAbstractTpl<Scalar> ActionDataAbstract |
Definition at line 50 of file action.hpp.
| typedef ActionModelAbstractTpl<Scalar> Base |
Definition at line 51 of file action.hpp.
| typedef ActionDataNumDiffTpl<Scalar> Data |
Definition at line 52 of file action.hpp.
| typedef MathBaseTpl<Scalar> MathBase |
Definition at line 53 of file action.hpp.
| typedef MathBaseTpl<Scalar>::VectorXs VectorXs |
Definition at line 54 of file action.hpp.
| typedef MathBaseTpl<Scalar>::MatrixXs MatrixXs |
Definition at line 55 of file action.hpp.
| explicit |
Initialize the numdiff action model.
| [in] | model | Action model that we want to apply the numerical differentiation |
| [in] | with_gauss_approx | True if we want to use the Gauss approximation for computing the Hessians |
| overridevirtual |
Compute the next state and cost value.
| [in] | data | Action data |
| [in] | x | State point ![]() |
| [in] | u | Control input ![]() |
Implements ActionModelAbstractTpl< _Scalar >.
| overridevirtual |
Compute the total cost value for nodes that depends only on the state.
It updates the total cost and the next state is not computed as it is not expected to change. This function is used in the terminal nodes of an optimal control problem.
| [in] | data | Action data |
| [in] | x | State point ![]() |
Reimplemented from ActionModelAbstractTpl< _Scalar >.
| overridevirtual |
Compute the derivatives of the dynamics and cost functions.
It computes the partial derivatives of the dynamical system and the cost function. It assumes that calc() has been run first. This function builds a linear-quadratic approximation of the action model (i.e. dynamical system and cost function).
| [in] | data | Action data |
| [in] | x | State point ![]() |
| [in] | u | Control input ![]() |
Implements ActionModelAbstractTpl< _Scalar >.
| overridevirtual |
Compute the derivatives of the cost functions with respect to the state only.
It updates the derivatives of the cost function with respect to the state only. This function is used in the terminal nodes of an optimal control problem.
| [in] | data | Action data |
| [in] | x | State point ![]() |
Reimplemented from ActionModelAbstractTpl< _Scalar >.
| overridevirtual |
| overridevirtual |
Computes the quasic static commands.
The quasic static commands are the ones produced for a the reference posture as an equilibrium point, i.e. for 
| [in] | data | Action data |
| [out] | u | Quasic static commands |
| [in] | x | State point (velocity has to be zero) |
| [in] | maxiter | Maximum allowed number of iterations |
| [in] | tol | Tolerance |
Reimplemented from ActionModelAbstractTpl< _Scalar >.
| ActionModelNumDiffTpl< NewScalar > cast | ( | ) | const |
Cast the action numdiff model to a different scalar type.
It is useful for operations requiring different precision or scalar types.
| NewScalar | The new scalar type to cast to. |
| overridevirtual |
Print relevant information of the diff-action numdiff model.
| [out] | os | Output stream object |
Reimplemented from ActionModelAbstractTpl< _Scalar >.
| EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef _Scalar Scalar |
Definition at line 49 of file action.hpp.
| protected |
Indicates whether any of the control limits is finite
Definition at line 340 of file action-base.hpp.
| protected |
< Indicates whether any of the control limits
Definition at line 329 of file action-base.hpp.
| protected |
< Dimension of the cost residual
Definition at line 328 of file action-base.hpp.
| protected |
< Control dimension
Definition at line 334 of file action-base.hpp.
| protected |
< Model of the state
Definition at line 338 of file action-base.hpp.
| protected |
< Lower control limits
Definition at line 339 of file action-base.hpp.