#include <Mathematics/PLDPSolver.hh>
|
| PLDPSolver (unsigned int CardU, double *iPu, double *Px, double *Pu, double *iLQ) |
| Constructor. More...
|
|
| ~PLDPSolver () |
| Destructor. More...
|
|
int | SolveProblem (double *CstPartOfTheCostFunction, unsigned int NbOfConstraints, double *LinearPartOfConstraints, double *CstPartOfConstraints, double *ZMPRef, double *XkYk, double *X, std::vector< int > &SimilarConstraint, unsigned int NumberOfRemovedConstraints, bool StartingSequence) |
| Solve the optimization problem. More...
|
|
This class implements a two stage strategy to solve the following optimal problem:
◆ PLDPSolver()
PLDPSolver::PLDPSolver |
( |
unsigned int |
CardU, |
|
|
double * |
iPu, |
|
|
double * |
Px, |
|
|
double * |
Pu, |
|
|
double * |
iLQ |
|
) |
| |
◆ ~PLDPSolver()
PLDPSolver::~PLDPSolver |
( |
| ) |
|
◆ AllocateMemoryForSolver()
void PLDPSolver::AllocateMemoryForSolver |
( |
| ) |
|
|
protected |
Allocate memory for solver.
◆ BackwardSubstitution()
int PLDPSolver::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 PLDPSolver::ComputeAlpha |
( |
vector< unsigned int > & |
NewActivatedConstraints, |
|
|
vector< int > & |
SimilarConstraint |
|
) |
| |
|
protected |
Detecting violated constraints
◆ ComputeInitialSolution()
int PLDPSolver::ComputeInitialSolution |
( |
double * |
ZMPRef, |
|
|
double * |
XkYk, |
|
|
bool |
StartingSequence |
|
) |
| |
|
protected |
Compute the initial solution
The initial solution of the problem is given by eq(14) Dimitar ICRA 2008 U0 = iPu * Px [Xkt Ykt]t + iPu * ZMPRef The only part which can not be precomputed is ZMPRef.
◆ ComputeProjectedDescentDirection()
int PLDPSolver::ComputeProjectedDescentDirection |
( |
| ) |
|
|
protected |
Compute Projected descent direction.
◆ ForwardSubstitution()
int PLDPSolver::ForwardSubstitution |
( |
| ) |
|
|
protected |
Forward substitution. First Phase EE^t v2 = v1 <-> LL^t v2 = v1 Now solving L y = v1.
◆ InitializeSolver()
void PLDPSolver::InitializeSolver |
( |
| ) |
|
|
protected |
Initialize the internal variables of the class.
◆ PrecomputeiPuPx()
int PLDPSolver::PrecomputeiPuPx |
( |
| ) |
|
|
protected |
◆ SolveProblem()
int PLDPSolver::SolveProblem |
( |
double * |
CstPartOfTheCostFunction, |
|
|
unsigned int |
NbOfConstraints, |
|
|
double * |
LinearPartOfConstraints, |
|
|
double * |
CstPartOfConstraints, |
|
|
double * |
ZMPRef, |
|
|
double * |
XkYk, |
|
|
double * |
X, |
|
|
std::vector< int > & |
SimilarConstraint, |
|
|
unsigned int |
NumberOfRemovedConstraints, |
|
|
bool |
StartingSequence |
|
) |
| |
Solve the optimization problem.
Initialization de cholesky.
Step two: Compute the projected descent direction.
Step three : Compute alpha
Compute new solution.
◆ StoreCurrentZMPSolution()
void PLDPSolver::StoreCurrentZMPSolution |
( |
double * |
XkYk | ) |
|
|
protected |
Store the current ZMP solution for hot start purposes.
◆ WriteCurrentZMPSolution()
void PLDPSolver::WriteCurrentZMPSolution |
( |
string |
filename, |
|
|
double * |
XkYk |
|
) |
| |
|
protected |
Write current ZMP ref trajectory associated with current value of m_Vk.
The documentation for this class was generated from the following files: