Loading...
Searching...
No Matches
PatternGeneratorJRL::AnalyticalZMPCOGTrajectory Class Reference

#include <Mathematics/AnalyticalZMPCOGTrajectory.hh>

Collaboration diagram for PatternGeneratorJRL::AnalyticalZMPCOGTrajectory:

Public Member Functions

 AnalyticalZMPCOGTrajectory (int lNbOfIntervals=0)
 
 ~AnalyticalZMPCOGTrajectory ()
 
bool ComputeCOM (double t, double &r)
 
bool ComputeCOMSpeed (double t, double &r)
 
bool ComputeCOM (double t, double &r, int i)
 
bool ComputeCOMSpeed (double t, double &r, int i)
 
bool ComputeZMP (double t, double &r)
 
bool ComputeZMPSpeed (double t, double &r)
 
bool ComputeZMP (double t, double &r, int i)
 

Setter and Getter@{

int m_NbOfIntervals
 
std::vector< double > m_V
 
std::vector< double > m_W
 
std::vector< double > m_DeltaTj
 
std::vector< double > m_omegaj
 
std::vector< double > m_RefTime
 
std::vector< unsigned int > m_PolynomialDegree
 
std::vector< Polynome * > m_ListOfCOGPolynomials
 
std::vector< Polynome * > m_ListOfZMPPolynomials
 
double m_AbsoluteTimeReference
 
double m_Sensitivity
 
void SetNumberOfIntervals (unsigned int lNbOfIntervals)
 Set the number of Intervals for this trajectory. More...
 
void SetCoGHyperbolicCoefficients (std::vector< double > &lV, std::vector< double > &lW)
 Set the coefficients for the sinuse and cosinues function. More...
 
void SetStartingTimeIntervalsAndHeightVariation (std::vector< double > &lDeltaTj, std::vector< double > &lomegaj)
 Set the starting point and the height variation. More...
 
void SetPolynomialDegrees (std::vector< unsigned int > &lPolynomialDegree)
 Set the degree of each polynomials for the CoG Remark: the size of the vector of degrees should match the number of intervals. More...
 
void GetPolynomialDegrees (std::vector< unsigned int > &lPolynomialDegree) const
 Get the degree of each polynomials for the CoG. More...
 
void GetNumberOfIntervals (unsigned int &lNbOfIntervals) const
 Set the number of Intervals for this trajectory. More...
 
void GetHyperbolicCoefficients (std::vector< double > &lV, std::vector< double > &lW) const
 Get the coefficients for the sinuse and cosinues function. More...
 
void GetStartingPointAndHeightVariation (std::vector< double > &lTj, std::vector< double > &lomegaj)
 Get the starting point and the height variation. More...
 
bool GetFromListOfCOGPolynomials (unsigned int j, Polynome *&aPoly) const
 Get the polynomial at interval j for the CoG Remark: The call to this function assume that the method SetPolynomialDegree has been call beforehand. More...
 
bool GetFromListOfZMPPolynomials (unsigned int j, Polynome *&aPoly) const
 
void TransfertCoefficientsFromCOGTrajectoryToZMPOne (std::vector< double > &lCOMZ, std::vector< double > &lZMPZ)
 Transfert the coefficients from the COG trajectory to the ZMP for all intervals. More...
 
void TransfertOneIntervalCoefficientsFromCOGTrajectoryToZMPOne (unsigned int IntervalIndex, double &lCOMZ, double &lZMPZ)
 Transfert the coefficients from the COG trajectory to the ZMP. More...
 
void Building3rdOrderPolynomial (unsigned int anIntervalj, double pjTjm1, double pjTj)
 
double FluctuationMaximal ()
 Returns the maximal fluctuation for the first segment of this trajectory. More...
 
double GetAbsoluteTimeReference () const
 Absolute Time reference of this trajectory. More...
 
void SetAbsoluteTimeReference (double anAbsoluteTimeReference)
 Set Absolute time reference of this trajectory. More...
 
bool GetIntervalIndexFromTime (double t, unsigned int &j)
 Get the index of the interval according to the time. More...
 
bool GetIntervalIndexFromTime (double t, unsigned int &j, unsigned int &prev_j)
 Get the index of the interval according to the time, and the previous value of the interval. More...
 
std::ostream & operator<< (std::ostream &os, const AnalyticalZMPCOGTrajectory &obj)
 
void FreePolynomes ()
 

Detailed Description

AnalyticalZMPCOGTrajectory represents the ZMP and the COG trajectories based on the following formula:

Constructor & Destructor Documentation

◆ AnalyticalZMPCOGTrajectory()

PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::AnalyticalZMPCOGTrajectory ( int  lNbOfIntervals = 0)

◆ ~AnalyticalZMPCOGTrajectory()

PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::~AnalyticalZMPCOGTrajectory ( )

Destructor

References FreePolynomes().

Member Function Documentation

◆ Building3rdOrderPolynomial()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::Building3rdOrderPolynomial ( unsigned int  anIntervalj,
double  pjTjm1,
double  pjTj 
)

Build the coefficients of a third order COG polynomial according to the OmegaC and the value of the ZMP at the beginning and the end of the interval, and assuming that the speed is set to zero.

References m_DeltaTj, m_ListOfCOGPolynomials, m_ListOfZMPPolynomials, and m_omegaj.

◆ ComputeCOM() [1/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeCOM ( double  t,
double &  r 
)

Compute the current value according to time.

Parameters
tthe time,
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_DeltaTj, m_ListOfCOGPolynomials, m_omegaj, m_PolynomialDegree, m_Sensitivity, m_V, and m_W.

◆ ComputeCOM() [2/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeCOM ( double  t,
double &  r,
int  i 
)

Compute the current value according to time and the index of the interval. To be efficient this method does not have any boundary check.

Parameters
tthe time,
ithe numero of the interval
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_ListOfCOGPolynomials, m_omegaj, m_RefTime, m_V, and m_W.

◆ ComputeCOMSpeed() [1/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeCOMSpeed ( double  t,
double &  r 
)

Compute the current CoM speed value according to time.

Parameters
tthe time,
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_DeltaTj, m_ListOfCOGPolynomials, m_omegaj, m_PolynomialDegree, m_Sensitivity, m_V, and m_W.

◆ ComputeCOMSpeed() [2/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeCOMSpeed ( double  t,
double &  r,
int  i 
)

Compute the current speed according to time and the index of the interval. To be efficient this method does not have any boundary check.

Parameters
tthe time,
ithe numero of the interval
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_ListOfCOGPolynomials, m_omegaj, m_RefTime, m_V, and m_W.

◆ ComputeZMP() [1/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeZMP ( double  t,
double &  r 
)

Compute the current value according to time.

Parameters
tthe time,
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_DeltaTj, m_ListOfZMPPolynomials, m_omegaj, m_PolynomialDegree, m_Sensitivity, m_V, and m_W.

◆ ComputeZMP() [2/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeZMP ( double  t,
double &  r,
int  i 
)

Compute the current value according to time.

Parameters
tthe time,
ithe numero of the interval
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_ListOfZMPPolynomials, and m_RefTime.

◆ ComputeZMPSpeed()

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::ComputeZMPSpeed ( double  t,
double &  r 
)

Compute the current ZMP speed value according to time.

Parameters
tthe time,
rthe result,
Returns
Returns true if the function has been computed, false otherwise.

References j, m_AbsoluteTimeReference, m_DeltaTj, m_ListOfCOGPolynomials, m_omegaj, m_PolynomialDegree, m_Sensitivity, m_V, and m_W.

◆ FluctuationMaximal()

double PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::FluctuationMaximal ( )

Returns the maximal fluctuation for the first segment of this trajectory.

References m_AbsoluteTimeReference, m_DeltaTj, and m_ListOfZMPPolynomials.

◆ FreePolynomes()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::FreePolynomes ( )
protected

Intern method to free the polynomials

References i, m_ListOfCOGPolynomials, and m_ListOfZMPPolynomials.

Referenced by SetNumberOfIntervals(), and ~AnalyticalZMPCOGTrajectory().

◆ GetAbsoluteTimeReference()

double PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetAbsoluteTimeReference ( ) const
inline

Absolute Time reference of this trajectory.

References m_AbsoluteTimeReference.

◆ GetFromListOfCOGPolynomials()

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetFromListOfCOGPolynomials ( unsigned int  j,
Polynome *&  aPoly 
) const

Get the polynomial at interval j for the CoG Remark: The call to this function assume that the method SetPolynomialDegree has been call beforehand.

References j, m_ListOfCOGPolynomials, and m_NbOfIntervals.

◆ GetFromListOfZMPPolynomials()

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetFromListOfZMPPolynomials ( unsigned int  j,
Polynome *&  aPoly 
) const

Get the polynomial at interval j for the ZMP Remark: The call to this function assume that the method SetPolynomialDegree has been call beforehand.

References j, m_ListOfZMPPolynomials, and m_NbOfIntervals.

◆ GetHyperbolicCoefficients()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetHyperbolicCoefficients ( std::vector< double > &  lV,
std::vector< double > &  lW 
) const

Get the coefficients for the sinuse and cosinues function.

References m_V, and m_W.

◆ GetIntervalIndexFromTime() [1/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetIntervalIndexFromTime ( double  t,
unsigned int &  j 
)

Get the index of the interval according to the time.

References j, m_AbsoluteTimeReference, m_DeltaTj, and m_Sensitivity.

◆ GetIntervalIndexFromTime() [2/2]

bool PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetIntervalIndexFromTime ( double  t,
unsigned int &  j,
unsigned int &  prev_j 
)

Get the index of the interval according to the time, and the previous value of the interval.

References j, m_AbsoluteTimeReference, m_DeltaTj, and m_Sensitivity.

◆ GetNumberOfIntervals()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetNumberOfIntervals ( unsigned int &  lNbOfIntervals) const

Set the number of Intervals for this trajectory.

References m_NbOfIntervals.

◆ GetPolynomialDegrees()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetPolynomialDegrees ( std::vector< unsigned int > &  lPolynomialDegree) const

Get the degree of each polynomials for the CoG.

References m_PolynomialDegree.

◆ GetStartingPointAndHeightVariation()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::GetStartingPointAndHeightVariation ( std::vector< double > &  lTj,
std::vector< double > &  lomegaj 
)

Get the starting point and the height variation.

References m_DeltaTj, and m_omegaj.

◆ SetAbsoluteTimeReference()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::SetAbsoluteTimeReference ( double  anAbsoluteTimeReference)
inline

Set Absolute time reference of this trajectory.

References m_AbsoluteTimeReference.

◆ SetCoGHyperbolicCoefficients()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::SetCoGHyperbolicCoefficients ( std::vector< double > &  lV,
std::vector< double > &  lW 
)

Set the coefficients for the sinuse and cosinues function.

References m_NbOfIntervals, m_V, and m_W.

◆ SetNumberOfIntervals()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::SetNumberOfIntervals ( unsigned int  lNbOfIntervals)

Set the number of Intervals for this trajectory.

References FreePolynomes(), i, m_DeltaTj, m_ListOfCOGPolynomials, m_ListOfZMPPolynomials, m_NbOfIntervals, m_omegaj, m_PolynomialDegree, m_V, and m_W.

Referenced by AnalyticalZMPCOGTrajectory().

◆ SetPolynomialDegrees()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::SetPolynomialDegrees ( std::vector< unsigned int > &  lPolynomialDegree)

Set the degree of each polynomials for the CoG Remark: the size of the vector of degrees should match the number of intervals.

References i, m_ListOfCOGPolynomials, m_ListOfZMPPolynomials, m_NbOfIntervals, and m_PolynomialDegree.

◆ SetStartingTimeIntervalsAndHeightVariation()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::SetStartingTimeIntervalsAndHeightVariation ( std::vector< double > &  lDeltaTj,
std::vector< double > &  lomegaj 
)

Set the starting point and the height variation.

References j, m_DeltaTj, m_NbOfIntervals, m_omegaj, and m_RefTime.

◆ TransfertCoefficientsFromCOGTrajectoryToZMPOne()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::TransfertCoefficientsFromCOGTrajectoryToZMPOne ( std::vector< double > &  lCOMZ,
std::vector< double > &  lZMPZ 
)

Transfert the coefficients from the COG trajectory to the ZMP for all intervals.

Parameters
lCOMZProfile of the height CoM for each interval.
lZMPZProfile of the height ZMP for each interval.

References j, m_NbOfIntervals, and TransfertOneIntervalCoefficientsFromCOGTrajectoryToZMPOne().

◆ TransfertOneIntervalCoefficientsFromCOGTrajectoryToZMPOne()

void PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::TransfertOneIntervalCoefficientsFromCOGTrajectoryToZMPOne ( unsigned int  IntervalIndex,
double &  lCOMZ,
double &  lZMPZ 
)

Transfert the coefficients from the COG trajectory to the ZMP.

Parameters
IntervalIndexNumber of the interval.
lCOMZValue of the CoM height for this interval.
lZMPZValue of the ZMP height for this interval.

References i, m_ListOfCOGPolynomials, m_ListOfZMPPolynomials, and m_PolynomialDegree.

Referenced by TransfertCoefficientsFromCOGTrajectoryToZMPOne().

Friends And Related Function Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const AnalyticalZMPCOGTrajectory obj 
)
friend

Member Data Documentation

◆ m_AbsoluteTimeReference

double PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_AbsoluteTimeReference
protected

◆ m_DeltaTj

std::vector<double> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_DeltaTj
protected

◆ m_ListOfCOGPolynomials

std::vector<Polynome *> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_ListOfCOGPolynomials
protected

◆ m_ListOfZMPPolynomials

std::vector<Polynome *> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_ListOfZMPPolynomials
protected

◆ m_NbOfIntervals

◆ m_omegaj

std::vector<double> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_omegaj
protected

◆ m_PolynomialDegree

std::vector<unsigned int> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_PolynomialDegree
protected

◆ m_RefTime

std::vector<double> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_RefTime
protected

List of reference time for the interval.

Referenced by ComputeCOM(), ComputeCOMSpeed(), ComputeZMP(), and SetStartingTimeIntervalsAndHeightVariation().

◆ m_Sensitivity

double PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_Sensitivity
protected

◆ m_V

std::vector<double> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_V
protected

◆ m_W

std::vector<double> PatternGeneratorJRL::AnalyticalZMPCOGTrajectory::m_W
protected