1 #include <KrisLibrary/spline/PiecewisePolynomial.h> 3 #include "DynamicPath.h" 9 Spline::PiecewisePolynomial res;
10 res.segments.resize(3);
11 res.timeShift.resize(3);
15 res.times[2] = ramp.tswitch2;
16 res.times[3] = ramp.ttotal;
17 res.segments[0].Resize(3);
18 res.segments[0].coef[0] = ramp.
x0;
19 res.segments[0].coef[1] = ramp.dx0;
20 res.segments[0].coef[2] = 0.5*ramp.a1;
22 res.segments[1].Resize(2);
26 res.segments[2].Resize(3);
27 res.segments[2].coef[0] = ramp.x1;
28 res.segments[2].coef[1] = ramp.dx1;
29 res.segments[2].coef[2] = 0.5*ramp.a2;
30 res.timeShift[2] = ramp.ttotal;
32 if(ramp.ttotal == ramp.tswitch2) {
33 res.times.erase(--res.times.end());
34 res.segments.erase(--res.segments.end());
35 res.timeShift.erase(--res.timeShift.end());
38 res.times.erase(++res.times.begin());
39 res.segments.erase(++res.segments.begin());
40 res.timeShift.erase(++res.timeShift.begin());
42 if(ramp.
tswitch1 == 0 && res.segments.size()>1) {
43 res.times.erase(res.times.begin());
44 res.segments.erase(res.segments.begin());
45 res.timeShift.erase(res.timeShift.begin());
52 Spline::PiecewisePolynomialND res;
53 res.elements.resize(ramp.ramps.size());
54 for(
size_t i=0;i<ramp.ramps.size();i++)
55 res.elements[i] = Cast(ramp.ramps[i]);
60 inline Spline::PiecewisePolynomial Cast(
const std::vector<ParabolicRamp::ParabolicRamp1D>& ramps)
62 assert(!ramps.empty());
63 if(ramps.size()==1)
return Cast(ramps[0]);
64 Spline::PiecewisePolynomial p = Cast(ramps[0]);
65 for(
size_t i=1;i<ramps.size();i++)
66 p.Concat(Cast(ramps[i]),
true);
70 inline Spline::PiecewisePolynomialND Cast(
const std::vector<std::vector<ParabolicRamp::ParabolicRamp1D> >& ramps)
72 Spline::PiecewisePolynomialND res;
73 res.elements.resize(ramps.size());
74 for(
size_t i=0;i<ramps.size();i++)
75 res.elements[i] = Cast(ramps[i]);
81 Spline::PiecewisePolynomialND res;
82 for(
size_t i=0;i<path.
ramps.size();i++) {
83 if(i==0) res = Cast(path.
ramps[i]);
84 else res.Concat(Cast(path.
ramps[i]),
true);
Solves for optimal trajectores for a velocity-bounded ND system.
Definition: ParabolicRamp.h:110
std::vector< ParabolicRampND > ramps
The path is stored as a series of ramps.
Definition: DynamicPath.h:160
Real Derivative(Real t) const
Evaluates the derivative of the trajectory.
A bounded-velocity, bounded-acceleration trajectory consisting of parabolic ramps.
Definition: DynamicPath.h:114
Real Evaluate(Real t) const
Evaluates the trajectory.
Real x0
Input.
Definition: ParabolicRamp.h:97
Stores optimal trajectores for an acceleration and velocity-bounded 1D system.
Definition: ParabolicRamp.h:54
Real tswitch1
Calculated upon SolveX.
Definition: ParabolicRamp.h:101
Functions for optimal acceleration-bounded trajectories.
Definition: ContactDistance.h:6