mc_solver::utils::GenInequalityConstraint< UpdateT > Class Template Reference

#include <mc_solver/GenInequalityConstraint.h>

Inheritance diagram for mc_solver::utils::GenInequalityConstraint< UpdateT >:
Collaboration diagram for mc_solver::utils::GenInequalityConstraint< UpdateT >:

Public Types

using Base = Constraint< tasks::qp::GenInequality, UpdateT >
 

Public Member Functions

template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateRobot>::value>::type>
 GenInequalityConstraint (unsigned int rIndex)
 
template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateLambda>::value>::type>
 GenInequalityConstraint (const tasks::qp::ContactId &cid)
 
template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateForce>::value>::type>
 GenInequalityConstraint (const mc_solver::QPSolver &solver, const tasks::qp::ContactId &cid)
 
const Eigen::MatrixXd & AGenInEq () const override
 
std::string descGenInEq (const std::vector< rbd::MultiBody > &, int i) override
 

Additional Inherited Members

- Protected Member Functions inherited from mc_solver::utils::Constraint< tasks::qp::GenInequality, UpdateT >
 Constraint (unsigned int rIndex)
 
 Constraint (const tasks::qp::ContactId &cid)
 
 Constraint (const mc_solver::QPSolver &solver, const tasks::qp::ContactId &cid)
 
virtual ~Constraint ()
 
void updateNrVars (const std::vector< rbd::MultiBody > &mbs, const tasks::qp::SolverData &data) override
 
void update (const std::vector< rbd::MultiBody > &mbs, const std::vector< rbd::MultiBodyConfig > &mbcs, const tasks::qp::SolverData &data) override
 

Detailed Description

template<typename UpdateT>
class mc_solver::utils::GenInequalityConstraint< UpdateT >

Helper class to write a general inequality constraint for Tasks.

This implements \( L \le A * x \le U \)

You must implement the following functions:

  • const Eigen::MatrixXd & A() const override; // Return A
  • void compute() override; // Update constraint matrix and bounds
  • int maxGenInEq() const override; // Number of inequality lines
  • std::string nameGenInEq() const override; // Desriptive name of the constraint
  • const Eigen::VectorXd & LowerGenInEq() const override; // Return the lower bound L
  • const Eigen::VectorXd & UpperGenInEq() const override; // Return the upper bound U

Depending on what the constraint applies to you have to make sure A has the following size:

  • (nrLines, alphaD.size()) for a constraint on a robot's state
  • (nrLines, nrLambda) for a constraint on the lambdas of a t
  • (nrLines, 6) for a constraint on a wrench

Member Typedef Documentation

◆ Base

template<typename UpdateT >
using mc_solver::utils::GenInequalityConstraint< UpdateT >::Base = Constraint<tasks::qp::GenInequality, UpdateT>

Constructor & Destructor Documentation

◆ GenInequalityConstraint() [1/3]

template<typename UpdateT >
template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateRobot>::value>::type>
mc_solver::utils::GenInequalityConstraint< UpdateT >::GenInequalityConstraint ( unsigned int  rIndex)
inlineexplicit

◆ GenInequalityConstraint() [2/3]

template<typename UpdateT >
template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateLambda>::value>::type>
mc_solver::utils::GenInequalityConstraint< UpdateT >::GenInequalityConstraint ( const tasks::qp::ContactId &  cid)
inlineexplicit

◆ GenInequalityConstraint() [3/3]

template<typename UpdateT >
template<typename U = UpdateT, typename = typename std::enable_if<std::is_same<U, utils::UpdateForce>::value>::type>
mc_solver::utils::GenInequalityConstraint< UpdateT >::GenInequalityConstraint ( const mc_solver::QPSolver solver,
const tasks::qp::ContactId &  cid 
)
inline

Member Function Documentation

◆ AGenInEq()

template<typename UpdateT >
const Eigen::MatrixXd& mc_solver::utils::GenInequalityConstraint< UpdateT >::AGenInEq ( ) const
inlineoverride

◆ descGenInEq()

template<typename UpdateT >
std::string mc_solver::utils::GenInequalityConstraint< UpdateT >::descGenInEq ( const std::vector< rbd::MultiBody > &  ,
int  i 
)
inlineoverride

The documentation for this class was generated from the following file: