Reflexxes Motion Libraries  Manual and Documentation (Type II, Version 1.2.6)
Classes | Enumerations | Functions
TypeIIRMLMath Namespace Reference

Classes

class  TypeIIRMLPolynomial
 This class realizes polynomials of degree three as required for the Type II On-Line Trajectory Generation algorithm. More...
struct  MotionPolynomials
 Three arrays of TypeIIRMLMath::TypeIIRMLPolynomial. More...

Enumerations

enum  Step1_Profile {
  Step1_Undefined = 0, Step1_Profile_PosLinHldNegLin = 1, Step1_Profile_PosLinNegLin = 2, Step1_Profile_PosTriNegLin = 3,
  Step1_Profile_PosTrapNegLin = 4, Step1_Profile_NegLinHldPosLin = 5, Step1_Profile_NegLinPosLin = 6, Step1_Profile_NegTriPosLin = 7,
  Step1_Profile_NegTrapPosLin = 8
}
 Enumeration of all possible profiles of Step 1 (A, B, and C). More...
enum  Step2_Profile {
  Step2_Undefined = 0, Step2_Profile_PosLinHldNegLin = 1, Step2_Profile_PosLinHldPosLin = 2, Step2_Profile_NegLinHldPosLin = 3,
  Step2_Profile_NegLinHldNegLin = 4, Step2_Profile_PosTrapNegLin = 5, Step2_Profile_NegLinHldNegLinNegLin = 6
}
 Enumeration of all possible profiles of Step 2. More...

Functions

bool Decision_1A__001 (const double &CurrentVelocity)
 Is (vi >= 0)?
bool Decision_1A__002 (const double &CurrentVelocity, const double &MaxVelocity)
 Is (vi <= +vmax)?
bool Decision_1A__003 (const double &CurrentVelocity, const double &TargetVelocity)
 Is (vi <= vtrgt)?
bool Decision_1A__004 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->vtrgt, is p<=ptrgt?
bool Decision_1A__005 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 If v->vmax->vtrgt, is p<=ptrgt?
bool Decision_1A__006 (const double &TargetVelocity)
 Is (vtrgt >= 0)?
bool Decision_1A__007 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->vtrgt, is p>=ptrgt?
bool Decision_1A__008 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->0->vtrgt, is p>=ptrgt?
bool Decision_1A__009 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 If v->vmax->0->vtrgt, is p>=ptrgt?
bool Decision_1B__001 (const double &CurrentVelocity)
 Is (vi >= 0)?
bool Decision_1B__002 (const double &CurrentVelocity, const double &MaxVelocity)
 Is (vi <= +vmax)?
bool Decision_1B__003 (const double &TargetVelocity)
 Is (vtrgt >= 0)?
bool Decision_1B__004 (const double &CurrentVelocity, const double &TargetVelocity)
 Is (vi <= vtrgt)?
bool Decision_1B__005 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->vtrgt, is p<=ptrgt?
bool Decision_1B__006 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->0->vtrgt, is p<=ptrgt?
bool Decision_1B__007 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->vtrgt, is p>=ptrgt?
bool Decision_1C__001 (const double &CurrentVelocity)
 Is (vi >= 0)?
bool Decision_1C__002 (const double &CurrentVelocity, const double &MaxVelocity)
 Is (vi <= +vmax)?
bool Decision_1C__003 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 If v->vmax->0->vtrgt, is p>=ptrgt?
bool Decision_2___001 (const double &CurrentVelocity)
 Is (vi >= 0)?
bool Decision_2___002 (const double &CurrentVelocity, const double &MaxVelocity)
 Is (vi <= +vmax)?
bool Decision_2___003 (const double &CurrentVelocity, const double &TargetVelocity)
 Is (vi <= vtrgt)?
bool Decision_2___004 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, const double &CurrentTime, const double &SynchronizationTime)
 If v->vtrgt->hold, so that t=tsync, is p<=ptrgt?
bool Decision_2___005 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, const double &CurrentTime, const double &SynchronizationTime)
 If v->hold->vtrgt, so that t=tsync, is p<=ptrgt?
bool Decision_2___006 (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If (v->0->vtrgt, is p<=ptrgt || t > tsync)?
bool Decision_2___007 (const double &TargetVelocity)
 Is (vtrgt >= 0)?
bool Decision_2___008 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, const double &CurrentTime, const double &SynchronizationTime)
 If v->hold->vtrgt, so that t=tsync, is p<=ptrgt?
