Parasol Planning Library (PPL)
Data Structures | Protected Member Functions
Syclop Class Reference

#include <Syclop.h>

Inheritance diagram for Syclop:
Inheritance graph
[legend]
Collaboration diagram for Syclop:
Collaboration graph
[legend]

Data Structures

struct  DFSVisitor
 A visitor to track the parent-child relationships discovered during DFS. More...
 
struct  RegionData
 Holds all external data related to a specific workspace region. More...
 
struct  RegionPairData
 Tracks data related to edges between regions in the decomposition graph. More...
 
struct  WeightFunctor
 

Public Types

Motion Planning Types
typedef MPBaseObject::WeightType WeightType
 
typedef MPBaseObject::RoadmapType RoadmapType
 
typedef RoadmapType::VID VID
 
Local Types
typedef std::unordered_set< VIDVertexSet
 
- Public Types inherited from BasicRRTStrategy
typedef size_t VID
 
typedef std::unordered_set< VIDVertexSet
 
- Public Types inherited from MPStrategyMethod
typedef size_t VID
 
- Public Types inherited from MPBaseObject
typedef DefaultWeight< CfgWeightType
 
typedef GenericStateGraph< Cfg, WeightTypeRoadmapType
 
typedef GroupCfg< RoadmapTypeGroupCfgType
 
typedef GroupLocalPlan< RoadmapTypeGroupWeightType
 
typedef GroupRoadmap< GroupCfgType, GroupWeightTypeGroupRoadmapType
 

Public Member Functions

Construction
 Syclop ()
 
 Syclop (XMLNode &_node)
 
virtual ~Syclop ()=default
 
- Public Member Functions inherited from BasicRRTStrategy
 BasicRRTStrategy ()
 
 BasicRRTStrategy (XMLNode &_node)
 
virtual ~BasicRRTStrategy ()
 
virtual void Print (std::ostream &_os) const
 
- Public Member Functions inherited from MPStrategyMethod
 MPStrategyMethod ()=default
 
 MPStrategyMethod (XMLNode &_node)
 
virtual ~MPStrategyMethod ()
 
void operator() ()
 Execute the strategy by calling Initialize, Run, and Finalize. More...
 
void EnableOutputFiles (const bool _enable=true)
 
virtual void Initialize ()
 
- Public Member Functions inherited from MPBaseObject
 MPBaseObject (const std::string &_label="", const std::string &_name="", bool _debug=false)
 
 MPBaseObject (XMLNode &_node)
 
virtual ~MPBaseObject ()
 
const std::string & GetName () const
 Get the class name for this object. More...
 
const std::string & GetLabel () const
 Get the unique label for this object. More...
 
std::string GetNameAndLabel () const
 Get the unique string identifier for this object "m_name::m_label". More...
 
void SetLabel (const std::string &)
 Set the unique label for this object. More...
 
void SetMPLibrary (MPLibrary *) noexcept
 Set the owning MPLibrary. More...
 
MPLibraryGetMPLibrary () const noexcept
 Get the owning MPLibrary. More...
 
bool IsRunning () const noexcept
 Check the library's running flag. More...
 
MPProblemGetMPProblem () const noexcept
 Get the library's current MPProblem. More...
 
EnvironmentGetEnvironment () const noexcept
 Get the current environment. More...
 
MPTaskGetTask () const noexcept
 Get the current task. More...
 
GroupTaskGetGroupTask () const noexcept
 Get the current group task. More...
 
MPSolutionTypeGetMPSolution () const noexcept
 
RoadmapTypeGetRoadmap (Robot *const _r=nullptr) const noexcept
 Get the current free-space roadmap. More...
 
GroupRoadmapTypeGetGroupRoadmap (RobotGroup *const _g=nullptr) const noexcept
 Get the current free-space group roadmap. More...
 
RoadmapTypeGetBlockRoadmap (Robot *const _r=nullptr) const noexcept
 Get the current obstacle-space roadmap. More...
 
