27 #ifndef BATCHING_POMP_VERTEX_BATCHING_HPP_ 28 #define BATCHING_POMP_VERTEX_BATCHING_HPP_ 31 #include <ompl/base/StateSpace.h> 32 #include <ompl/util/Console.h> 33 #include <boost/graph/adjacency_list.hpp> 34 #include <boost/graph/properties.hpp> 35 #include "batching_pomp/batching/BatchingManager.hpp" 44 template<
class Graph,
class VStateMap,
class StateCon,
class EDistance>
48 typedef boost::graph_traits<Graph> GraphTypes;
49 typedef typename GraphTypes::vertex_iterator VertexIter;
50 typedef typename GraphTypes::vertex_descriptor Vertex;
60 std::string _roadmapFileName,
62 Graph& _currentRoadmap,
63 unsigned int _initNumVertices,
64 double _vertInflFactor
66 :
BatchingManager<Graph, VStateMap,
StateCon, EDistance>(_space,_stateMap,_roadmapFileName,_fullRoadmap,_currentRoadmap)
67 , mNumVerticesAdded{0u}
68 , mNextVertexTarget{_initNumVertices}
69 , mVertInflFactor{_vertInflFactor}
79 mVertInflFactor = _vertInflFactor;
82 double getVertexInflationFactor()
const 84 return mVertInflFactor;
94 void nextBatch(
const std::function<
bool(
const ompl::base::State*)>& _pruneFunction,
95 ompl::NearestNeighbors<Vertex>& _vertexNN)
override 99 OMPL_INFORM(
"Batching exhausted! No updates with nextBatch!");
103 OMPL_INFORM(
"New Vertex Batch called!");
106 std::vector<Vertex> vertex_vector(mNextVertexTarget - mNumVerticesAdded);
109 while(mNumVerticesAdded < mNextVertexTarget)
116 vertex_vector[idx++] = newVertex;
123 if(mCurrVertex == mLastVertex) {
132 vertex_vector.resize(idx);
133 _vertexNN.add(vertex_vector);
137 mNextVertexTarget =
static_cast<unsigned int>(mNextVertexTarget * mVertInflFactor);
142 unsigned int mNumVerticesAdded;
143 unsigned int mNextVertexTarget;
144 double mVertInflFactor;
146 VertexIter mCurrVertex;
147 VertexIter mLastVertex;
154 #endif //BATCHING_POMP_VERTEX_BATCHING_HPP_ Derived class of BatchingManager that implements Vertex Batching.
Definition: VertexBatching.hpp:45
void nextBatch(const std::function< bool(const ompl::base::State *)> &_pruneFunction, ompl::NearestNeighbors< Vertex > &_vertexNN) override
Definition: VertexBatching.hpp:94
Abstract class that represents the batching strategy used for the planning algorithm.
Definition: BatchingManager.hpp:51
VertexBatching(const ompl::base::StateSpacePtr _space, VStateMap _stateMap, std::string _roadmapFileName, Graph &_fullRoadmap, Graph &_currentRoadmap, unsigned int _initNumVertices, double _vertInflFactor)
Definition: VertexBatching.hpp:58
Definition: BatchingManager.hpp:36
Composite struct to associate the state space with each state.
Definition: BatchingPOMP.hpp:55
void setVertexInflationFactor(double _vertInflFactor)
Setters and Getters.
Definition: VertexBatching.hpp:77
void updateWithNewSolutionCost(double _newSolnCost) override
Overriden methods.
Definition: VertexBatching.hpp:89