1 #ifndef PLANNING_INTERPOLATOR_HELPERS_H 2 #define PLANNING_INTERPOLATOR_HELPERS_H 4 #include "Interpolator.h" 5 #include "GeodesicSpace.h" 8 #include <KrisLibrary/spline/Hermite.h> 9 #include <KrisLibrary/spline/PiecewisePolynomial.h> 21 virtual void Eval(Real u,
Config& x)
const;
22 virtual Real Length()
const {
return a.distance(b); }
23 virtual const Config& Start()
const {
return a; }
24 virtual const Config& End()
const {
return b; }
25 virtual Real ParamStart()
const {
return ta; }
26 virtual Real ParamEnd()
const {
return tb; }
40 virtual void Eval(Real u,
Config& x)
const { space->Interpolate(a,b,u,x); }
41 virtual Real Length()
const {
return space->Distance(a,b); }
42 virtual const Config& Start()
const {
return a; }
43 virtual const Config& End()
const {
return b; }
57 virtual void Eval(Real u,
Config& x)
const { space->Interpolate(a,b,u,x); }
58 virtual Real Length()
const {
return space->
Distance(a,b); }
59 virtual const Config& Start()
const {
return a; }
60 virtual const Config& End()
const {
return b; }
76 virtual void Eval(Real u,
Config& x)
const;
77 virtual Real Length()
const;
78 virtual const Config& Start()
const {
return base->End(); }
79 virtual const Config& End()
const {
return base->Start(); }
80 virtual Real ParamStart()
const {
return pstart; }
81 virtual Real ParamEnd()
const {
return pend; }
97 PathInterpolator(
const std::vector<InterpolatorPtr > & segments,Real totalTime=1.0);
100 void Append(
const InterpolatorPtr& interp,Real duration=0);
102 void ScaleDuration(Real scale);
103 void SetTotalTime(Real ttotal);
104 virtual void Eval(Real u,
Config& x)
const;
105 virtual Real Length()
const;
106 virtual const Config& Start()
const {
return segments.front()->Start(); }
107 virtual const Config& End()
const {
return segments.back()->End(); }
108 virtual Real ParamStart()
const {
return times.empty() ? 0 : times.front(); }
109 virtual Real ParamEnd()
const {
return times.empty() ? 1 : times.back(); }
111 std::vector<InterpolatorPtr > segments;
112 std::vector<Real> durations;
113 std::vector<Real> times;
122 virtual void Eval(Real u,
Config& x)
const;
123 virtual Real Length()
const;
124 virtual const Config& Start()
const {
return configs.front(); }
125 virtual const Config& End()
const {
return configs.back(); }
126 virtual Real ParamStart()
const {
return times.empty() ? 0 : times.front(); }
127 virtual Real ParamEnd()
const {
return times.empty() ? 1 : times.back(); }
129 std::vector<Config> configs;
130 std::vector<Real> times;
139 virtual void Eval(Real u,
Config& x)
const;
140 virtual Real Length()
const;
150 virtual void Eval(Real u,
Config& x)
const;
151 virtual Real Length()
const;
152 virtual const Config& Start()
const {
return start; }
153 virtual const Config& End()
const {
return end; }
154 virtual Real ParamStart()
const {
return path.StartTime(); }
155 virtual Real ParamEnd()
const {
return path.EndTime(); }
168 MultiInterpolator(
const InterpolatorPtr& component1,
const InterpolatorPtr& component2);
171 void Split(
const Vector& x,std::vector<Vector>& items)
const;
172 void Join(
const std::vector<Vector>& items,
Vector& x)
const;
173 virtual void Eval(Real u,
Config& x)
const;
174 virtual Real Length()
const;
175 virtual const Config& Start()
const {
return a; }
176 virtual const Config& End()
const {
return b; }
177 virtual Real ParamStart()
const {
return components[0]->ParamStart(); }
178 virtual Real ParamEnd()
const {
return components[0]->ParamEnd(); }
180 std::vector<InterpolatorPtr > components;
189 virtual void Eval(Real u,
Config& x)
const;
190 virtual Real Length()
const {
return base->Length(); }
191 virtual const Config& Start()
const {
return a; }
192 virtual const Config& End()
const {
return b; }
193 virtual Real ParamStart()
const {
return base->ParamStart(); }
194 virtual Real ParamEnd()
const {
return base->ParamEnd(); }
196 InterpolatorPtr base;
A space with geodesics and (optionally) geodesic derivatives.
Definition: GeodesicSpace.h:31
An interpolator that uses a GeodesicSpace's Interpolate function.
Definition: InterpolatorHelpers.h:35
An interpolator that uses a CSpace's Interpolate function.
Definition: InterpolatorHelpers.h:52
Vector Config
an alias for Vector
Definition: RobotKinematics3D.h:14
Motion planning configuration space base class. The configuration space implements an interpolation s...
Definition: CSpace.h:34
An interpolator that goes between two Configs.
Definition: InterpolatorHelpers.h:15
A cartesian product of interpolators.
Definition: InterpolatorHelpers.h:165
An interpolator that remaps a time interval of another interpolator. Maps the parameter range [pstart...
Definition: InterpolatorHelpers.h:71
Definition: InterpolatorHelpers.h:184
Definition: InterpolatorHelpers.h:116
Definition: InterpolatorHelpers.h:145
virtual Real Distance(const Config &x, const Config &y)
optionally overrideable (default uses euclidean space)
Definition: CSpace.h:56
A base class for all 1D interpolators.
Definition: Interpolator.h:10
An interpolator that concatenates a list of other interpolators. The interpolators may have nonunifor...
Definition: InterpolatorHelpers.h:92
Definition: InterpolatorHelpers.h:133
Definition: PiecewisePolynomial.h:105
A vector over the field T.
Definition: function.h:9
Convenience functions for linear interpolation of vectors and matrices.