All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends
DiscreteControlSpace.h
1 /*********************************************************************
2 * Software License Agreement (BSD License)
3 *
4 * Copyright (c) 2012, Willow Garage
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_CONTROL_SPACES_DISCRETE_CONTROL_SPACE_
38 #define OMPL_CONTROL_SPACES_DISCRETE_CONTROL_SPACE_
39 
40 #include "ompl/control/ControlSpace.h"
41 
42 namespace ompl
43 {
44  namespace control
45  {
46 
49  {
50  public:
51 
54  {
55  }
56 
57  virtual void sample(Control *control);
58  };
59 
65  {
66  public:
67 
69  class ControlType : public Control
70  {
71  public:
72 
74  int value;
75  };
76 
78  DiscreteControlSpace(const base::StateSpacePtr &stateSpace, int lowerBound, int upperBound) :
79  ControlSpace(stateSpace), lowerBound_(lowerBound), upperBound_(upperBound)
80  {
81  setName("Discrete" + getName());
83  }
84 
85  virtual ~DiscreteControlSpace(void)
86  {
87  }
88 
89  virtual unsigned int getDimension(void) const;
90 
91  virtual void copyControl(Control *destination, const Control *source) const;
92 
93  virtual bool equalControls(const Control *control1, const Control *control2) const;
94 
95  virtual ControlSamplerPtr allocDefaultControlSampler(void) const;
96 
97  virtual Control* allocControl(void) const;
98 
99  virtual void freeControl(Control *control) const;
100 
102  virtual void nullControl(Control *control) const;
103 
104  virtual void printControl(const Control *control, std::ostream &out) const;
105 
106  virtual void printSettings(std::ostream &out) const;
107 
109  unsigned int getControlCount(void) const
110  {
111  return upperBound_ - lowerBound_ + 1;
112  }
113 
115  int getLowerBound(void) const
116  {
117  return lowerBound_;
118  }
119 
121  int getUpperBound(void) const
122  {
123  return upperBound_;
124  }
125 
127  void setBounds(int lowerBound, int upperBound)
128  {
129  lowerBound_ = lowerBound;
130  upperBound_ = upperBound;
131  }
132 
133  virtual void setup(void);
134 
136  virtual unsigned int getSerializationLength(void) const;
137 
139  virtual void serialize(void *serialization, const Control *ctrl) const;
140 
142  virtual void deserialize(Control *ctrl, const void *serialization) const;
143 
144  protected:
145 
148 
151  };
152 
153  }
154 }
155 
156 #endif
Abstract definition of a control sampler. Motion planners that need to sample controls will call func...
virtual ControlSamplerPtr allocDefaultControlSampler(void) const
Allocate the default control sampler.
virtual void printControl(const Control *control, std::ostream &out) const
Print a control to a stream.
Definition of an abstract control.
Definition: Control.h:48
A boost shared pointer wrapper for ompl::base::StateSpace.
virtual bool equalControls(const Control *control1, const Control *control2) const
Check if two controls are the same.
virtual Control * allocControl(void) const
Allocate memory for a control.
A space representing discrete controls; i.e. there are a small number of discrete controls the system...
virtual void deserialize(Control *ctrl, const void *serialization) const
Deserializes a control from the serialization buffer.
virtual void sample(Control *control)
Sample a control. All other control sampling functions default to this one, unless a user-specified i...
void setName(const std::string &name)
Set the name of the control space.
DiscreteControlSpace(const base::StateSpacePtr &stateSpace, int lowerBound, int upperBound)
Construct a discrete space in wich controls can take values in the set [lowerBound, upperBound].
The definition of a discrete control.
int upperBound_
The highest integer state.
virtual void printSettings(std::ostream &out) const
Print the settings for this control space to a stream.
int value
The current control - an int in range [lowerBound, upperBound].
ompl::control::DiscreteControlSpace
Control space sampler for discrete controls.
virtual void serialize(void *serialization, const Control *ctrl) const
Serializes the given control into the serialization buffer.
const std::string & getName(void) const
Get the name of the control space.
virtual void nullControl(Control *control) const
This sets the control value to lowerBound_.
int type_
A type assigned for this control space.
Definition: ControlSpace.h:181
int getLowerBound(void) const
Returns the lowest possible control value.
A control space representing the space of applicable controls.
Definition: ControlSpace.h:66
virtual void setup(void)
Perform final setup steps. This function is automatically called by the SpaceInformation.
int lowerBound_
The lowest integer state.
virtual void copyControl(Control *destination, const Control *source) const
Copy a control to another.
DiscreteControlSampler(const ControlSpace *space)
Constructor.
virtual void freeControl(Control *control) const
Free the memory of a control.
int getUpperBound(void) const
Returns the highest possible control value.
void setBounds(int lowerBound, int upperBound)
Set the bounds for the states in this space (the states will be in the set [lowerBound, upperBound].
unsigned int getControlCount(void) const
Returns the number of controls possible.
virtual unsigned int getDimension(void) const
Get the dimension of this control space.
virtual unsigned int getSerializationLength(void) const
Returns the serialization size for a single control in this space.