1 #ifndef TABULAR_CSPACE_H 2 #define TABULAR_CSPACE_H 5 #include <KrisLibrary/meshing/VolumeGrid.h> 6 #include <KrisLibrary/meshing/AreaGrid.h> 8 #include "CSetHelpers.h" 30 Table1D(
const std::vector<T>& values,Real a,Real b,
32 T Lookup(Real x)
const;
33 int Index(Real x,Real* u=NULL)
const;
34 std::pair<Real,Real> Cell(
int index)
const;
35 inline T Lookup(
const Config& x)
const {
return Lookup(x[dim]); }
36 inline int Index(
const Config& x,Real* u=NULL)
const {
return Index(x[dim],u); }
38 std::vector<T> values;
49 Tabular1DSet(
const std::vector<bool>& valid,Real a,Real b);
53 virtual bool Contains(
const Config& x);
54 virtual bool Project(
Config& x);
58 bool calculatedValidIndices;
59 std::vector<int> validIndices;
74 virtual bool Contains(
const Config& x);
75 virtual bool Project(
Config& x);
79 bool calculatedValidIndices;
80 std::vector<IntPair> validIndices;
95 virtual bool Contains(
const Config& x);
96 virtual bool Project(
Config& x);
100 bool calculatedValidIndices;
101 std::vector<IntTriple> validIndices;
117 virtual bool Contains(
const Config& x);
118 virtual bool Project(
Config& x);
138 virtual bool Contains(
const Config& x);
139 virtual bool Project(
Config& x);
160 virtual bool Contains(
const Config& x);
161 virtual bool Project(
Config& x);
189 Tabular1DObjective(
const std::vector<Real>& differentialCosts,
const std::vector<Real>& terminalCosts,
194 virtual std::string Description();
195 virtual bool PathInvariant()
const {
return differentialCosts.values.empty(); }
197 virtual Real TerminalCost(
const Vector& qend);
222 int dim0=0,
int dim1=1);
225 virtual std::string Description();
226 virtual bool PathInvariant()
const {
return differentialCosts.value.empty(); }
228 virtual Real TerminalCost(
const Vector& qend);
254 int dim0=0,
int dim1=1,
int dim2=2);
257 virtual std::string Description();
258 virtual bool PathInvariant()
const {
return differentialCosts.value.empty(); }
260 virtual Real TerminalCost(
const Vector& qend);
274 :values(n,T(0)),a(_a),b(_b),dim(_dim)
279 :values(_values),a(_a),b(_b),dim(_dim)
291 return values[i] + u*(values[i+1]-values[i]);
293 return values[i] + (-u)*(values[i-1]+values[i]);
299 return std::make_pair(a + index*(b-a)/values.size(),a + (index+1)*(b-a)/values.size());
305 if(values.size() <= 1) {
315 return (
int)values.size()-1;
317 Real xscale = (x-a)/(b-a)*(values.size()-1);
318 Real xbase = Floor(xscale);
319 if(u) u[0] = xscale-xbase-0.5;
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: Tabular.h:137
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: Tabular.h:76
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: Tabular.h:55
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: Tabular.h:116
A cost that penalizes via a 1D table lookup of a single index.
Definition: Tabular.h:186
Real Sample(const Interval &s)
Uniformly samples the given intervals.
Definition: sample.cpp:116
A 3D vector class.
Definition: math3d/primitives.h:136
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: Tabular.h:195
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: Tabular.h:258
A 2D array over an axis-aligned 2D box, containing Real values.
Definition: AreaGrid.h:58
Vector Config
an alias for Vector
Definition: RobotKinematics3D.h:14
virtual bool PathInvariant() const
Subclasses: planners may exploit path-invariant costs for faster performance.
Definition: Tabular.h:226
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Tabular.h:193
Class declarations for useful 3D math types.
An integer tuple class.
Definition: IntTuple.h:14
A 2D level set f(x) <= threshold.
Definition: Tabular.h:132
A 3D level set f(x) <= threshold.
Definition: Tabular.h:154
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: Tabular.h:97
A 1D level set f(x) <= threshold.
Definition: Tabular.h:111
A cost that penalizes via a 2D table lookup of a single index.
Definition: Tabular.h:217
A 2D set that includes some marked regions on a grid.
Definition: Tabular.h:67
Contains all the definitions in the Math3D package.
Definition: AnyGeometry.h:13
A base class for all 1D interpolators.
Definition: Interpolator.h:10
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: Tabular.h:73
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Tabular.h:256
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: Tabular.h:159
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: Tabular.h:52
A 1D set that includes some marked regions on a grid.
Definition: Tabular.h:46
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: Tabular.h:94
A 2D vector class.
Definition: math3d/primitives.h:41
A 3D array over an axis-aligned 3D volume, containing Real values.
Definition: AnyGeometry.h:11
A 1D tabular function interpolated over a grid.
Definition: Tabular.h:25
A cost that penalizes via a 3D table lookup of a single index.
Definition: Tabular.h:249
A 3D set that includes some marked regions on a grid.
Definition: Tabular.h:88
Definition: CSetHelpers.h:10
virtual const char * TypeString()
Subclasses: return an identifier for this goal type.
Definition: Tabular.h:224
A base class for objective functionals of the form J[x,u] = sum_0^N-1 L(xi,ui) dt + Phi(xN) ...
Definition: Objective.h:18