KrisLibrary  1.0.0
CSetHelpers.h
1 #ifndef PLANNING_CSET_HELPERS_H
2 #define PLANNING_CSET_HELPERS_H
3 
4 #include "CSet.h"
5 #include "CSpace.h"
6 
10 class BoxSet : public CSet
11 {
12 public:
13  BoxSet(Real xmin,Real xmax,int d=1);
14  BoxSet(const Vector& bmin,const Vector& bmax);
15  virtual ~BoxSet() {}
16  virtual int NumDimensions() const;
17  virtual bool Contains(const Config& x);
18  virtual bool Project(Config& x);
19  virtual bool IsConvex() const { return true; }
20  virtual bool IsSampleable() const { return true; }
21  virtual void Sample(Config& x);
22  virtual Real ObstacleDistance(const Config& x);
24 
25  Vector bmin,bmax;
26 };
27 
31 class AxisRangeSet : public CSet
32 {
33 public:
34  AxisRangeSet(int i,Real xmin,Real xmax);
35  virtual ~AxisRangeSet() {}
36  virtual int NumDimensions() const;
37  virtual bool Contains(const Config& x);
38  virtual bool Project(Config& x);
39  virtual bool IsConvex() const { return true; }
40  virtual bool IsSampleable() const { return false; }
41  virtual Real ObstacleDistance(const Config& x);
43 
44  int i;
45  Real low,high;
46 };
47 
48 
49 class NeighborhoodSet : public CSet
50 {
51 public:
52  NeighborhoodSet(CSpace* space,const Config& c,Real r);
53  virtual ~NeighborhoodSet() {}
54  virtual int NumDimensions() const;
55  virtual bool Contains(const Config& x);
56  virtual bool Project(Config& x);
57  virtual bool IsConvex() const { return true; }
58  virtual bool IsSampleable() const { return true; }
59  virtual void Sample(Config& x);
60  virtual Real ObstacleDistance(const Config& x);
62 
63  CSpace* space;
64  Config center;
65  Real radius;
66 };
67 
71 class SubspaceSet : public CSet
72 {
73 public:
74  SubspaceSet(const std::shared_ptr<CSet>& base,int imin,int imax);
75  virtual ~SubspaceSet() {}
76  virtual int NumDimensions() const { return -1; }
77  virtual bool Contains(const Config& x);
78  virtual bool Project(Config& x);
79  virtual bool IsConvex() const { return base->IsConvex(); }
80  virtual Real ObstacleDistance(const Config& x);
82 
83  std::shared_ptr<CSet> base;
84  int imin,imax;
85 };
86 
87 class FiniteSet : public CSet
88 {
89 public:
90  FiniteSet();
91  FiniteSet(const Vector& item);
92  FiniteSet(const Vector& item1,const Vector& item2);
93  FiniteSet(const Vector& item1,const Vector& item2,const Vector& item3);
94  FiniteSet(const std::vector<Vector>& items);
95  virtual ~FiniteSet() {}
96  virtual int NumDimensions() const;
97  virtual bool Contains(const Config& x);
98  virtual bool Project(Config& x);
99  virtual bool IsSampleable() const { return true; }
100  virtual void Sample(Config& x);
101  virtual Real ObstacleDistance(const Config& x);
103 
104  std::vector<Vector> items;
105 };
106 
107 class VisibilitySet : public CSet
108 {
109 public:
110  VisibilitySet(CSpace* space,const Vector& x);
111  virtual ~VisibilitySet() {}
112  virtual int NumDimensions() const;
113  virtual bool Contains(const Config& x);
114 
115  CSpace* space;
116  Vector center;
117 };
118 
119 class UnionSet : public CSet
120 {
121 public:
122  UnionSet(const std::shared_ptr<CSet>& a,const std::shared_ptr<CSet>& b);
123  UnionSet(const std::vector<std::shared_ptr<CSet> >& items);
124  virtual ~UnionSet() {}
125  virtual int NumDimensions() const;
126  virtual bool Contains(const Config& x);
127  virtual bool Project(Config& x);
128  virtual bool IsSampleable() const;
129  virtual void Sample(Config& x);
130 
131  std::vector<std::shared_ptr<CSet> > items;
132 };
133 
134 class IntersectionSet : public CSet
135 {
136 public:
137  IntersectionSet(const std::shared_ptr<CSet>& a,const std::shared_ptr<CSet>& b);
138  IntersectionSet(const std::vector<std::shared_ptr<CSet> >& items);
139  virtual ~IntersectionSet() {}
140  virtual int NumDimensions() const;
141  virtual bool Contains(const Config& x);
142  virtual bool IsSampleable() const;
143  virtual void Sample(Config& x);
144  virtual bool IsConvex() const;
145  virtual Real ObstacleDistance(const Config& x);
147 
148  std::vector<std::shared_ptr<CSet> > items;
149 };
150 
151 
152 #endif
Tests whether the range of values from x[imin:imax] is contained within base.
Definition: CSetHelpers.h:71
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: CSetHelpers.h:40
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: CSetHelpers.h:58
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
virtual Optimization::NonlinearProgram * Numeric()
Definition: CSetHelpers.cpp:52
virtual bool IsConvex() const
If true, the feasible set is convex with respect to the CSpace&#39;s interpolation function.
Definition: CSetHelpers.h:57
virtual bool IsConvex() const
If true, the feasible set is convex with respect to the CSpace&#39;s interpolation function.
Definition: CSetHelpers.h:19
virtual bool IsConvex() const
If true, the feasible set is convex with respect to the CSpace&#39;s interpolation function.
Definition: CSetHelpers.h:79
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: CSetHelpers.h:20
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: CSetHelpers.h:76
Definition: CSetHelpers.h:87
Definition: CSetHelpers.h:49
virtual int NumDimensions() const
Returns the number of dimensions this accepts (-1) for all dimensions.
Definition: CSetHelpers.cpp:19
Definition: CSetHelpers.h:134
Definition: CSetHelpers.h:107
A structure defining a nonlinear program.
Definition: NonlinearProgram.h:22
A subset of a CSpace, which establishes a constraint for a configuration to be feasible.
Definition: CSet.h:20
virtual bool IsConvex() const
If true, the feasible set is convex with respect to the CSpace&#39;s interpolation function.
Definition: CSetHelpers.h:39
Definition: CSetHelpers.h:31
Definition: CSetHelpers.h:119
Definition: CSetHelpers.h:10
virtual bool IsSampleable() const
If true, the Sample() function is implemented.
Definition: CSetHelpers.h:99