bool Decision_2___009 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, const double &CurrentTime, const double &SynchronizationTime)
 If v->vtrgt->hold, so that t=tsync, is p<=ptrgt?
bool Decision_2___010 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 If v->0->vtrgt, is p>=ptrgt?
bool Decision_2___011 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, const double &CurrentTime, const double &SynchronizationTime)
 If v->vtrgt->hold, so that t=tsync, is p<=ptrgt?
bool Decision_2___012 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, const double &CurrentTime, const double &SynchronizationTime)
 If v->hold->0->vtrgt, so that t=tsync, is p<=ptrgt?
bool Decision_V___001 (const double &CurrentVelocity, const double &TargetVelocity)
 Is (vi <= vtrgt)?
void TypeIIRMLDecisionTree1A (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration, Step1_Profile *AppliedProfile, double *MinimalExecutionTime)
 This function contains the decision tree 1A of the Step 1 of the Type II On-Line Trajectory Generation algorithm.
void TypeIIRMLDecisionTree1B (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration, double *MaximalExecutionTime)
 This function contains the decision tree 1B of the Step 1 of the Type II On-Line Trajectory Generation algorithm.
void TypeIIRMLDecisionTree1C (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration, double *AlternativeExecutionTime)
 This function contains the decision tree 1C of the Step 1 of the Type II On-Line Trajectory Generation algorithm.
void TypeIIRMLDecisionTree2 (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration, const double &SynchronizationTime, MotionPolynomials *PolynomialsInternal)
 This function contains the decision tree of the Step 2 of the Type II On-Line Trajectory Generation algorithm.
double RMLSqrt (const double &Value)
 Calculates the real square root of a given value. If the value is negative a value of almost zero will be returned.
bool IsEpsilonEquality (const double &Value1, const double &Value2, const double &Epsilon)
 Checks epsilon equality for two values.
void Quicksort (const int &LeftBound, const int &RightBound, double *ArrayOfValues)
 Standard implementation of the Quicksort algorithm for double values.
void NegateStep1 (double *ThisCurrentPosition, double *ThisCurrentVelocity, double *ThisTargetPosition, double *ThisTargetVelocity)
 Negate input values during Step 1.
