pinocchio  3.2.0
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
PGSContactSolverTpl< _Scalar > Struct Template Reference

Projected Gauss Siedel solver. More...

#include <pinocchio/algorithm/pgs-solver.hpp>

Inheritance diagram for PGSContactSolverTpl< _Scalar >:
Collaboration diagram for PGSContactSolverTpl< _Scalar >:

Public Types

typedef ContactSolverBaseTpl< Scalar > Base
 
typedef _Scalar Scalar
 
typedef Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > VectorXs
 
- Public Types inherited from ContactSolverBaseTpl< _Scalar >
typedef hpp::fcl::CPUTimes CPUTimes
 
typedef _Scalar Scalar
 
typedef hpp::fcl::Timer Timer
 

Public Member Functions

 PGSContactSolverTpl (const int problem_size)
 
template<typename MatrixLike , typename VectorLike , typename ConstraintAllocator , typename VectorLikeOut >
bool solve (const MatrixLike &G, const Eigen::MatrixBase< VectorLike > &g, const std::vector< CoulombFrictionConeTpl< Scalar >, ConstraintAllocator > &cones, const Eigen::DenseBase< VectorLikeOut > &x, const Scalar over_relax=Scalar(1))
 Solve the constrained conic problem composed of problem data (G,g,cones) and starting from the initial guess. More...
 
- Public Member Functions inherited from ContactSolverBaseTpl< _Scalar >
 ContactSolverBaseTpl (const int problem_size)
 
Scalar getAbsoluteConvergenceResidual () const
 Returns the value of the absolute residual value corresponding to the contact complementary conditions.
 
Scalar getAbsolutePrecision () const
 Get the absolute precision requested.
 
CPUTimes getCPUTimes () const
 
int getIterationCount () const
 Get the number of iterations achieved by the solver.
 
int getMaxIterations () const
 Get the maximum number of iterations allowed.
 
int getProblemSize () const
 Returns the size of the problem.
 
Scalar getRelativeConvergenceResidual () const
 Returns the value of the relative residual value corresponding to the difference between two successive iterates (infinity norms).
 
Scalar getRelativePrecision () const
 Get the relative precision requested.
 
void setAbsolutePrecision (const Scalar absolute_precision)
 Set the absolute precision for the problem.
 
void setMaxIterations (const int max_it)
 Set the maximum number of iterations.
 
void setRelativePrecision (const Scalar relative_precision)
 Set the relative precision for the problem.
 

Protected Attributes

Timer timer
 
VectorXs x
 Previous temporary value of the optimum.
 
VectorXs x_previous
 
- Protected Attributes inherited from ContactSolverBaseTpl< _Scalar >
Scalar absolute_precision
 Desired absolute precision.
 
Scalar absolute_residual
 Absolule convergence residual value.
 
int it
 Number of iterations needed to achieve convergence.
 
int max_it
   More...
 
int problem_size
 Size of the problem.
 
Scalar relative_precision
 Desired relative precision.
 
Scalar relative_residual
 Relative convergence residual value.
 
Timer timer
 

Detailed Description

template<typename _Scalar>
struct pinocchio::PGSContactSolverTpl< _Scalar >

Projected Gauss Siedel solver.

Definition at line 16 of file pgs-solver.hpp.

Member Function Documentation

◆ solve()

bool solve ( const MatrixLike &  G,
const Eigen::MatrixBase< VectorLike > &  g,
const std::vector< CoulombFrictionConeTpl< Scalar >, ConstraintAllocator > &  cones,
const Eigen::DenseBase< VectorLikeOut > &  x,
const Scalar  over_relax = Scalar(1) 
)

Solve the constrained conic problem composed of problem data (G,g,cones) and starting from the initial guess.

Parameters
[in]GSymmetric PSD matrix representing the Delassus of the contact problem.
[in]gFree contact acceleration or velicity associted with the contact problem.
[in]conesVector of conic constraints.
[in,out]xInitial guess and output solution of the problem
[in]over_relaxOver relaxation value
Returns
True if the problem has converged.

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