PathGetPath (Robot *const _r=nullptr) const noexcept
 
GroupPathGetGroupPath (RobotGroup *const _g=nullptr) const noexcept
 Get the current best group path. More...
 
StatClassGetStatClass () const noexcept
 Get the current StatClass. More...
 
LocalObstacleMapGetLocalObstacleMap () const noexcept
 Get the local obstacle map. More...
 

Protected Member Functions

size_t Sel (const WorkspaceRegion *const _r1, const WorkspaceRegion *const _r2)
 
size_t Conn (const WorkspaceRegion *const _r1, const WorkspaceRegion *const _r2)
 Estimate the progress made in connecting _r1 to _r2. More...
 
double Cost (const WorkspaceRegion *const _r1, const WorkspaceRegion *const _r2)
 Compute the edge weight in the region graph from _r1 to _r2. More...
 
double Cost (const WorkspacePortal &_p)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
MPStrategy Overrides
virtual void Initialize () override
 
BasicRRTStrategy Overrides
virtual VID FindNearestNeighbor (const Cfg &_cfg, const VertexSet *const _candidates=nullptr) override
 
virtual VID Extend (const VID _nearVID, const Cfg &_qRand, LPOutput &_lp, const bool _requireNew=true) override
 As basic RRT, but also logs extension attempts. More...
 
virtual std::pair< VID, bool > AddNode (const Cfg &_newCfg) override
 As basic RRT, but also updates coverage information. More...
 
virtual void AddEdge (const VID _source, const VID _target, const LPOutput &_lpOutput) override
 As basic RRT, but also updates region edge connectivity information. More...
 
Syclop Functions
std::vector< VIDDiscreteLead ()
 Compute a high-level plan (a sequence of regions). More...
 
void FindAvailableRegions (std::vector< VID > _lead)
 Compute a set of potential regions from the discrete lead. More...
 
const WorkspaceRegionSelectRegion ()
 Select a region from a set of available regions. More...
 
Pre-processing Stuff
void ComputeFreeVolumes ()
 Estimate the free volume of each region. More...
 
- Protected Member Functions inherited from BasicRRTStrategy
virtual void Iterate () override
 Execute one iteration of the strategy. More...
 
virtual Cfg SelectTarget ()
 Get a random configuration to grow towards. More...
 
Cfg SelectDispersedTarget (const VID _v)
 
virtual Neighbor SelectNeighbor (const Cfg &_cfg, const std::vector< Neighbor > &_neighbors)
 
VID Extend (const VID _nearVID, const Cfg &_target, const bool _requireNew=true)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
void ConnectNeighbors (const VID _newVID)
 
void TryGoalExtension (const VID _newVID)
 
void TryGoalExtension (const VID _newVID, const Boundary *const _boundary)
 
VID ExpandTree (const Cfg &_target)
 
virtual VID ExpandTree (const VID _nearestVID, const Cfg &_target)
 
void ConnectTrees (const VID _recentlyGrown)
 
- Protected Member Functions inherited from MPStrategyMethod
virtual void Run ()
 Call Iterate until EvaluateMap is true. More...
 
virtual bool EvaluateMap ()
 Check if we satisfied all map evaluators. More...
 
virtual void Finalize ()
 Clean-up and output results. More...
 
virtual void ClearRoadmap ()
 Pre-clear the roadmap(s) if requested. More...
 
virtual size_t GenerateStart (const std::string &_samplerLabel="")
 
virtual std::vector< size_t > GenerateGoals (const std::string &_samplerLabel="")
 
- Protected Member Functions inherited from MPBaseObject
void SetName (const std::string &_s)
 
const std::string & GetBaseFilename () const
 

Protected Attributes

Syclop State
std::map< const WorkspaceRegion *, RegionDatam_regionData
 Holds extra data associated with the regions. More...
 
