tasks::qp Namespace Reference

Classes

struct  BilateralContact
 
class  Bound
 
class  BoundedSpeedConstr
 
class  CollisionConstr
 
class  CoMIncPlaneConstr
 
class  CoMTask
 
struct  constr_traits
 
struct  constr_traits< Equality >
 
struct  constr_traits< GenInequality >
 
struct  constr_traits< Inequality >
 
class  Constraint
 
class  ConstraintFunction
 
class  ContactAccConstr
 
class  ContactConstr
 
class  ContactConstrCommon
 
struct  ContactId
 
class  ContactPosConstr
 
class  ContactSpeedConstr
 
class  ContactTask
 
class  DamperJointLimitsConstr
 
class  Equality
 
struct  FrictionCone
 
class  GazeTask
 
class  GenInequality
 
class  GenQPSolver
 
class  GripperTorqueConstr
 
class  GripperTorqueTask
 
class  HighLevelTask
 
class  ImageConstr
 
class  Inequality
 
struct  JointGains
 
class  JointLimitsConstr
 
class  JointsSelector
 
struct  JointStiffness
 
class  LinVelocityTask
 
class  LSSOLQPSolver
 
class  MomentumTask
 
class  MotionConstr
 
class  MotionConstrCommon
 
class  MotionPolyConstr
 Use polynome in function of q to compute torque limits. BEWARE: Only work with 1 dof/param joint. More...
 
class  MotionSpringConstr
 
class  MultiCoMTask
 
class  MultiRobotTransformTask
 
class  OrientationTask
 
class  OrientationTrackingTask
 
class  PIDTask
 
class  PositionBasedVisServoTask
 
class  PositionTask
 
class  PositiveLambda
 
class  PostureTask
 
class  QLDQPSolver
 
class  QPSolver
 
class  RelativeDistTask
 
class  SetPointTask
 
class  SetPointTaskCommon
 
class  SolverData
 
struct  SpringJoint
 
class  SurfaceOrientationTask
 
class  SurfaceTransformTask
 TransformTask in surface frame. More...
 
class  TargetObjectiveTask
 
class  Task
 
class  TorqueTask
 
class  TrackingTask
 
class  TrajectoryTask
 
class  TransformTask
 TransformTask in world or user frame. More...
 
class  TransformTaskCommon
 
struct  UnilateralContact
 
class  VectorOrientationTask
 

Functions

void fillQC (const std::vector< Task * > &tasks, int nrVars, Eigen::MatrixXd &Q, Eigen::VectorXd &C)
 
void reduceQC (const Eigen::MatrixXd &QFull, const Eigen::VectorXd &CFull, Eigen::MatrixXd &Q, Eigen::VectorXd &C, const Eigen::SparseMatrix< double > &M)
 
int fillEq (const std::vector< Equality * > &eq, int nrVars, int nrALines, Eigen::MatrixXd &A, Eigen::VectorXd &AL, Eigen::VectorXd &AU)
 
int fillInEq (const std::vector< Inequality * > &inEq, int nrVars, int nrALines, Eigen::MatrixXd &A, Eigen::VectorXd &AL, Eigen::VectorXd &AU)
 
int fillGenInEq (const std::vector< GenInequality * > &genInEq, int nrVars, int nrALines, Eigen::MatrixXd &A, Eigen::VectorXd &AL, Eigen::VectorXd &AU)
 
int fillEq (const std::vector< Equality * > &eq, int nrVars, int nrALines, Eigen::MatrixXd &A, Eigen::VectorXd &b)
 
int fillInEq (const std::vector< Inequality * > &inEq, int nrVars, int nrALines, Eigen::MatrixXd &A, Eigen::VectorXd &b)
 
int fillGenInEq (const std::vector< GenInequality * > &genInEq, int nrVars, int nrALines, Eigen::MatrixXd &A, Eigen::VectorXd &b)
 
void fillBound (const std::vector< Bound * > &bounds, Eigen::VectorXd &XL, Eigen::VectorXd &XU)
 
void reduceA (const Eigen::MatrixXd &AFull, Eigen::MatrixXd &A, const Eigen::SparseMatrix< double > &M)
 
