27 template<
typename Constra
intT,
typename UpdateT>
28 struct Constraint :
public tasks::qp::ConstraintFunction<ConstraintT>, UpdateT
30 static_assert(std::is_same<ConstraintT, tasks::qp::Equality>::value
31 || std::is_same<ConstraintT, tasks::qp::Inequality>::value
32 || std::is_same<ConstraintT, tasks::qp::GenInequality>::value,
33 "This must be instanciated with a known ConstraintT");
40 template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateRobot>::value>::type>
41 explicit Constraint(
unsigned int rIndex) : UpdateT(rIndex)
45 template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateLambda>::value>::type>
46 explicit Constraint(
const tasks::qp::ContactId & cid) : UpdateT(cid)
50 template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateForce>::value>::type>
58 void updateNrVars(
const std::vector<rbd::MultiBody> & mbs,
const tasks::qp::SolverData & data)
override
60 UpdateT::updateNrVarsImpl(mbs, data);
63 void update(
const std::vector<rbd::MultiBody> & mbs,
64 const std::vector<rbd::MultiBodyConfig> & mbcs,
65 const tasks::qp::SolverData & data)
override
67 UpdateT::updateImpl(mbs, mbcs, data);