std::map< std::pair< const WorkspaceRegion *, const WorkspaceRegion * >, RegionPairDatam_regionPairData
 Holds extra data associated with region pairs. More...
 
std::string m_tmLabel
 The topological map label. More...
 
std::set< const WorkspaceRegion * > m_availableRegions
 The currently available regions. More...
 
Switch Tracking

Data for knowing when to change regions/leads.

size_t m_currentLeadUses {0}
 
size_t m_maxLeadUses {6}
 
size_t m_currentRegionUses {0}
 
size_t m_maxRegionUses {6}
 
std::string m_freeVolumeSampler {"UniformRandom"}
 
std::string m_freeVolumeVcLabel {"pqp_solid"}
 
const WorkspaceRegionm_currentRegion {nullptr}
 
bool m_improvement {false}
 Have we improved the map w/ current region? More...
 
- Protected Attributes inherited from BasicRRTStrategy
std::string m_samplerLabel
 The sampler label. More...
 
std::string m_nfLabel
 The neighborhood finder label. More...
 
std::string m_ncLabel
 The connector label (for RRG). More...
 
std::string m_exLabel
 The extender label. More...
 
std::string m_goalDmLabel
 Dm for checking goal extensions. More...
 
std::string m_fallbackNfLabel
 NF for searching the active set, used if the main one fails. More...
 
bool m_growGoals {false}
 Grow trees from goals. More...
 
double m_growthFocus {0}
 The fraction of goal-biased expansions. More...
 
double m_goalThreshold {0}
 Distance threshold for goal extension. More...
 
size_t m_numDirections {1}
 Expansion directions per iteration. More...
 
size_t m_disperseTrials {3}
 Sample attempts for disperse search. More...
 
std::vector< VertexSetm_trees
 The current tree set. More...
 
- Protected Attributes inherited from MPStrategyMethod
std::string m_querySampler
 Sampler for generating start/goal. More...
 
std::vector< std::string > m_meLabels
 The list of map evaluators to use. More...
 
size_t m_iterations {0}
 The number of executed iterations. More...
 
bool m_writeOutput {true}
 Write output at the end? More...
 
bool m_clearMap {false}
 Clear the roadmap(s) before run? More...
 
- Protected Attributes inherited from MPBaseObject
bool m_debug
 Print debug info? More...
 

Detailed Description

This method is the 'Synergistic Combination of Layers of Planning' technique that adds workspace guidance to RRT methods.

Reference: Erion Plaku, Lydia E. Kavraki, Moshe Y. Vardi. "Synergistic Combination of Layers of Planning". IEEE Transactions on Robotics. 2010.

Warning
This method doesn't support bi-directional growth.

Member Typedef Documentation

◆ RoadmapType

◆ VertexSet

typedef std::unordered_set<VID> BasicRRTStrategy::VertexSet

◆ VID

◆ WeightType

Constructor & Destructor Documentation

◆ Syclop() [1/2]

Syclop::Syclop ( )

◆ Syclop() [2/2]

Syclop::Syclop ( XMLNode _node)

◆ ~Syclop()

virtual Syclop::~Syclop ( )
virtualdefault

Member Function Documentation

◆ AddEdge()

void Syclop::AddEdge ( const VID  _source,
const VID  _target,
const LPOutput _lpOutput 
)
overrideprotectedvirtual

As basic RRT, but also updates region edge connectivity information.

Reimplemented from BasicRRTStrategy.

◆ AddNode()

std::pair< typename Syclop::VID, bool > Syclop::AddNode ( const Cfg _newCfg)
overrideprotectedvirtual

As basic RRT, but also updates coverage information.

Reimplemented from BasicRRTStrategy.

◆ ComputeFreeVolumes()

void Syclop::ComputeFreeVolumes ( )
protected

Estimate the free volume of each region.

Todo:
Remove dependence on magic XML values.
See also
Formula taken from reference: http://mathworld.wolfram.com/Tetrahedron.html