void VToVMaxStep1 (double *TotalTime, double *ThisCurrentPosition, double *ThisCurrentVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 One intermediate Step 1 trajectory segment: v -> +vmax (NegLin)
void VToZeroStep1 (double *TotalTime, double *ThisCurrentPosition, double *ThisCurrentVelocity, const double &MaxAcceleration)
 One intermediate Step 1 trajectory segment: v -> 0 (NegLin)
double ProfileStep1PosLinHldNegLin (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 Calculates the execution time of the PosLinHldNegLin velocity profile.
double ProfileStep1PosLinNegLin (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 Calculates the execution time of the PosLinNegLin velocity profile.
double ProfileStep1PosTriNegLin (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 Calculates the execution time of the PosTriNegLin velocity profile.
double ProfileStep1PosTrapNegLin (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 Calculates the execution time of the PosTrapNegLin velocity profile.
double ProfileStep1NegLinPosLin (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration)
 Calculates the execution time of the NegLinPosLin velocity profile.
bool IsSolutionForProfile_PosLinHldNegLin_Possible (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 Checks whether a valid solution for the PosLinHldNegLin velocity profile would be possible.
bool IsSolutionForProfile_PosLinNegLin_Possible (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 Checks whether a valid solution for the PosLinNegLin velocity profile would be possible.
bool IsSolutionForProfile_PosTriNegLin_Possible (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 Checks whether a valid solution for the PosTriNegLin velocity profile would be possible.
bool IsSolutionForProfile_PosTrapNegLin_Possible (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration)
 Checks whether a valid solution for the PosTrapNegLin velocity profile would be possible.
void NegateStep2 (double *ThisCurrentPosition, double *ThisCurrentVelocity, double *ThisTargetPosition, double *ThisTargetVelocity, bool *Inverted)
 Negate input values.
void VToVMaxStep2 (double *ThisCurrentTime, double *ThisCurrentPosition, double *ThisCurrentVelocity, const double &MaxVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 One intermediate Step 2 trajectory segment: v -> vmax (NegLin)
void VToZeroStep2 (double *ThisCurrentTime, double *ThisCurrentPosition, double *ThisCurrentVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 One intermediate Step 2 trajectory segment: v -> 0 (NegLin)
void ProfileStep2PosLinHldNegLin (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 Parameterization of the Step 2 velocity profile PosLinHldNegLin (leaf of the Step 2 decision tree)
void ProfileStep2PosLinHldPosLin (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 Parameterization of the Step 2 velocity profile PosLinHldNegLin (leaf of the Step 2 decision tree)
void ProfileStep2NegLinHldPosLin (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 Parameterization of the Step 2 velocity profile NegLinHldPosLin (leaf of the Step 2 decision tree)
void ProfileStep2NegLinHldNegLin (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 Parameterization of the Step 2 velocity profile NegLinHldNegLin (leaf of the Step 2 decision tree)
void ProfileStep2PosTrapNegLin (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 Parameterization of the Step 2 velocity profile PosTrapNegLin (leaf of the Step 2 decision tree)
void ProfileStep2NegLinHldNegLinNegLin (const double &CurrentTime, const double &SynchronizationTime, const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxAcceleration, MotionPolynomials *PolynomialsLocal, const bool &Inverted)
 Parameterization of the Step 2 velocity profile NegLinHldNegLinNegLin (leaf of the Step 2 decision tree)
void Step2WithoutSynchronization (const double &CurrentPosition, const double &CurrentVelocity, const double &TargetPosition, const double &TargetVelocity, const double &MaxVelocity, const double &MaxAcceleration, const TypeIIRMLMath::Step1_Profile &UsedProfile, const double &MinimumExecutionTime, MotionPolynomials *PolynomialsInternal)
 This function contains sets of trajectory parameters (i.e., all polynomial coefficients) in the case of non-synchronized trajectories.

Enumeration Type Documentation

Enumeration of all possible profiles of Step 1 (A, B, and C).

See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
Enumerator:
Step1_Undefined 

The profile is undefined.

Step1_Profile_PosLinHldNegLin 

The profile is PosLinHldNegLin.

Step1_Profile_PosLinNegLin 

The profile is PosLinNegLin.

Step1_Profile_PosTriNegLin 

The profile is PosTriNegLin.

Step1_Profile_PosTrapNegLin 

The profile is PosTrapNegLin.

Step1_Profile_NegLinHldPosLin 

The profile is NegLinHldPosLin.

Step1_Profile_NegLinPosLin 

The profile is NegLinPosLin.

Step1_Profile_NegTriPosLin 

The profile is NegTriPosLin.

Step1_Profile_NegTrapPosLin 

The profile is NegTrapPosLin.

Enumeration of all possible profiles of Step 2.

See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
Enumerator:
Step2_Undefined 

The profile is undefined.

Step2_Profile_PosLinHldNegLin 

The profile is PosLinHldNegLin.

Step2_Profile_PosLinHldPosLin 

The profile is PosLinHldPosLin.

Step2_Profile_NegLinHldPosLin 

The profile is NegLinHldPosLin.

Step2_Profile_NegLinHldNegLin 

The profile is NegLinHldNegLin.

Step2_Profile_PosTrapNegLin 

The profile is PosTrapNegLin.

Step2_Profile_NegLinHldNegLinNegLin 

The profile is NegLinHldNegLinNegLin.


Function Documentation

bool TypeIIRMLMath::Decision_1A__001 ( const double &  CurrentVelocity)

Is (vi >= 0)?

bool TypeIIRMLMath::Decision_1A__002 ( const double &  CurrentVelocity,
const double &  MaxVelocity 
)

Is (vi <= +vmax)?

bool TypeIIRMLMath::Decision_1A__003 ( const double &  CurrentVelocity,
const double &  TargetVelocity 
)

Is (vi <= vtrgt)?

bool TypeIIRMLMath::Decision_1A__004 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->vtrgt, is p<=ptrgt?

bool TypeIIRMLMath::Decision_1A__005 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

If v->vmax->vtrgt, is p<=ptrgt?

bool TypeIIRMLMath::Decision_1A__006 ( const double &  TargetVelocity)

Is (vtrgt >= 0)?

bool TypeIIRMLMath::Decision_1A__007 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->vtrgt, is p>=ptrgt?

bool TypeIIRMLMath::Decision_1A__008 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->0->vtrgt, is p>=ptrgt?

bool TypeIIRMLMath::Decision_1A__009 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

If v->vmax->0->vtrgt, is p>=ptrgt?

bool TypeIIRMLMath::Decision_1B__001 ( const double &  CurrentVelocity)

Is (vi >= 0)?

bool TypeIIRMLMath::Decision_1B__002 ( const double &  CurrentVelocity,
const double &  MaxVelocity 
)

Is (vi <= +vmax)?

bool TypeIIRMLMath::Decision_1B__003 ( const double &  TargetVelocity)

Is (vtrgt >= 0)?

bool TypeIIRMLMath::Decision_1B__004 ( const double &  CurrentVelocity,
const double &  TargetVelocity 
)

Is (vi <= vtrgt)?

bool TypeIIRMLMath::Decision_1B__005 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->vtrgt, is p<=ptrgt?

bool TypeIIRMLMath::Decision_1B__006 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->0->vtrgt, is p<=ptrgt?

bool TypeIIRMLMath::Decision_1B__007 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->vtrgt, is p>=ptrgt?

bool TypeIIRMLMath::Decision_1C__001 ( const double &  CurrentVelocity)

Is (vi >= 0)?

bool TypeIIRMLMath::Decision_1C__002 ( const double &  CurrentVelocity,
const double &  MaxVelocity 
)

Is (vi <= +vmax)?

bool TypeIIRMLMath::Decision_1C__003 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

If v->vmax->0->vtrgt, is p>=ptrgt?

bool TypeIIRMLMath::Decision_2___001 ( const double &  CurrentVelocity)

Is (vi >= 0)?

bool TypeIIRMLMath::Decision_2___002 ( const double &  CurrentVelocity,
const double &  MaxVelocity 
)

Is (vi <= +vmax)?

bool TypeIIRMLMath::Decision_2___003 ( const double &  CurrentVelocity,
const double &  TargetVelocity 
)

Is (vi <= vtrgt)?

bool TypeIIRMLMath::Decision_2___004 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
const double &  CurrentTime,
const double &  SynchronizationTime 
)

If v->vtrgt->hold, so that t=tsync, is p<=ptrgt?

bool TypeIIRMLMath::Decision_2___005 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
const double &  CurrentTime,
const double &  SynchronizationTime 
)

If v->hold->vtrgt, so that t=tsync, is p<=ptrgt?

bool TypeIIRMLMath::Decision_2___006 ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If (v->0->vtrgt, is p<=ptrgt || t > tsync)?

bool TypeIIRMLMath::Decision_2___007 ( const double &  TargetVelocity)

Is (vtrgt >= 0)?

bool TypeIIRMLMath::Decision_2___008 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
const double &  CurrentTime,
const double &  SynchronizationTime 
)

If v->hold->vtrgt, so that t=tsync, is p<=ptrgt?

bool TypeIIRMLMath::Decision_2___009 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
const double &  CurrentTime,
const double &  SynchronizationTime 
)

If v->vtrgt->hold, so that t=tsync, is p<=ptrgt?

bool TypeIIRMLMath::Decision_2___010 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

If v->0->vtrgt, is p>=ptrgt?

bool TypeIIRMLMath::Decision_2___011 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
const double &  CurrentTime,
const double &  SynchronizationTime 
)

If v->vtrgt->hold, so that t=tsync, is p<=ptrgt?

bool TypeIIRMLMath::Decision_2___012 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
const double &  CurrentTime,
const double &  SynchronizationTime 
)

If v->hold->0->vtrgt, so that t=tsync, is p<=ptrgt?

bool TypeIIRMLMath::Decision_V___001 ( const double &  CurrentVelocity,
const double &  TargetVelocity 
)

Is (vi <= vtrgt)?

bool TypeIIRMLMath::IsEpsilonEquality ( const double &  Value1,
const double &  Value2,
const double &  Epsilon 
) [inline]

Checks epsilon equality for two values.

Returns $ \left(\left|Value1\,-\,Value2\right|\ <=\ Epsilon\right)$, that if epsilon quality holds, true will be returned, otherwise false.

Parameters:
Value1First value to be compared
Value2Second value to be compared
EpsilonValue for Epsilon
Returns:
true if both values are epsilon equal, otherwise false
bool TypeIIRMLMath::IsSolutionForProfile_PosLinHldNegLin_Possible ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

Checks whether a valid solution for the PosLinHldNegLin velocity profile would be possible.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
  • true if a valid solution would be possible
  • false otherwise
See also:
TypeIIRMLPosition::Step1()
bool TypeIIRMLMath::IsSolutionForProfile_PosLinNegLin_Possible ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

Checks whether a valid solution for the PosLinNegLin velocity profile would be possible.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
  • true if a valid solution would be possible
  • false otherwise
See also:
TypeIIRMLPosition::Step1()
bool TypeIIRMLMath::IsSolutionForProfile_PosTrapNegLin_Possible ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

Checks whether a valid solution for the PosTrapNegLin velocity profile would be possible.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
  • true if a valid solution would be possible
  • false otherwise
See also:
TypeIIRMLPosition::Step1()
bool TypeIIRMLMath::IsSolutionForProfile_PosTriNegLin_Possible ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

Checks whether a valid solution for the PosTriNegLin velocity profile would be possible.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
  • true if a valid solution would be possible
  • false otherwise
See also:
TypeIIRMLPosition::Step1()
void TypeIIRMLMath::NegateStep1 ( double *  ThisCurrentPosition,
double *  ThisCurrentVelocity,
double *  ThisTargetPosition,
double *  ThisTargetVelocity 
)

Negate input values during Step 1.

Parameters:
ThisCurrentPositionPointer to a double value: Current position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $. The sign of this value will be flipped.
ThisCurrentVelocityPointer to a double value: Current velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $ The sign of this value will be flipped.
ThisTargetPositionPointer to a double value: Target position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $ The sign of this value will be flipped.
ThisTargetVelocityPointer to a double value: Target velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $ The sign of this value will be flipped.
Note:
This function is used in the Step 1 decision trees 1A, 1B, and 1C.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
TypeIIRMLMath::NegateStep2()
void TypeIIRMLMath::NegateStep2 ( double *  ThisCurrentPosition,
double *  ThisCurrentVelocity,
double *  ThisTargetPosition,
double *  ThisTargetVelocity,
bool *  Inverted 
)

Negate input values.

Parameters:
ThisCurrentPositionPointer to a double value: Current position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $. The sign of this value will be flipped.
ThisCurrentVelocityPointer to a double value: Current velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $ The sign of this value will be flipped.
ThisTargetPositionPointer to a double value: Target position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $ The sign of this value will be flipped.
ThisTargetVelocityPointer to a double value: Target velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $ The sign of this value will be flipped.
InvertedPointer to bool value: This bit will be flipped; it indicates, whether the input values have been flipped even or odd times, such that succeeding functions can set-up the trajectory parameters correspondingly.
Note:
This function is used in the Step 2 decision tree.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
TypeIIRMLMath::NegateStep1()
double TypeIIRMLMath::ProfileStep1NegLinPosLin ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

Calculates the execution time of the NegLinPosLin velocity profile.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
Execution time for this profile in seconds
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
double TypeIIRMLMath::ProfileStep1PosLinHldNegLin ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

Calculates the execution time of the PosLinHldNegLin velocity profile.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
Execution time for this profile in seconds
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
double TypeIIRMLMath::ProfileStep1PosLinNegLin ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

Calculates the execution time of the PosLinNegLin velocity profile.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
Execution time for this profile in seconds
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
double TypeIIRMLMath::ProfileStep1PosTrapNegLin ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

Calculates the execution time of the PosTrapNegLin velocity profile.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
Execution time for this profile in seconds
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
double TypeIIRMLMath::ProfileStep1PosTriNegLin ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration 
)

Calculates the execution time of the PosTriNegLin velocity profile.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
Returns:
Execution time for this profile in seconds
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
void TypeIIRMLMath::ProfileStep2NegLinHldNegLin ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
MotionPolynomials *  PolynomialsLocal,
const bool &  Inverted 
)

Parameterization of the Step 2 velocity profile NegLinHldNegLin (leaf of the Step 2 decision tree)

Parameters:
CurrentTimeTime in seconds required for preceding intermediate trajectory segments, $ ^{\left(\Lambda+1\right)}_{\ \ \ \ \ k}t_i $, where $ \Lambda $ is the number of preceding trajectory segments.
SynchronizationTimeSynchronization time in seconds, $ t_i^{\,sync} $
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will set-up all remaining trajectory parameters.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegateStep2()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::ProfileStep2NegLinHldNegLinNegLin ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
MotionPolynomials *  PolynomialsLocal,
const bool &  Inverted 
)

Parameterization of the Step 2 velocity profile NegLinHldNegLinNegLin (leaf of the Step 2 decision tree)

Parameters:
CurrentTimeTime in seconds required for preceding intermediate trajectory segments, $ ^{\left(\Lambda+1\right)}_{\ \ \ \ \ k}t_i $, where $ \Lambda $ is the number of preceding trajectory segments.
SynchronizationTimeSynchronization time in seconds, $ t_i^{\,sync} $
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will set-up all remaining trajectory parameters.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegateStep2()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::ProfileStep2NegLinHldPosLin ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
MotionPolynomials *  PolynomialsLocal,
const bool &  Inverted 
)

Parameterization of the Step 2 velocity profile NegLinHldPosLin (leaf of the Step 2 decision tree)

Parameters:
CurrentTimeTime in seconds required for preceding intermediate trajectory segments, $ ^{\left(\Lambda+1\right)}_{\ \ \ \ \ k}t_i $, where $ \Lambda $ is the number of preceding trajectory segments.
SynchronizationTimeSynchronization time in seconds, $ t_i^{\,sync} $
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will set-up all remaining trajectory parameters.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegateStep2()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::ProfileStep2PosLinHldNegLin ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
MotionPolynomials *  PolynomialsLocal,
const bool &  Inverted 
)

Parameterization of the Step 2 velocity profile PosLinHldNegLin (leaf of the Step 2 decision tree)

Parameters:
CurrentTimeTime in seconds required for preceding intermediate trajectory segments, $ ^{\left(\Lambda+1\right)}_{\ \ \ \ \ k}t_i $, where $ \Lambda $ is the number of preceding trajectory segments.
SynchronizationTimeSynchronization time in seconds, $ t_i^{\,sync} $
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will set-up all remaining trajectory parameters.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegateStep2()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::ProfileStep2PosLinHldPosLin ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
MotionPolynomials *  PolynomialsLocal,
const bool &  Inverted 
)

Parameterization of the Step 2 velocity profile PosLinHldNegLin (leaf of the Step 2 decision tree)

Parameters:
CurrentTimeTime in seconds required for preceding intermediate trajectory segments, $ ^{\left(\Lambda+1\right)}_{\ \ \ \ \ k}t_i $, where $ \Lambda $ is the number of preceding trajectory segments.
SynchronizationTimeSynchronization time in seconds, $ t_i^{\,sync} $
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will set-up all remaining trajectory parameters.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegateStep2()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::ProfileStep2PosTrapNegLin ( const double &  CurrentTime,
const double &  SynchronizationTime,
const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxAcceleration,
MotionPolynomials *  PolynomialsLocal,
const bool &  Inverted 
)

Parameterization of the Step 2 velocity profile PosTrapNegLin (leaf of the Step 2 decision tree)

Parameters:
CurrentTimeTime in seconds required for preceding intermediate trajectory segments, $ ^{\left(\Lambda+1\right)}_{\ \ \ \ \ k}t_i $, where $ \Lambda $ is the number of preceding trajectory segments.
SynchronizationTimeSynchronization time in seconds, $ t_i^{\,sync} $
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will set-up all remaining trajectory parameters.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegateStep2()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::Quicksort ( const int &  LeftBound,
const int &  RightBound,
double *  ArrayOfValues 
)

Standard implementation of the Quicksort algorithm for double values.

This function is used to sort of time values that are calculated during Step 1

$ _kt_i^{\,min},\,_kt_i^{\,begin},\,_kt_i^{\,end}\ \forall\ k\ \in\ \left\{1,\,\dots,\,K\right\} $

where $ K $ is the number of degrees of freedom.

Parameters:
LeftBoundIndex value for the left border
RightBoundIndex value for the right border
ArrayOfValuesA pointer to an array of double values to be sorted
See also:
TypeIIRMLPosition::Step1()
double TypeIIRMLMath::RMLSqrt ( const double &  Value) [inline]

Calculates the real square root of a given value. If the value is negative a value of almost zero will be returned.

Parameters:
ValueSquare root radicand
Returns:
Square root value (real).
See also:
POSITIVE_ZERO
void TypeIIRMLMath::Step2WithoutSynchronization ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration,
const TypeIIRMLMath::Step1_Profile UsedProfile,
const double &  MinimumExecutionTime,
MotionPolynomials *  PolynomialsInternal 
)

This function contains sets of trajectory parameters (i.e., all polynomial coefficients) in the case of non-synchronized trajectories.

Based on all input values for one selected degree of freedom and on the velocity profile that was applied in Step 1A, all trajectory parameters, that is, all polynomial coefficients, are set-up. This method is only applied in the case of non-synchronized trajectories (cf. RMLFlags::NO_SYNCHRONIZATION).

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
UsedProfileThe ID of the used acceleration profile in Step 1A (cf. RMLMath::Step1_Profile).
MinimumExecutionTimeMinimum execution time $ t_{i}^{\,min} $ for the current degree of freedom $ k $ (i.e., the result of profiles of the Step 1A 1A decision tree.
PolynomialsInternalA pointer to a MotionPolynomials object (cf. TypeIIRMLMath::MotionPolynomials). All trajectory parameters of the synchronized Type II trajectory will be written into this object.
See also:
RMLFlags::NO_SYNCHRONIZATION
void TypeIIRMLMath::TypeIIRMLDecisionTree1A ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration,
Step1_Profile *  AppliedProfile,
double *  MinimalExecutionTime 
)

This function contains the decision tree 1A of the Step 1 of the Type II On-Line Trajectory Generation algorithm.

This function calculates the minimum possible trajectory execution time $\ _{k}t_{i}^{\,min} $ for DOF $ k $ at instant $ T_{i} $.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
AppliedProfileA pointer to an int value. The index of the motion profile, which is used to achieve the minimum execution time (cf. TypeIIRMLMath::Step1_Profile) will be copied to this variable.
MinimalExecutionTimePointer to a double value: The actual result of the of this function, that is, minimum possible execution time $\ _{k}t_{i}^{\,min} $ will be copied to this variable.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::TypeIIRMLDecisionTree1B ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration,
double *  MaximalExecutionTime 
)

This function contains the decision tree 1B of the Step 1 of the Type II On-Line Trajectory Generation algorithm.

This function calculates the beginning of possible inoperative time interval, that is, the time $\ _{k}t_{i}^{\,begin} $ for DOF $ k $ at instant $ T_{i} $.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
MaximalExecutionTimePointer to a double value: The actual result of the of this function, that is, the value of the beginning of possible inoperative time interval, that is, the time $\ _{k}t_{i}^{\,begin} $ for DOF $ k $ at instant $ T_{i} $. If no inoperative time interval is existent, a value of RML_INFINITY will be written to this variable.
Returns:
For the case, an error during the calculations of one motion profile happens, the return value will be true, otherwise false.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::TypeIIRMLDecisionTree1C ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration,
double *  AlternativeExecutionTime 
)

