All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
StateValidityChecker.h
1 /*********************************************************************
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2008, Willow Garage, Inc.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 * * Neither the name of the Willow Garage nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 *********************************************************************/
34 
35 /* Author: Ioan Sucan */
36 
37 #ifndef OMPL_BASE_STATE_VALIDITY_CHECKER_
38 #define OMPL_BASE_STATE_VALIDITY_CHECKER_
39 
40 #include "ompl/base/State.h"
41 #include "ompl/util/ClassForward.h"
42 
43 namespace ompl
44 {
45 
46  namespace base
47  {
48 
50  OMPL_CLASS_FORWARD(SpaceInformation);
52 
54 
55  OMPL_CLASS_FORWARD(StateValidityChecker);
57 
63  {
64  enum ClearanceComputationType
65  {
66  NONE = 0,
67  EXACT,
68  APPROXIMATE,
69  BOUNDED_APPROXIMATE,
70  };
71 
73  {
74  }
75 
78  ClearanceComputationType clearanceComputationType;
79 
83 
86  };
87 
92  {
93  public:
94 
97  {
98  }
99 
102  {
103  }
104 
105  virtual ~StateValidityChecker(void)
106  {
107  }
108 
112  virtual bool isValid(const State *state) const = 0;
113 
115  virtual bool isValid(const State *state, double &dist) const
116  {
117  dist = clearance(state);
118  return isValid(state);
119  }
120 
125  virtual bool isValid(const State *state, double &dist, State *validState, bool &validStateAvailable) const
126  {
127  dist = clearance(state, validState, validStateAvailable);
128  return isValid(state);
129  }
130 
133  virtual double clearance(const State *state) const
134  {
135  return 0.0;
136  }
137 
141  virtual double clearance(const State *state, State *validState, bool &validStateAvailable) const
142  {
143  validStateAvailable = false;
144  return clearance(state);
145  }
146 
148  virtual double cost(const State *state) const
149  {
150  return 0.0;
151  }
152 
155  {
156  return specs_;
157  }
158 
159  protected:
160 
163 
166 
167  };
168 
171  {
172  public:
173 
176  {
177  }
178 
181  {
182  }
183 
185  virtual bool isValid(const State * /* state */ ) const
186  {
187  return true;
188  }
189  };
190 
191  }
192 }
193 
194 #endif