◆ Conn()

size_t Syclop::Conn ( const WorkspaceRegion *const  _r1,
const WorkspaceRegion *const  _r2 
)
protected

Estimate the progress made in connecting _r1 to _r2.

◆ Cost() [1/2]

double Syclop::Cost ( const WorkspacePortal _p)
protected

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

◆ Cost() [2/2]

double Syclop::Cost ( const WorkspaceRegion *const  _r1,
const WorkspaceRegion *const  _r2 
)
protected

Compute the edge weight in the region graph from _r1 to _r2.

◆ DiscreteLead()

std::vector< typename Syclop::VID > Syclop::DiscreteLead ( )
protected

Compute a high-level plan (a sequence of regions).

◆ Extend()

Syclop::VID Syclop::Extend ( const VID  _nearVID,
const Cfg _qRand,
LPOutput _lp,
const bool  _requireNew = true 
)
overrideprotectedvirtual

As basic RRT, but also logs extension attempts.

Reimplemented from BasicRRTStrategy.

◆ FindAvailableRegions()

void Syclop::FindAvailableRegions ( std::vector< VID _lead)
protected

Compute a set of potential regions from the discrete lead.

◆ FindNearestNeighbor()

Syclop::VID Syclop::FindNearestNeighbor ( const Cfg _cfg,
const VertexSet *const  _candidates = nullptr 
)
overrideprotectedvirtual

As basic RRT, but picks nearest neighbor from only the available regions.

Reimplemented from BasicRRTStrategy.

◆ Initialize()

void Syclop::Initialize ( )
overrideprotectedvirtual

Initialize this object for the current MPProblem. This should reset any internal state of the algorithms so that they are ready for execution. It is also the place to initialize any state that depends on the current problem.

Warning
This member will be called for every compiled algorithm in the planning library - even those that will not be used. If an algorithm needs to do expenisve setup, then this method should only set a flag that tells it to do so on first use. The only exceptions are the MPStrategies, which will only have their initialize called on first use.

Reimplemented from BasicRRTStrategy.

◆ Sel()

size_t Syclop::Sel ( const WorkspaceRegion *const  _r1,
const WorkspaceRegion *const  _r2 
)
protected

Count the number of times that _r1 and _r2 have been selected as part of a discrete lead.

◆ SelectRegion()

const WorkspaceRegion * Syclop::SelectRegion ( )
protected

Select a region from a set of available regions.

Field Documentation

◆ m_availableRegions

std::set<const WorkspaceRegion*> Syclop::m_availableRegions
protected

The currently available regions.

◆ m_currentLeadUses

size_t Syclop::m_currentLeadUses {0}
protected

◆ m_currentRegion

const WorkspaceRegion* Syclop::m_currentRegion {nullptr}
protected

◆ m_currentRegionUses

size_t Syclop::m_currentRegionUses {0}
protected

◆ m_freeVolumeSampler

std::string Syclop::m_freeVolumeSampler {"UniformRandom"}
protected

◆ m_freeVolumeVcLabel

std::string Syclop::m_freeVolumeVcLabel {"pqp_solid"}
protected

◆ m_improvement

bool Syclop::m_improvement {false}
protected

Have we improved the map w/ current region?

◆ m_maxLeadUses

size_t Syclop::m_maxLeadUses {6}
protected

◆ m_maxRegionUses

size_t Syclop::m_maxRegionUses {6}
protected

◆ m_regionData

std::map<const WorkspaceRegion*, RegionData> Syclop::m_regionData
protected

Holds extra data associated with the regions.

◆ m_regionPairData

std::map<std::pair<const WorkspaceRegion*, const WorkspaceRegion*>, RegionPairData> Syclop::m_regionPairData
protected

Holds extra data associated with region pairs.

◆ m_tmLabel

std::string Syclop::m_tmLabel
protected

The topological map label.


The documentation for this class was generated from the following files: