|
Tasks
1.9.2
|
Typedefs | |
| using | clock = typename std::conditional< std::chrono::high_resolution_clock::is_steady, std::chrono::high_resolution_clock, std::chrono::steady_clock >::type |
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 GenQPSolver * | createQPSolver (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) |
| using tasks::qp::clock = typedef typename std::conditional<std::chrono::high_resolution_clock::is_steady, std::chrono::high_resolution_clock, std::chrono::steady_clock>::type |
clock is a clock that is always steady and thus suitable for performance measurements
|
inline |
|
inline |
| TASKS_DLLAPI GenQPSolver* tasks::qp::createQPSolver | ( | const std::string & | name | ) |
Factory to create GenQPSolver implementation. Two argument are supported QLD and LSSOL.
|
inline |
Return the full variable from the reduced variable
|
inline |
Fill the \( L \) and \( U \) bounds vectors based on the bound constaint list.
|
inline |
Fill the \( A \) matrix and the \( L \) and \( U \) bounds vectors based on the equality constaint list.
|
inline |
Fill the \( A \) matrix and the \( b \) vectors based on the equality constaint list.
|
inline |
Fill the \( A \) matrix and the \( L \) and \( U \) bounds vectors based on the general inequality constaint list.
|
inline |
Fill the \( A \) matrix and the \( b \) vectors based on the general inequality constaint list.
|
inline |
Fill the \( A \) matrix and the \( L \) and \( U \) bounds vectors based on the inequality constaint list.
|
inline |
Fill the \( A \) matrix and the \( b \) vectors based on the inequality constaint list.
|
inline |
Fill the \( Q \) matrix and the \( c \) vector based on the task list.
|
inline |
|
inline |
|
inline |
|
inline |
| std::ostream& tasks::qp::printConstr | ( | const Eigen::VectorXd & | result, |
| T * | constr, | ||
| int | line, | ||
| std::ostream & | out | ||
| ) |
|
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}
|
inline |
Reduce bounds vector based on the dependencies list
If alpha is negative, the upper/lower bounds should be inverted
|
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}
| TASKS_DLLAPI sch::Matrix4x4 tasks::qp::tosch | ( | const sva::PTransformd & | t | ) |
Convert a sch-core transformation matrix to a sva::PTransformd matrix.