Optimization::Solver::PLDPSolverHerdt Class Reference

#include <Mathematics/PLDPSolverHerdt.hh>

Public Member Functions

 PLDPSolverHerdt (unsigned int CardU, double *iPu, double *Px, double *Pu, double *iLQ)
 Constructor. More...
 
 ~PLDPSolverHerdt ()
 Destructor. More...
 
int SolveProblem (std::deque< PatternGeneratorJRL::LinearConstraintInequalityFreeFeet_t > &QueueOfLConstraintInequalitiesFreeFeet, std::deque< PatternGeneratorJRL::SupportFeet_t > &QueueOfSupportFeet, double *CstPartOfTheCostFunction, unsigned int NbOfConstraints, double *LinearPartOfConstraints, double *CstPartOfConstraints, double *XkYk, double *X, unsigned int NumberOfRemovedConstraints, unsigned int NbRemovedFootCstr, bool StartingSequence, unsigned int NumberSteps, bool CurrentStateChanged, double time)
 Solve the optimization problem. More...
 

Protected Member Functions

void InitializeSolver (unsigned int NumberSteps)
 
void AllocateMemoryForSolver (unsigned int NumberSteps)
 
double ComputeAlpha (vector< unsigned int > &NewActivatedConstraints, unsigned int NumberSteps)
 
void WriteCurrentZMPSolution (string filename, double *XkYk)
 
Initial solution methods related
int ComputeInitialSolution (std::deque< PatternGeneratorJRL::LinearConstraintInequalityFreeFeet_t > &QueueOfLConstraintInequalitiesFreeFeet, std::deque< PatternGeneratorJRL::SupportFeet_t > &QueueOfSupportFeet, unsigned int NumberSteps, double *XkYk)
 
int PrecomputeiPuPx (unsigned int NumberSteps)
 
Projected descent direction methods related
int ComputeProjectedDescentDirection (unsigned int NumberSteps)
 Compute Projected descent direction. More...
 
int ForwardSubstitution ()
 Forward substitution. First Phase EE^t v2 = v1 <-> LL^t v2 = v1 Now solving L y = v1. More...
 
int BackwardSubstitution ()
 Compute v2 q (14b) in Dimitrov 2009. Second phase a Now solving LL^t v2 = v1 <-> L y = v1 with L^t v2 = y y solved with first phase. So now we are looking for v2. More...
 

Detailed Description

This class implements a two stage strategy to solve the following optimal problem:

Constructor & Destructor Documentation

◆ PLDPSolverHerdt()

PLDPSolverHerdt::PLDPSolverHerdt ( unsigned int  CardU,
double *  iPu,
double *  Px,
double *  Pu,
double *  iLQ 
)

Constructor.

◆ ~PLDPSolverHerdt()

PLDPSolverHerdt::~PLDPSolverHerdt ( )

Destructor.

Member Function Documentation

◆ AllocateMemoryForSolver()

void PLDPSolverHerdt::AllocateMemoryForSolver ( unsigned int  NumberSteps)
protected

Allocate memory for solver.

◆ BackwardSubstitution()

int PLDPSolverHerdt::BackwardSubstitution ( )
protected

Compute v2 q (14b) in Dimitrov 2009. Second phase a Now solving LL^t v2 = v1 <-> L y = v1 with L^t v2 = y y solved with first phase. So now we are looking for v2.

◆ ComputeAlpha()

double PLDPSolverHerdt::ComputeAlpha ( vector< unsigned int > &  NewActivatedConstraints,
unsigned int  NumberSteps 
)
protected

Detecting violated constraints

◆ ComputeInitialSolution()

int PLDPSolverHerdt::ComputeInitialSolution ( std::deque< PatternGeneratorJRL::LinearConstraintInequalityFreeFeet_t > &  QueueOfLConstraintInequalitiesFreeFeet,
std::deque< PatternGeneratorJRL::SupportFeet_t > &  QueueOfSupportFeet,
unsigned int  NumberSteps,
double *  XkYk 
)
protected

Compute the initial solution

The initial solution of the problem is given by identical zmp and feet positions that are lying inside the feasible zones defined by the constraints on the feet placements. U0 = -iPu * Px [Xkt Ykt]t + iPu * InitialZMP

◆ ComputeProjectedDescentDirection()

int PLDPSolverHerdt::ComputeProjectedDescentDirection ( unsigned int  NumberSteps)
protected

Compute Projected descent direction.

◆ ForwardSubstitution()

int PLDPSolverHerdt::ForwardSubstitution ( )
protected

Forward substitution. First Phase EE^t v2 = v1 <-> LL^t v2 = v1 Now solving L y = v1.

◆ InitializeSolver()

void PLDPSolverHerdt::InitializeSolver ( unsigned int  NumberSteps)
protected

Initialize the internal variables of the class.

◆ PrecomputeiPuPx()

int PLDPSolverHerdt::PrecomputeiPuPx ( unsigned int  NumberSteps)
protected

Precompite iPuPx

◆ SolveProblem()

int PLDPSolverHerdt::SolveProblem ( std::deque< PatternGeneratorJRL::LinearConstraintInequalityFreeFeet_t > &  QueueOfLConstraintInequalitiesFreeFeet,
std::deque< PatternGeneratorJRL::SupportFeet_t > &  QueueOfSupportFeet,
double *  CstPartOfTheCostFunction,
unsigned int  NbOfConstraints,
double *  LinearPartOfConstraints,
double *  CstPartOfConstraints,
double *  XkYk,
double *  X,
unsigned int  NumberOfRemovedConstraints,
unsigned int  NbRemovedFootCstr,
bool  StartingSequence,
unsigned int  NumberSteps,
bool  CurrentStateChanged,
double  time 
)

Solve the optimization problem.

Initialization de cholesky.

Step two: Compute the projected descent direction.

Step three : Compute alpha

Compute new solution.

◆ WriteCurrentZMPSolution()

void PLDPSolverHerdt::WriteCurrentZMPSolution ( string  filename,
double *  XkYk 
)
protected

Store the current ZMP solution for hot start purposes. *\/

Write current ZMP ref trajectory associated with current value of m_Vk.


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