9 #ifndef CROCODDYL_CORE_CONSTRAINTS_RESIDUAL_CONSTRAINT_HPP_
10 #define CROCODDYL_CORE_CONSTRAINTS_RESIDUAL_CONSTRAINT_HPP_
12 #include "crocoddyl/core/fwd.hpp"
14 #include "crocoddyl/core/constraint-base.hpp"
15 #include "crocoddyl/core/residual-base.hpp"
46 template <
typename _Scalar>
49 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
51 typedef _Scalar Scalar;
57 typedef typename MathBase::VectorXs VectorXs;
70 boost::shared_ptr<typename Base::StateAbstract> state,
71 boost::shared_ptr<ResidualModelAbstract> residual,
const VectorXs& lower,
72 const VectorXs& upper,
const bool T_act =
true);
83 boost::shared_ptr<typename Base::StateAbstract> state,
84 boost::shared_ptr<ResidualModelAbstract> residual,
85 const bool T_act =
true);
95 virtual void calc(
const boost::shared_ptr<ConstraintDataAbstract>& data,
96 const Eigen::Ref<const VectorXs>& x,
97 const Eigen::Ref<const VectorXs>& u);
108 virtual void calc(
const boost::shared_ptr<ConstraintDataAbstract>& data,
109 const Eigen::Ref<const VectorXs>& x);
118 virtual void calcDiff(
const boost::shared_ptr<ConstraintDataAbstract>& data,
119 const Eigen::Ref<const VectorXs>& x,
120 const Eigen::Ref<const VectorXs>& u);
133 virtual void calcDiff(
const boost::shared_ptr<ConstraintDataAbstract>& data,
134 const Eigen::Ref<const VectorXs>& x);
139 virtual boost::shared_ptr<ConstraintDataAbstract>
createData(
147 virtual void print(std::ostream& os)
const;
150 void updateCalc(
const boost::shared_ptr<ConstraintDataAbstract>& data);
151 void updateCalcDiff(
const boost::shared_ptr<ConstraintDataAbstract>& data);
166 template <
typename _Scalar>
168 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
170 typedef _Scalar Scalar;
175 template <
template <
typename Scalar>
class Model>
178 :
Base(model, data) {}
195 #include "crocoddyl/core/constraints/residual.hxx"
Abstract class for constraint models.
boost::shared_ptr< StateAbstract > state_
State description.
std::size_t nu_
Control dimension.
VectorXs unone_
No control vector.
std::size_t nh_
Number of equality constraints.
boost::shared_ptr< ResidualModelAbstract > residual_
Residual model.
VectorXs lb_
Lower bound of the constraint.
ConstraintType type_
Type of constraint: inequality=0, equality=1, both=2.
VectorXs ub_
Upper bound of the constraint.
std::size_t ng_
Number of inequality constraints.
Residual-based constraint.
virtual boost::shared_ptr< ConstraintDataAbstract > createData(DataCollectorAbstract *const data)
Create the residual constraint data.
ConstraintModelResidualTpl(boost::shared_ptr< typename Base::StateAbstract > state, boost::shared_ptr< ResidualModelAbstract > residual, const bool T_act=true)
Initialize the residual constraint model as an equality constraint.
virtual void calcDiff(const boost::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
Compute the derivatives of the residual constraint with respect to the state only.
virtual void print(std::ostream &os) const
Print relevant information of the cost-residual model.
virtual void calc(const boost::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x)
Compute the residual constraint based on state only.
virtual void calc(const boost::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
Compute the residual constraint.
virtual void calcDiff(const boost::shared_ptr< ConstraintDataAbstract > &data, const Eigen::Ref< const VectorXs > &x, const Eigen::Ref< const VectorXs > &u)
Compute the derivatives of the residual constraint.
ConstraintModelResidualTpl(boost::shared_ptr< typename Base::StateAbstract > state, boost::shared_ptr< ResidualModelAbstract > residual, const VectorXs &lower, const VectorXs &upper, const bool T_act=true)
Initialize the residual constraint model as an inequality constraint.
Abstract class for residual models.
MatrixXs Gx
Jacobian of the inequality constraint.
VectorXs h
Equality constraint values.
boost::shared_ptr< ResidualDataAbstract > residual
Residual data.
VectorXs g
Inequality constraint values.
MatrixXs Hx
Jacobian of the equality constraint.
MatrixXs Hu
Jacobian of the equality constraint.
DataCollectorAbstract * shared
Shared data.
MatrixXs Gu
Jacobian of the inequality constraint.