Loading...
Searching...
No Matches
MotionValidator.h
1/*********************************************************************
2* Software License Agreement (BSD License)
3*
4* Copyright (c) 2010, Rice University
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 Rice University 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_MOTION_VALIDATOR_
38#define OMPL_BASE_MOTION_VALIDATOR_
39
40#include "ompl/base/State.h"
41#include "ompl/util/ClassForward.h"
42#include <utility>
43
44namespace ompl
45{
46 namespace base
47 {
49 OMPL_CLASS_FORWARD(SpaceInformation);
51
53
54 OMPL_CLASS_FORWARD(MotionValidator);
56
59
65 {
66 public:
69 {
70 }
71
73 MotionValidator(const SpaceInformationPtr &si) : si_(si.get()), valid_(0), invalid_(0)
74 {
75 }
76
77 virtual ~MotionValidator() = default;
78
83 virtual bool checkMotion(const State *s1, const State *s2) const = 0;
84
99 virtual bool checkMotion(const State *s1, const State *s2, std::pair<State *, double> &lastValid) const = 0;
100
102 unsigned int getValidMotionCount() const
103 {
104 return valid_;
105 }
106
108 unsigned int getInvalidMotionCount() const
109 {
110 return invalid_;
111 }
112
114 unsigned int getCheckedMotionCount() const
115 {
116 return valid_ + invalid_;
117 }
118
121 {
122 return valid_ == 0 ? 0.0 : (double)valid_ / (double)(invalid_ + valid_);
123 }
124
127 {
128 valid_ = invalid_ = 0;
129 }
130
131 protected:
134
136 mutable unsigned int valid_;
137
139 mutable unsigned int invalid_;
140 };
141 }
142}
143
144#endif
Abstract definition for a class checking the validity of motions – path segments between states....
MotionValidator(SpaceInformation *si)
Constructor.
SpaceInformation * si_
The instance of space information this state validity checker operates on.
double getValidMotionFraction() const
Get the fraction of segments that tested as valid.
unsigned int getCheckedMotionCount() const
Get the total number of segments tested, regardless of result.
MotionValidator(const SpaceInformationPtr &si)
Constructor.
virtual bool checkMotion(const State *s1, const State *s2, std::pair< State *, double > &lastValid) const =0
Check if the path between two states is valid. Also compute the last state that was valid and the tim...
virtual bool checkMotion(const State *s1, const State *s2) const =0
Check if the path between two states (from s1 to s2) is valid. This function assumes s1 is valid.
void resetMotionCounter()
Reset the counters for valid and invalid segments.
unsigned int getInvalidMotionCount() const
Get the number of segments that tested as invalid.
unsigned int valid_
Number of valid segments.
unsigned int invalid_
Number of invalid segments.
unsigned int getValidMotionCount() const
Get the number of segments that tested as valid.
A shared pointer wrapper for ompl::base::SpaceInformation.
The base class for space information. This contains all the information about the space planning is d...
Definition of an abstract state.
Definition State.h:50
This namespace contains sampling based planning routines shared by both planning under geometric cons...
Main namespace. Contains everything in this library.