57 ,
const double &CurrentVelocity
58 ,
const double &TargetPosition
59 ,
const double &TargetVelocity
60 ,
const double &MaxVelocity
61 ,
const double &MaxAcceleration
63 ,
double *MinimalExecutionTime )
65 bool IntermediateInversion =
false;
67 double ThisCurrentPosition = CurrentPosition
68 , ThisCurrentVelocity = CurrentVelocity
69 , ThisTargetPosition = TargetPosition
70 , ThisTargetVelocity = TargetVelocity ;
72 *MinimalExecutionTime = 0.0;
77 goto MDecision_1A__002;
82 , &ThisCurrentVelocity
84 , &ThisTargetVelocity );
86 goto MDecision_1A__002;
93 goto MDecision_1A__003;
98 , &ThisCurrentPosition
99 , &ThisCurrentVelocity
103 goto MDecision_1A__003;
108 , ThisTargetVelocity ))
110 goto MDecision_1A__004;
114 goto MDecision_1A__006;
119 , ThisCurrentVelocity
124 goto MDecision_1A__005;
129 , &ThisCurrentPosition
130 , &ThisCurrentVelocity
134 , &ThisCurrentVelocity
135 , &ThisTargetPosition
136 , &ThisTargetVelocity );
138 IntermediateInversion =
true;
139 goto MDecision_1A__009;
144 , ThisCurrentVelocity
151 , ThisCurrentVelocity
156 if (IntermediateInversion)
165 goto END_OF_THIS_FUNCTION;
170 , ThisCurrentVelocity
174 if (IntermediateInversion)
183 goto END_OF_THIS_FUNCTION;
189 goto MDecision_1A__007;
193 goto MDecision_1A__008;
198 , ThisCurrentVelocity
204 , &ThisCurrentPosition
205 , &ThisCurrentVelocity
209 , &ThisCurrentVelocity
210 , &ThisTargetPosition
211 , &ThisTargetVelocity );
213 IntermediateInversion =
true;
214 goto MDecision_1A__009;
218 goto MDecision_1A__005;
223 , ThisCurrentVelocity
229 , &ThisCurrentPosition
230 , &ThisCurrentVelocity
234 , &ThisCurrentVelocity
235 , &ThisTargetPosition
236 , &ThisTargetVelocity );
238 IntermediateInversion =
true;
239 goto MDecision_1A__005;
243 goto MDecision_1A__009;
248 , ThisCurrentVelocity
255 , ThisCurrentVelocity
259 if (IntermediateInversion)
268 goto END_OF_THIS_FUNCTION;
273 , ThisCurrentVelocity
278 if (IntermediateInversion)
287 goto END_OF_THIS_FUNCTION;
290 END_OF_THIS_FUNCTION:
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?
void VToVMaxStep1(double *TotalTime, double *ThisCurrentPosition, double *ThisCurrentVelocity, const double &MaxVelocity, const double &MaxAcceleration)
One intermediate Step 1 trajectory segment: v -> +vmax (NegLin)
The profile is NegLinHldPosLin.
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.
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 Generatio...
The profile is NegLinPosLin.
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?
Header file for decisions of the two decision trees of the Type II On-Line Trajectory Generation algo...
void NegateStep1(double *ThisCurrentPosition, double *ThisCurrentVelocity, double *ThisTargetPosition, double *ThisTargetVelocity)
Negate input values during Step 1.
Header file for functions and definitions of constant values and macros.
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.
bool Decision_1A__003(const double &CurrentVelocity, const double &TargetVelocity)
Is (vi <= vtrgt)?
The profile is PosLinNegLin.
The profile is PosTrapNegLin.
void VToZeroStep1(double *TotalTime, double *ThisCurrentPosition, double *ThisCurrentVelocity, const double &MaxAcceleration)
One intermediate Step 1 trajectory segment: v -> 0 (NegLin)
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.
bool Decision_1A__002(const double &CurrentVelocity, const double &MaxVelocity)
Is (vi <= +vmax)?
bool Decision_1A__006(const double &TargetVelocity)
Is (vtrgt >= 0)?
The profile is PosTriNegLin.
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?
The profile is NegTriPosLin.
The profile is PosLinHldNegLin.
Header file for the Step 1 decision tree 1A of the Type II On-Line Trajectory Generation algorithm...
The profile is NegTrapPosLin.
Header file for the Step 1 motion profiles.
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__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?
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.
bool Decision_1A__001(const double &CurrentVelocity)
Is (vi >= 0)?
Step1_Profile
Enumeration of all possible profiles of Step 1 (A, B, and C).