ConstraintModelResidualTpl (std::shared_ptr< typename Base::StateAbstract > state, std::shared_ptr< ResidualModelAbstract > residual, const bool T_act=true) Initialize the residual constraint model as an equality constraint. ConstraintModelResidualTpl (std::shared_ptr< typename Base::StateAbstract > state, std::shared_ptr< ResidualModelAbstract > residual, const VectorXs &lower, const VectorXs &upper, const bool T_act=true) Initialize the residual constraint model as an inequality constraint. virtual void calc (const std::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override Compute the residual constraint based on state only. virtual void calc (const std::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override Compute the residual constraint. virtual void calcDiff (const std::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x) override Compute the derivatives of the residual constraint with respect to the state only. virtual void calcDiff (const std::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u) override Compute the derivatives of the residual constraint. template<typename NewScalar> ConstraintModelResidualTpl < NewScalar > cast () const Cast the residual constraint model to a different scalar type. virtual std::shared_ptr< ConstraintDataAbstract > createData (DataCollectorAbstract *const data) override Create the residual constraint data. virtual void print (std::ostream &os) const override Print relevant information of the cost-residual model. ConstraintModelAbstractTpl (std::shared_ptr< StateAbstract > state, const std::size_t ng, const std::size_t nh, const bool T_const=true) Initialize the constraint model. ConstraintModelAbstractTpl (std::shared_ptr< StateAbstract > state, const std::size_t nu, const std::size_t ng, const std::size_t nh, const bool T_const=true) the constraint model ConstraintModelAbstractTpl (std::shared_ptr< StateAbstract > state, std::shared_ptr< ResidualModelAbstract > residual, const std::size_t ng, const std::size_t nh) Initialize the constraint model. const VectorXs & get_lb () const Return the lower bound of the constraint. std::size_t get_ng () const Return the number of inequality constraints. std::size_t get_nh () const Return the number of equality constraints. std::size_t get_nu () const Return the dimension of the control input. const std::shared_ptr< ResidualModelAbstract > & get_residual () const Return the residual model. const std::shared_ptr< StateAbstract > & get_state () const Return the state. bool get_T_constraint () const Return true if the constraint is imposed in terminal nodes as well. ConstraintType get_type () const Return the type of constraint. const VectorXs & get_ub () const Return the upper bound of the constraint. void remove_bounds () Remove the bounds of the constraint. void update_bounds (const VectorXs &lower, const VectorXs &upper) Update the lower and upper bounds the upper bound of constraint.
VectorXs lb_ Lower bound of the constraint. std::size_t ng_ Number of inequality constraints. std::size_t nh_ Number of equality constraints. std::size_t nu_ Control dimension. std::shared_ptr< ResidualModelAbstract > residual_ Residual model. std::shared_ptr< StateAbstract > state_ State description. bool T_constraint_ ConstraintType type_ Type of constraint: inequality=0, equality=1, both=2. VectorXs ub_ Upper bound of the constraint. VectorXs unone_ No control vector. VectorXs lb_ Lower bound of the constraint. std::size_t ng_ Number of inequality constraints. std::size_t nh_ Number of equality constraints. std::size_t nu_ Control dimension. std::shared_ptr< ResidualModelAbstract > residual_ Residual model. std::shared_ptr< StateAbstract > state_ State description. bool T_constraint_ ConstraintType type_ Type of constraint: inequality=0, equality=1, both=2. VectorXs ub_ Upper bound of the constraint. VectorXs unone_ No control vector.
template<typename _Scalar> class crocoddyl::ConstraintModelResidualTpl< _Scalar >
Residual-based constraint.
This constraint function uses a residual model to define equality / inequality constraint as
where describes the residual function, and , are the lower and upper bounds, respectively. We can define element-wise equality constraints by defining the same value for both: lower and upper values. Additionally, if we do not define the bounds, then it is assumed that .
The main computations are carring out in calc and calcDiff routines. calc computes the constraint residual and calcDiff computes the Jacobians of the constraint function. Concretely speaking, calcDiff builds a linear approximation of the constraint function with the form: , , . Additionally, it is important to note that calcDiff() computes the derivatives using the latest stored values by calc() . Thus, we need to run first calc() .
See also ConstraintModelAbstractTpl , calc() , calcDiff() , createData() Definition at line 47 of file residual.hpp .