This function contains the decision tree 1C of the Step 1 of the Type II On-Line Trajectory Generation algorithm.

This function calculates the end of an inoperative time interval, that is, the time $\ _{k}t_{i}^{\,end} $ for DOF $ k $ at instant $ T_{i} $.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
AlternativeExecutionTimePointer to a double value: The actual result of the of this function, that is, the value of the end of the inoperative time interval, that is, the time $\ _{k}t_{i}^{\,end} $ for DOF $ k $ at instant $ T_{i} $.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree2()
void TypeIIRMLMath::TypeIIRMLDecisionTree2 ( const double &  CurrentPosition,
const double &  CurrentVelocity,
const double &  TargetPosition,
const double &  TargetVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration,
const double &  SynchronizationTime,
MotionPolynomials *  PolynomialsInternal 
)

This function contains the decision tree of the Step 2 of the Type II On-Line Trajectory Generation algorithm.

This function synchronizes the trajectory for one single degree of freedom to the synchronization time $ t_{i}^{\,sync} $ and calculates all trajectory parameters.

Parameters:
CurrentPositionCurrent position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $
CurrentVelocityCurrent velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $
TargetPositionTarget position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i}^{\,trgt} $
TargetVelocityTarget velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,trgt} $
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $
SynchronizationTimeThe synchronization time $ t_{i}^{\,sync} $ that was calculated in Step 1 of the On-Line Trajectory Generation algorithm (in seconds).
PolynomialsInternalA pointer to a MotionPolynomials object (cf. TypeIIRMLMath::MotionPolynomials). All trajectory parameters of the synchronized Type II trajectory will be written into this object.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
void TypeIIRMLMath::VToVMaxStep1 ( double *  TotalTime,
double *  ThisCurrentPosition,
double *  ThisCurrentVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration 
)