void reduceBound (const Eigen::VectorXd &XLFull, Eigen::VectorXd &XL, const Eigen::VectorXd &XUFull, Eigen::VectorXd &XU, const std::vector< int > &fullToReduced, const std::vector< int > &reducedToFull, const std::vector< std::tuple< int, int, double >> &dependencies)
 
void expandResult (const Eigen::VectorXd &result, Eigen::VectorXd &resultFull, const Eigen::SparseMatrix< double > &multipliers)
 
template<typename T >
std::ostream & printConstr (const Eigen::VectorXd &result, T *constr, int line, std::ostream &out)
 
template<>
std::ostream & printConstr (const Eigen::VectorXd &result, Equality *constr, int line, std::ostream &out)
 
template<>
std::ostream & printConstr (const Eigen::VectorXd &result, Inequality *constr, int line, std::ostream &out)
 
template<>
std::ostream & printConstr (const Eigen::VectorXd &result, GenInequality *constr, int line, std::ostream &out)
 
template<typename T >
std::ostream & constrErrorMsg (const std::vector< rbd::MultiBody > &mbs, const Eigen::VectorXd &result, int ALine, const std::vector< T * > &constr, int &start, int &end, std::ostream &out)
 
TASKS_DLLAPI GenQPSolvercreateQPSolver (const std::string &name)
 
TASKS_DLLAPI sch::Matrix4x4 tosch (const sva::PTransformd &t)
 Convert a sch-core transformation matrix to a sva::PTransformd matrix. More...
 
int findJointFromVector (const rbd::MultiBody &mb, int line, bool withBase)
 
bool compareDof (const rbd::MultiBody &mb1, const rbd::MultiBody &mb2)
 

Function Documentation

◆ compareDof()

bool tasks::qp::compareDof ( const rbd::MultiBody &  mb1,
const rbd::MultiBody &  mb2 
)
inline

◆ constrErrorMsg()

template<typename T >
std::ostream& tasks::qp::constrErrorMsg ( const std::vector< rbd::MultiBody > &  mbs,
const Eigen::VectorXd &  result,
int  ALine,
const std::vector< T * > &  constr,
int &  start,
int &  end,
std::ostream &  out 
)
inline

◆ createQPSolver()

TASKS_DLLAPI GenQPSolver* tasks::qp::createQPSolver ( const std::string &  name)

Factory to create GenQPSolver implementation. Two argument are supported QLD and LSSOL.

◆ expandResult()

void tasks::qp::expandResult ( const Eigen::VectorXd &  result,
Eigen::VectorXd &  resultFull,
const Eigen::SparseMatrix< double > &  multipliers 
)
inline

Return the full variable from the reduced variable

◆ fillBound()

void tasks::qp::fillBound ( const std::vector< Bound * > &  bounds,
Eigen::VectorXd &  XL,
Eigen::VectorXd &  XU 
)
inline

Fill the \( L \) and \( U \) bounds vectors based on the bound constaint list.

◆ fillEq() [1/2]

int tasks::qp::fillEq ( const std::vector< Equality * > &  eq,
int  nrVars,
int  nrALines,
Eigen::MatrixXd &  A,
Eigen::VectorXd &  AL,
Eigen::VectorXd &  AU 
)
inline

Fill the \( A \) matrix and the \( L \) and \( U \) bounds vectors based on the equality constaint list.

◆ fillEq() [2/2]

int tasks::qp::fillEq ( const std::vector< Equality * > &  eq,
int  nrVars,
int  nrALines,
Eigen::MatrixXd &  A,
Eigen::VectorXd &  b 
)
inline

Fill the \( A \) matrix and the \( b \) vectors based on the equality constaint list.

◆ fillGenInEq() [1/2]

int tasks::qp::fillGenInEq ( const std::vector< GenInequality * > &  genInEq,
int  nrVars,
int  nrALines,
Eigen::MatrixXd &  A,
Eigen::VectorXd &  AL,
Eigen::VectorXd &  AU 
)
inline

Fill the \( A \) matrix and the \( L \) and \( U \) bounds vectors based on the general inequality constaint list.

◆ fillGenInEq() [2/2]

int tasks::qp::fillGenInEq ( const std::vector< GenInequality * > &  genInEq,
int  nrVars,
int  nrALines,
Eigen::MatrixXd &  A,
Eigen::VectorXd &  b 
)
inline

