se2ez
sampler.cpp
Go to the documentation of this file.
1 /* Author: Zachary Kingston */
2 
3 #include <se2ez/core/joint.h>
4 #include <se2ez/core/frame.h>
5 #include <se2ez/core/robot.h>
6 #include <se2ez/core/state.h>
7 
8 #include <se2ez/plan/space.h>
9 #include <se2ez/plan/sampler.h>
10 
11 using namespace se2ez;
12 
13 plan::StateSampler::StateSampler(const plan::StateSpace *space) : ompl::base::RealVectorStateSampler(space)
14 {
15 }
16 
17 void plan::StateSampler::sampleUniform(ompl::base::State *state)
18 {
19  ompl::base::RealVectorStateSampler::sampleUniform(state);
20 
21  auto *as = state->as<plan::StateSpace::StateType>();
22  as->state->dirty = true;
23 }
24 
25 void plan::StateSampler::sampleUniformNear(ompl::base::State *state, const ompl::base::State *near,
26  double distance)
27 {
28  const unsigned int dim = space_->getDimension();
29 
30  auto *as = state->as<plan::StateSpace::StateType>();
31  const auto *an = near->as<plan::StateSpace::StateType>();
32 
33  for (unsigned int i = 0; i < dim; ++i)
34  as->values[i] = rng_.uniformReal(an->values[i] - distance, an->values[i] + distance);
35 
36  space_->enforceBounds(as);
37  as->state->dirty = true;
38 }
39 
40 void plan::StateSampler::sampleGaussian(ompl::base::State *state, const ompl::base::State *mean,
41  double stdDev)
42 {
43  const unsigned int dim = space_->getDimension();
44 
45  auto *as = state->as<plan::StateSpace::StateType>();
46  const auto *am = mean->as<plan::StateSpace::StateType>();
47 
48  for (unsigned int i = 0; i < dim; ++i)
49  as->values[i] = rng_.gaussian(am->values[i], stdDev);
50 
51  space_->enforceBounds(as);
52  as->state->dirty = true;
53 }
void sampleGaussian(ompl::base::State *state, const ompl::base::State *mean, double stdDev) override
Definition: sampler.cpp:40
void sampleUniform(ompl::base::State *state) override
Definition: sampler.cpp:17
void sampleUniformNear(ompl::base::State *state, const ompl::base::State *near, double distance) override
Definition: sampler.cpp:25
StateSampler(const StateSpace *space)
Definition: sampler.cpp:13
Definition: goals.h:10
Main namespace.
Definition: collision.h:11