61 const VertexSet*
const _candidates =
nullptr)
override;
67 const bool _requireNew =
true)
override;
70 virtual std::pair<VID, bool>
AddNode(
const Cfg& _newCfg)
override;
150 cells.insert(_index);
173 void AddCell(
size_t _index) { cells.insert(_index); }
187 std::set<size_t> cells;
224 template <
typename functor>
235 struct DFSVisitor :
public stapl::visitor_base<WorkspaceDecomposition> {
260 graph_type::vertex_iterator _vit,
263 return visitor_return::CONTINUE;
277 std::map<std::pair<const WorkspaceRegion*, const WorkspaceRegion*>,
Definition: BasicRRTStrategy.h:48
size_t VID
Definition: BasicRRTStrategy.h:55
std::unordered_set< VID > VertexSet
Definition: BasicRRTStrategy.h:56
Definition: GenericStateGraph.h:67
STAPLGraph::vertex_descriptor VID
Definition: GenericStateGraph.h:83
std::string m_freeVolumeSampler
Definition: Syclop.h:297
size_t Conn(const WorkspaceRegion *const _r1, const WorkspaceRegion *const _r2)
Estimate the progress made in connecting _r1 to _r2.
Definition: Syclop.cpp:443
std::set< const WorkspaceRegion * > m_availableRegions
The currently available regions.
Definition: Syclop.h:284
Syclop()
Definition: Syclop.cpp:17
MPBaseObject::RoadmapType RoadmapType
Definition: Syclop.h:26
virtual std::pair< VID, bool > AddNode(const Cfg &_newCfg) override
As basic RRT, but also updates coverage information.
Definition: Syclop.cpp:110
virtual void Initialize() override
Definition: Syclop.cpp:47
virtual ~Syclop()=default
size_t Sel(const WorkspaceRegion *const _r1, const WorkspaceRegion *const _r2)
Definition: Syclop.cpp:428
bool m_improvement
Have we improved the map w/ current region?
Definition: Syclop.h:302
std::string m_tmLabel
The topological map label.
Definition: Syclop.h:281
MPBaseObject::WeightType WeightType
Definition: Syclop.h:25
std::map< const WorkspaceRegion *, RegionData > m_regionData
Holds extra data associated with the regions.
Definition: Syclop.h:274
std::vector< VID > DiscreteLead()
Compute a high-level plan (a sequence of regions).
Definition: Syclop.cpp:160
std::string m_freeVolumeVcLabel
Definition: Syclop.h:298
const WorkspaceRegion * m_currentRegion
Definition: Syclop.h:300
void ComputeFreeVolumes()
Estimate the free volume of each region.
Definition: Syclop.cpp:462
void FindAvailableRegions(std::vector< VID > _lead)
Compute a set of potential regions from the discrete lead.
Definition: Syclop.cpp:296
RoadmapType::VID VID
Definition: Syclop.h:27
size_t m_currentLeadUses
Definition: Syclop.h:291
virtual VID FindNearestNeighbor(const Cfg &_cfg, const VertexSet *const _candidates=nullptr) override
Definition: Syclop.cpp:86
size_t m_maxRegionUses
Definition: Syclop.h:295
virtual void AddEdge(const VID _source, const VID _target, const LPOutput &_lpOutput) override
As basic RRT, but also updates region edge connectivity information.
Definition: Syclop.cpp:142
const WorkspaceRegion * SelectRegion()
Select a region from a set of available regions.
Definition: Syclop.cpp:335
std::map< std::pair< const WorkspaceRegion *, const WorkspaceRegion * >, RegionPairData > m_regionPairData
Holds extra data associated with region pairs.
Definition: Syclop.h:279
double Cost(const WorkspaceRegion *const _r1, const WorkspaceRegion *const _r2)
Compute the edge weight in the region graph from _r1 to _r2.
Definition: Syclop.cpp:452
size_t m_maxLeadUses
Definition: Syclop.h:292
size_t m_currentRegionUses
Definition: Syclop.h:294
virtual VID Extend(const VID _nearVID, const Cfg &_qRand, LPOutput &_lp, const bool _requireNew=true) override
As basic RRT, but also logs extension attempts.
Definition: Syclop.cpp:96
Definition: WorkspaceDecomposition.h:24
RegionGraph::adj_edge_iterator adj_edge_iterator
Definition: WorkspaceDecomposition.h:40
Definition: WorkspacePortal.h:19
Definition: WorkspaceRegion.h:18
Definition: LPOutput.h:24
A visitor to track the parent-child relationships discovered during DFS.
Definition: Syclop.h:235
stapl::visitor_return visitor_return
Definition: Syclop.h:240
std::map< VID, VID > map_type
Definition: Syclop.h:241
DFSVisitor(map_type &_pm)
Definition: Syclop.h:253
virtual visitor_return tree_edge(graph_type::vertex_iterator _vit, graph_type::adj_edge_iterator _eit) override
Definition: Syclop.h:259
WorkspaceDecomposition graph_type
Definition: Syclop.h:239
map_type & m_parentMap
Definition: Syclop.h:247
Holds all external data related to a specific workspace region.
Definition: Syclop.h:121
size_t Coverage() const
Definition: Syclop.h:142
void UpdateAlpha()
Definition: Syclop.h:155
double weight
Relative probability of selecting this region from a lead.
Definition: Syclop.h:126
std::set< size_t > cells
Definition: Syclop.h:139
void AddCell(size_t _index)
Add a cell to this region's cell indexes and update alpha/weight.
Definition: Syclop.h:149
double freeVolume
The estimated free state-space volume of this region.
Definition: Syclop.h:132
void UpdateWeight()
Definition: Syclop.h:159
double alpha
The edge-weight coefficient for this region.
Definition: Syclop.h:129
VertexSet vertices
The VID's of the configurations in this region.
Definition: Syclop.h:137
size_t numTimesSelected
The number of times this region has been selected.
Definition: Syclop.h:135
Tracks data related to edges between regions in the decomposition graph.
Definition: Syclop.h:170
size_t Coverage() const
Get the coverage for this edge.
Definition: Syclop.h:176
size_t numLeadUses
Times this edge was used in a lead.
Definition: Syclop.h:181
void AddCell(size_t _index)
Definition: Syclop.h:173
size_t numAttempts
Attempted extensions across this edge.
Definition: Syclop.h:182
WorkspacePortal property_type
Definition: Syclop.h:200
double value_type
Definition: Syclop.h:201
value_type get(property_type &_p)
Definition: Syclop.h:220
void apply(property_type &_p, functor _f)
Definition: Syclop.h:225
void put(property_type &_p, value_type &_v)
Definition: Syclop.h:222
Syclop strategy_type
Definition: Syclop.h:202
strategy_type * m_syclop
Definition: Syclop.h:208
WeightFunctor(strategy_type *_s)
Definition: Syclop.h:214