43 size_t num_edge_states;
44 std::vector< ompl::base::State * > edge_states;
48 typedef boost::adjacency_list<
56 typedef boost::graph_traits<Graph>::vertex_descriptor Vertex;
57 typedef boost::graph_traits<Graph>::vertex_iterator VertexIter;
58 typedef boost::graph_traits<Graph>::edge_descriptor Edge;
59 typedef boost::graph_traits<Graph>::edge_iterator EdgeIter;
60 typedef boost::graph_traits<Graph>::out_edge_iterator OutEdgeIter;
64 typedef boost::property_map<Graph, ompl::base::State * VProps::*>::type VPStateMap;
65 typedef boost::property_map<Graph, int VProps::*>::type VPBatchMap;
66 typedef boost::property_map<Graph, bool VProps::*>::type VPIsShadowMap;
67 typedef boost::property_map<Graph, size_t VProps::*>::type VPTagMap;
68 typedef boost::property_map<Graph, std::size_t EProps::*>::type EPIndexMap;
69 typedef boost::property_map<Graph, double EProps::*>::type EPDistanceMap;
70 typedef boost::property_map<Graph, int EProps::*>::type EPBatchMap;
71 typedef boost::property_map<Graph, double EProps::*>::type EPWlazyMap;
73 typedef boost::property_map<Graph, size_t EProps::*>::type EPTagMap;
77 typedef boost::property_map<Graph, boost::vertex_index_t>::type VertexIndexMap;
78 typedef boost::property_map<Graph, std::size_t EProps::*>::type EdgeIndexMap;
79 typedef EdgeIndexedGraph::EdgeVectorMap EdgeVectorMap;
113 size_t num_edge_states;
114 std::vector< ompl::base::State * > edge_states;
118 typedef boost::adjacency_list<
125 typedef boost::graph_traits<OverGraph>::vertex_descriptor OverVertex;
126 typedef boost::graph_traits<OverGraph>::vertex_iterator OverVertexIter;
127 typedef boost::graph_traits<OverGraph>::edge_descriptor OverEdge;
128 typedef boost::graph_traits<OverGraph>::edge_iterator OverEdgeIter;
132 EPBatchMap edge_batch_map;
133 unsigned int num_batches;
136 edge_batch_map(edge_batch_map), num_batches(num_batches)
138 bool operator()(
const Edge & e)
const
140 return get(edge_batch_map, e) < (
int)num_batches;
147 ompl_lemur::UtilityCheckerPtr _utility_checker;
149 std::map<std::string, boost::function<Roadmap<RoadmapArgs> * (
RoadmapArgs args)> > _roadmap_registry;
151 std::string _roadmap_type;
152 std::vector<std::string> _roadmap_params;
154 boost::shared_ptr< Roadmap<RoadmapArgs> > _roadmap;
159 boost::shared_ptr< TagCache<VIdxTagMap,EIdxTagsMap> > _tag_cache;
163 std::vector< std::pair<size_t,size_t> > _subgraph_sizes;
172 OverVertex ov_singlestart;
173 OverVertex ov_singlegoal;
177 double _singlestart_cost;
178 double _singlegoal_cost;
181 std::map<Vertex, OverVertex> map_to_overlay;
184 boost::property_map<OverGraph, Vertex OverVProps::*>::type,
185 boost::property_map<OverGraph, Edge OverEProps::*>::type>
194 boost::shared_ptr<NN> nn;
197 double _coeff_distance;
198 double _coeff_checkcost;
204 unsigned int _num_batches_init;
205 unsigned int _max_batches;
207 unsigned int _num_batches_searched;
213 SEARCH_TYPE_DIJKSTRAS,
216 SEARCH_TYPE_RLPASTAR,
221 double _search_incbi_heur_interp;
225 SEARCH_INCBI_BALANCER_TYPE_DISTANCE,
226 SEARCH_INCBI_BALANCER_TYPE_CARDINALITY
227 } _search_incbi_balancer_type;
229 double _search_incbi_balancer_goalfrac;
238 EVAL_TYPE_FWD_EXPAND,
240 EVAL_TYPE_PARTITION_ALL,
241 EVAL_TYPE_SP_INDICATOR_PROBABILITY
246 std::ostream * os_alglog;
250 VIdxTagMap _vidx_tag_map;
251 EIdxTagsMap _eidx_tags_map;
253 boost::chrono::high_resolution_clock::duration _dur_total;
254 boost::chrono::high_resolution_clock::duration _dur_roadmapgen;
255 boost::chrono::high_resolution_clock::duration _dur_roadmapinit;
256 boost::chrono::high_resolution_clock::duration _dur_lazysp;
257 boost::chrono::high_resolution_clock::duration _dur_search;
258 boost::chrono::high_resolution_clock::duration _dur_eval;
259 boost::chrono::high_resolution_clock::duration _dur_selector_init;
260 boost::chrono::high_resolution_clock::duration _dur_selector;
261 boost::chrono::high_resolution_clock::duration _dur_selector_notify;
269 template <
template<
class>
class RoadmapTemplate>
270 void registerRoadmapType(std::string roadmap_type)
275 void registerRoadmapType(std::string roadmap_type,
276 boost::function<Roadmap<RoadmapArgs> * (
RoadmapArgs args)> factory);
278 boost::shared_ptr< const Roadmap<RoadmapArgs> > getRoadmap();
280 void setRoadmapType(std::string roadmap_type);
281 std::string getRoadmapType()
const;
283 void setCoeffDistance(
double coeff_distance);
284 double getCoeffDistance()
const;
286 void setCoeffCheckcost(
double coeff_checkcost);
287 double getCoeffCheckcost()
const;
289 void setCoeffBatch(
double coeff_batch);
290 double getCoeffBatch()
const;
292 void setDoTiming(
bool do_timing);
293 bool getDoTiming()
const;
295 void setPersistRoots(
bool persist_roots);
296 bool getPersistRoots()
const;
298 void setNumBatchesInit(
unsigned int max_batches);
299 unsigned int getNumBatchesInit()
const;
301 void setMaxBatches(
unsigned int max_batches);
302 unsigned int getMaxBatches()
const;
304 void setSolveAll(
bool solve_all);
305 bool getSolveAll()
const;
307 void setSearchType(std::string search_type);
308 std::string getSearchType()
const;
310 void setSearchIncbiHeurInterp(
double search_incbi_heur_interp);
311 double getSearchIncbiHeurInterp()
const;
313 void setSearchIncbiBalancerType(std::string search_incbi_balancer_type);
314 std::string getSearchIncbiBalancerType()
const;
316 void setSearchIncbiBalancerGoalfrac(
double search_incbi_balancer_goalfrac);
317 double getSearchIncbiBalancerGoalfrac()
const;
319 void setEvalType(std::string eval_type);
320 std::string getEvalType()
const;
325 template <
class MyGraph,
class IncSP,
class EvalStrategy>
326 bool do_lazysp_c(MyGraph & graph, std::vector<Edge> & epath, IncSP incsp, EvalStrategy evalstrategy);
328 template <
class MyGraph,
class IncSP>
329 bool do_lazysp_b(MyGraph & graph, std::vector<Edge> & epath, IncSP incsp);
331 template <
class MyGraph>
332 bool do_lazysp_a(MyGraph & graph, std::vector<Edge> & epath);
337 void dump_graph(std::ostream & os_graph);
341 double getDurTotal();
342 double getDurRoadmapGen();
343 double getDurRoadmapInit();
344 double getDurLazySP();
345 double getDurSearch();
347 double getDurSelectorInit();
348 double getDurSelector();
349 double getDurSelectorNotify();
356 void edge_init_states(
const Edge & e);
358 void overlay_apply();
359 void overlay_unapply();
361 void calculate_w_lazy(
const Edge & e);
366 bool isevaledmap_get(
const Edge & e);
367 std::pair<double, std::vector<Edge> > wmap_get(
const Edge & e);
370 double nn_dist(
const Vertex & va,
const Vertex & vb);
377 typedef boost::readable_property_map_tag category;
378 typedef LEMUR::Edge key_type;
379 typedef bool value_type;
380 typedef bool reference;
384 inline const double get(
const IsEvaledMap & isevaledmap,
const LEMUR::Edge & e)
386 return isevaledmap.lemur.isevaledmap_get(e);
393 typedef boost::readable_property_map_tag category;
394 typedef LEMUR::Edge key_type;
395 typedef std::pair<double, std::vector<LEMUR::Edge> > value_type;
396 typedef std::pair<double, std::vector<LEMUR::Edge> > reference;
400 inline const std::pair<double, std::vector<LEMUR::Edge> >
get(
const WMap & wmap,
const LEMUR::Edge & e)
402 return wmap.lemur.wmap_get(e);
Definition: NearestNeighborsLinearBGL.h:11
This uses pr_bgl::lazysp() and pr_bgl::incbi !
Definition: LEMUR.h:18
Definition: Roadmap.h:174
Definition: BisectPerm.h:12