Fill the \( A \) matrix and the \( b \) vectors based on the general inequality constaint list.

◆ fillInEq() [1/2]

int tasks::qp::fillInEq ( const std::vector< Inequality * > &  inEq,
int  nrVars,
int  nrALines,
Eigen::MatrixXd &  A,
Eigen::VectorXd &  AL,
Eigen::VectorXd &  AU 
)
inline

Fill the \( A \) matrix and the \( L \) and \( U \) bounds vectors based on the inequality constaint list.

◆ fillInEq() [2/2]

int tasks::qp::fillInEq ( const std::vector< Inequality * > &  inEq,
int  nrVars,
int  nrALines,
Eigen::MatrixXd &  A,
Eigen::VectorXd &  b 
)
inline

Fill the \( A \) matrix and the \( b \) vectors based on the inequality constaint list.

◆ fillQC()

void tasks::qp::fillQC ( const std::vector< Task * > &  tasks,
int  nrVars,
Eigen::MatrixXd &  Q,
Eigen::VectorXd &  C 
)
inline

Fill the \( Q \) matrix and the \( c \) vector based on the task list.

◆ findJointFromVector()

int tasks::qp::findJointFromVector ( const rbd::MultiBody &  mb,
int  line,
bool  withBase 
)
inline

◆ printConstr() [1/4]

template<>
std::ostream& tasks::qp::printConstr ( const Eigen::VectorXd &  result,
Equality constr,
int  line,
std::ostream &  out 
)
inline

◆ printConstr() [2/4]

template<>
std::ostream& tasks::qp::printConstr ( const Eigen::VectorXd &  result,
GenInequality constr,
int  line,
std::ostream &  out 
)
inline

◆ printConstr() [3/4]

template<>
std::ostream& tasks::qp::printConstr ( const Eigen::VectorXd &  result,
Inequality constr,
int  line,
std::ostream &  out 
)
inline

◆ printConstr() [4/4]

template<typename T >
std::ostream& tasks::qp::printConstr ( const Eigen::VectorXd &  result,
T *  constr,
int  line,
std::ostream &  out 
)

◆ reduceA()

void tasks::qp::reduceA ( const Eigen::MatrixXd &  AFull,
Eigen::MatrixXd &  A,
const Eigen::SparseMatrix< double > &  M 
)
inline

Reduce \( A \) matrix based on the multiplier and offset

In this form, all non bounds constraints are represented as:

\begin{align} A x \eq b A x \leq b L \leq A x \leq U \end{align}

Which we can rewrite as:

\begin{align} A M y \eq b A M y \leq b L \leq A M y \leq U \end{align}

◆ reduceBound()

void tasks::qp::reduceBound ( const Eigen::VectorXd &  XLFull,
Eigen::VectorXd &  XL,
const Eigen::VectorXd &  XUFull,
Eigen::VectorXd &  XU,
const std::vector< int > &  fullToReduced,
const std::vector< int > &  reducedToFull,
const std::vector< std::tuple< int, int, double >> &  dependencies 
)
inline

Reduce bounds vector based on the dependencies list

If alpha is negative, the upper/lower bounds should be inverted

◆ reduceQC()

void tasks::qp::reduceQC ( const Eigen::MatrixXd &  QFull,
const Eigen::VectorXd &  CFull,
Eigen::MatrixXd &  Q,
Eigen::VectorXd &  C,
const Eigen::SparseMatrix< double > &  M 
)
inline

Reduce \( Q \) matrix and the \( c \) vector using the multiplier matrix

Indeed, solving:

\begin{align} \underset{x}{\text{minimize }} & \frac{1}{2} x^T Q x + x^T c\\ \end{align}

Where:

\begin{align} x = M y \end{align}

Is equivalent to solving:

\begin{align} \underset{x}{\text{minimize }} & \frac{1}{2} y^T M ^T Q M y + y^T M^T c\\ \end{align}

◆ tosch()

TASKS_DLLAPI sch::Matrix4x4 tasks::qp::tosch ( const sva::PTransformd &  t)

Convert a sch-core transformation matrix to a sva::PTransformd matrix.