37#include "ompl/extensions/triangle/PropositionalTriangularDecomposition.h"
38#include "ompl/extensions/triangle/TriangularDecomposition.h"
39#include "ompl/control/planners/ltl/PropositionalDecomposition.h"
40#include "ompl/control/planners/ltl/World.h"
41#include "ompl/util/RandomNumbers.h"
42#include "ompl/base/State.h"
43#include "ompl/base/StateSampler.h"
44#include "ompl/base/spaces/RealVectorBounds.h"
61 using Polygon = TriangularDecomposition::Polygon;
62 using Vertex = TriangularDecomposition::Vertex;
64 const std::vector<Polygon> &holes,
const std::vector<Polygon> &props);
65 ~WrapperDecomposition()
override =
default;
66 void project(
const ob::State *s, std::vector<double> &coord)
const override;
67 void sampleFromRegion(
int rid,
ompl::RNG &rng, std::vector<double> &coord)
const override;
68 void sampleFullState(
const ob::StateSamplerPtr &sampler,
const std::vector<double> &coord,
76oc::PropositionalTriangularDecomposition::PropositionalTriangularDecomposition(
const ob::RealVectorBounds &bounds,
77 const std::vector<Polygon> &holes,
78 const std::vector<Polygon> &props)
84int oc::PropositionalTriangularDecomposition::getNumProps()
const
86 return triDecomp_->getNumRegionsOfInterest();
89oc::World oc::PropositionalTriangularDecomposition::worldAtRegion(
int triID)
91 int numProps = getNumProps();
92 World world(numProps);
93 for (
int p = 0; p < numProps; ++p)
97 int prop = triDecomp_->getRegionOfInterestAt(triID);
103void oc::PropositionalTriangularDecomposition::setup()
108void oc::PropositionalTriangularDecomposition::addHole(
const Polygon &hole)
110 triDecomp_->addHole(hole);
113void oc::PropositionalTriangularDecomposition::addProposition(
const Polygon &prop)
115 triDecomp_->addRegionOfInterest(prop);
118const std::vector<oc::PropositionalTriangularDecomposition::Polygon> &
119oc::PropositionalTriangularDecomposition::getHoles()
const
121 return triDecomp_->getHoles();
124const std::vector<oc::PropositionalTriangularDecomposition::Polygon> &
125oc::PropositionalTriangularDecomposition::getPropositions()
const
127 return triDecomp_->getAreasOfInterest();
130void oc::PropositionalTriangularDecomposition::print(std::ostream &out)
const
132 triDecomp_->print(out);
138 const std::vector<Polygon> &holes,
const std::vector<Polygon> &props)
139 :
oc::TriangularDecomposition(bounds, holes, props), decomp_(decomp)
143 void WrapperDecomposition::project(
const ob::State *s, std::vector<double> &coord)
const
145 decomp_->project(s, coord);
148 void WrapperDecomposition::sampleFromRegion(
int rid,
ompl::RNG &rng, std::vector<double> &coord)
const
150 decomp_->sampleFromRegion(rid, rng, coord);
153 void WrapperDecomposition::sampleFullState(
const ob::StateSamplerPtr &sampler,
const std::vector<double> &coord,
156 decomp_->sampleFullState(sampler, coord, s);
Random number generation. An instance of this class cannot be used by multiple threads at once (membe...
The lower and upper bounds for an Rn space.
Definition of an abstract state.
A Decomposition is a partition of a bounded Euclidean space into a fixed number of regions which are ...
A propositional decomposition wraps a given Decomposition with a region-to-proposition assignment ope...
A TriangularDecomposition is a triangulation that ignores obstacles.
A class to represent an assignment of boolean values to propositions. A World can be partially restri...
This namespace contains sampling based planning routines shared by both planning under geometric cons...
This namespace contains sampling based planning routines used by planning under differential constrai...