One intermediate Step 1 trajectory segment: v -> +vmax (NegLin)

Parameters:
TotalTimePointer to a double value: Time in seconds required for preceding trajectory segments. This value will be increased by the amount of time required time for this trajectory segment.
ThisCurrentPositionPointer to a double value: Current position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $. This value will be changed by the function in order to intermediately reach an acceleration value of zero.
ThisCurrentVelocityPointer to a double value: Current velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $ This value will be increased in order to intermediately reach an acceleration value of $\ _{k}A_{i}^{\,max} $.
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $.
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $.
Note:
This function is used in the Step 1 decision trees 1A, 1B, and 1C.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
TypeIIRMLMath::VToVMaxStep2()
void TypeIIRMLMath::VToVMaxStep2 ( double *  ThisCurrentTime,
double *  ThisCurrentPosition,
double *  ThisCurrentVelocity,
const double &  MaxVelocity,
const double &  MaxAcceleration,
MotionPolynomials PolynomialsLocal,
const bool &  Inverted 
)

One intermediate Step 2 trajectory segment: v -> vmax (NegLin)

Parameters:
ThisCurrentTimePointer to a double value: Time in seconds required for preceding trajectory segments. This value will be increased by the amount of time required time for this trajectory segment.
ThisCurrentPositionPointer to a double value: Current position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $. This value will be changed by the function in order to intermediately reach the maximum velocity value, $\ _{k}V_{i}^{\,max} $.
ThisCurrentVelocityPointer to a double value: Current velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $ This value will be increased in order to intermediately reach the maximum velocity value, $\ _{k}V_{i}^{\,max} $.
MaxVelocityMaximum allowed velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i}^{\,max} $.
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $.
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will add one further trajectory segment to this object.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegatePink()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
Note:
This function is used in the Step 2 decision tree.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
TypeIIRMLMath::VToVMaxStep1()
void TypeIIRMLMath::VToZeroStep1 ( double *  TotalTime,
double *  ThisCurrentPosition,
double *  ThisCurrentVelocity,
const double &  MaxAcceleration 
)

