DART 6.12.2
|
Implementation of projected Gauss-Seidel (PGS) LCP solver. More...
#include <PgsBoxedLcpSolver.hpp>
Classes | |
struct | Option |
Public Member Functions | |
const std::string & | getType () const override |
Returns the type. | |
bool | solve (int n, double *A, double *x, double *b, int nub, double *lo, double *hi, int *findex, bool earlyTermination) override |
Solves constriant impulses for a constrained group. | |
bool | canSolve (int n, const double *A) override |
void | setOption (const Option &option) |
Sets options. | |
const Option & | getOption () const |
Returns options. | |
template<typename BoxedLcpSolverT > | |
bool | is () const |
Returns true if this solver and the template parameter (a solver class) are the same type. | |
Static Public Member Functions | |
static const std::string & | getStaticType () |
Returns type for this class. | |
Protected Attributes | |
Option | mOption |
std::vector< int > | mCacheOrder |
std::vector< double > | mCacheD |
Eigen::VectorXd | mCachedNormalizedA |
Eigen::MatrixXd | mCachedNormalizedB |
Eigen::VectorXd | mCacheZ |
Eigen::VectorXd | mCacheOldX |
Implementation of projected Gauss-Seidel (PGS) LCP solver.
|
overridevirtual |
Implements dart::constraint::BoxedLcpSolver.
const PgsBoxedLcpSolver::Option & dart::constraint::PgsBoxedLcpSolver::getOption | ( | ) | const |
Returns options.
|
static |
Returns type for this class.
|
overridevirtual |
Returns the type.
Implements dart::constraint::BoxedLcpSolver.
|
inherited |
Returns true if this solver and the template parameter (a solver class) are the same type.
This function is a syntactic sugar, which is identical to:
.
Example code:
void dart::constraint::PgsBoxedLcpSolver::setOption | ( | const Option & | option | ) |
Sets options.
|
overridevirtual |
Solves constriant impulses for a constrained group.
The LCP formulation setting that this function solve is A*x = b + w where each x[i], w[i] satisfies one of (1) x = lo, w >= 0 (2) x = hi, w <= 0 (3) lo < x < hi, w = 0
[in] | n | Dimension of constraints. |
[in] | A | A term of the LCP formulation. |
[in] | x | x term of the LCP formulation. |
[in] | b | b term of the LCP formulation. |
[in] | nub | Number of the first unbounded constraints. |
[in] | lo | Lower bound of x where it's restricted to be lo <= 0. |
[in] | hi | Upper bound of x where it's enforced to be hi >= 0. |
[in] | findex | Indices to corresponding normal contact constraint. Set the index to itself (e.g., findex[k] = k) for normal contacts or non-contact constraints. For friction constraint, set the cooresponding normal contact constraint. |
[in] | earlyTermination | Set true to return false as soon as the solver find the solution doesn't exist. Otherwise, the solver will continue to push hard to solve the problem using some hacks. |
Implements dart::constraint::BoxedLcpSolver.
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
mutableprotected |
|
protected |