One intermediate Step 1 trajectory segment: v -> 0 (NegLin)

Parameters:
TotalTimePointer to a double value: Time in seconds required for preceding trajectory segments. This value will be increased by the amount of time required time for this trajectory segment.
ThisCurrentPositionPointer to a double value: Current position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $. This value will be changed by the function in order to intermediately reach an acceleration value of zero.
ThisCurrentVelocityPointer to a double value: Current velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $ This value will be increased in order to intermediately reach an acceleration value of $\ _{k}A_{i}^{\,max} $.
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $.
Note:
This function is used in the Step 1 decision trees 1A, 1B, and 1C.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree1A()
TypeIIRMLMath::TypeIIRMLDecisionTree1B()
TypeIIRMLMath::TypeIIRMLDecisionTree1C()
TypeIIRMLMath::VToZeroStep2()
void TypeIIRMLMath::VToZeroStep2 ( double *  ThisCurrentTime,
double *  ThisCurrentPosition,
double *  ThisCurrentVelocity,
const double &  MaxAcceleration,
MotionPolynomials PolynomialsLocal,
const bool &  Inverted 
)

One intermediate Step 2 trajectory segment: v -> 0 (NegLin)

Parameters:
ThisCurrentTimePointer to a double value: Time in seconds required for preceding trajectory segments. This value will be increased by the amount of time required time for this trajectory segment.
ThisCurrentPositionPointer to a double value: Current position value for DOF $ k $ at instant $ T_{i} $, $\ _{k}P_{i} $. This value will be changed by the function in order to intermediately reach a velocity value of zero.
ThisCurrentVelocityPointer to a double value: Current velocity value for DOF $ k $ at instant $ T_{i} $, $\ _{k}V_{i} $ This value will be increased in order to intermediately reach a velocity value of zero.
MaxAccelerationMaximum allowed acceleration value for DOF $ k $ at instant $ T_{i} $, $\ _{k}A_{i}^{\,max} $.
PolynomialsLocalPointer to a MotionPolynomials object, which contains the complete trajectory for one single DOF $ k $ at instant $ T_{i} $, $ _k{\cal M}_{i}(t) $. This function will add one further trajectory segment to this object.
InvertedA bool value that indicates whether the input values have been flipped even or odd times prior to the execution of this function (cf. TypeIIRMLMath::NegatePink()). The trajectory parameters in PolynomialsLocal will be set-up correspondingly.
Note:
This function is used in the Step 2 decision tree.
See also:
TypeIIRMLMath::TypeIIRMLDecisionTree2()
TypeIIRMLMath::VToZeroStep1()
User documentation of the Reflexxes Motion Libraries by Reflexxes GmbH (Company Information, Impressum). This document was generated with Doxygen on Mon Jul 7 2014 13:21:09. Copyright 2010–2014.