Parasol Planning Library (PPL)
AdaptiveRRT Class Reference

#include <AdaptiveRRT.h>

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

Public Types

Local Types
enum  CostMethod { FIXED , REWARD , CYCLES }
 
Motion Planning Types
typedef std::map< std::string, std::pair< std::pair< double, long >, double > > GrowthSet
 
typedef std::map< double, GrowthSetGrowthSets
 
typedef MPBaseObject::WeightType WeightType
 
typedef MPBaseObject::RoadmapType RoadmapType
 
typedef RoadmapType::VID VID
 
- 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

 AdaptiveRRT (double _wallPenalty=0.5, double _gamma=0.5, const GrowthSets &_growthSets=GrowthSets(), CostMethod _c=FIXED)
 
 AdaptiveRRT (XMLNode &_node)
 
virtual ~AdaptiveRRT ()=default
 
MPBaseObject Overrides
virtual void Print (std::ostream &_os) const
 
- Public Member Functions inherited from BasicRRTStrategy
 BasicRRTStrategy ()
 
 BasicRRTStrategy (XMLNode &_node)
 
virtual ~BasicRRTStrategy ()
 
- 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

MPStrategy Overrides
virtual void Initialize () override
 
Tree Helpers
virtual VID ExpandTree (Cfg &_dir)
 
std::string SelectGrowthMethod (GrowthSet &_gs)
 
void UpdateCost (double _cost, std::string _s, GrowthSet &_gs)
 
void RewardGrowthMethod (double _r, std::string _s, GrowthSet &_gs)
 
VID UpdateTree (VID _nearest, Cfg &_new, Cfg &_dir, double _delta)
 
VID AddNode (Cfg &_newCfg, VID _nearVID, bool _againstWall, double _ratio)
 
- 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 VID FindNearestNeighbor (const Cfg &_cfg, const VertexSet *const _candidates=nullptr)
 
virtual Neighbor SelectNeighbor (const Cfg &_cfg, const std::vector< Neighbor > &_neighbors)
 
virtual VID Extend (const VID _nearVID, const Cfg &_target, LPOutput &_lp, const bool _requireNew=true)
 
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...
 
virtual std::pair< VID, bool > AddNode (const Cfg &_newCfg)
 
virtual void AddEdge (const VID _source, const VID _target, const LPOutput &_lpOutput)
 
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
 

Additional Inherited Members

- 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

Adaptively selects growth methods in RRT.

References: Denny, Jory, et al. "Adapting RRT growth for heterogeneous environments." 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE, 2013.

AdaptiveRRT employs structural filtering to the RRT paradigm by providing a two-level cost-adaptive strategy to select the RRT growth method. First, it uses the "visibility" of a node the method selects a set of RRT methods to choose from based on some probability distribution. This probability distribution is updated based upon the success/fail of the growth and its cost.

Member Typedef Documentation

◆ GrowthSet

typedef std::map<std::string, std::pair<std::pair<double, long>, double> > AdaptiveRRT::GrowthSet

◆ GrowthSets

typedef std::map<double, GrowthSet> AdaptiveRRT::GrowthSets

◆ RoadmapType

◆ VID

◆ WeightType

Member Enumeration Documentation

◆ CostMethod

Enumerator
FIXED 
REWARD 
CYCLES 

Constructor & Destructor Documentation

◆ AdaptiveRRT() [1/2]

AdaptiveRRT::AdaptiveRRT ( double  _wallPenalty = 0.5,
double  _gamma = 0.5,
const GrowthSets _growthSets = GrowthSets(),
CostMethod  _c = FIXED 
)

@ Construction

◆ AdaptiveRRT() [2/2]

AdaptiveRRT::AdaptiveRRT ( XMLNode _node)

◆ ~AdaptiveRRT()

virtual AdaptiveRRT::~AdaptiveRRT ( )
virtualdefault

Member Function Documentation

◆ AddNode()

AdaptiveRRT::VID AdaptiveRRT::AddNode ( Cfg _newCfg,
VID  _nearVID,
bool  _againstWall,
double  _ratio 
)
protected

Adds node to tree and updates visibility

Parameters
_newCfgNew configuration to add to tree
_nearVIDVertex ID of nearest tree configuration
_againstWallBool flag indicating if _newCfg is against a wall.
_ratioReward ratio
Returns
The VID of the configuration that was added to the tree

◆ ExpandTree()

AdaptiveRRT::VID AdaptiveRRT::ExpandTree ( Cfg _dir)
protectedvirtual

Expand tree in the direction of a given configuration

Parameters
_dirDirection of random configuration
Returns
VID of newly created Cfg if successful, otherwise INVALID_VID

◆ Initialize()

void AdaptiveRRT::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.

◆ Print()

void AdaptiveRRT::Print ( std::ostream &  _os) const
virtual

Print internal state of this object.

Parameters
_osThe std::ostream to print to.

Reimplemented from BasicRRTStrategy.

◆ RewardGrowthMethod()

void AdaptiveRRT::RewardGrowthMethod ( double  _r,
std::string  _s,
GrowthSet _gs 
)
protected

Update weight of growth method given a reward value

Parameters
_rReward value
_sString indicator for growth method
_gsThe growth set containing the growth method we want to access

◆ SelectGrowthMethod()

std::string AdaptiveRRT::SelectGrowthMethod ( GrowthSet _gs)
protected

Select growth method from a set of growth methods

Parameters
_gsThe growth set containing the growth method we want to access
Returns
The string indicator for the chosen growth method

◆ UpdateCost()

void AdaptiveRRT::UpdateCost ( double  _cost,
std::string  _s,
GrowthSet _gs 
)
protected

Update average cost of growth method

Parameters
_costAverage cost used to update cost of growth method
_sString indicator for growth method
_gsThe growth set containing the growth method we want to access

◆ UpdateTree()

AdaptiveRRT::VID AdaptiveRRT::UpdateTree ( VID  _nearest,
Cfg _new,
Cfg _dir,
double  _delta 
)
protected

Updates tree based on expansion type

Parameters
_nearestVertex ID of nearest configuration
_newNew configuration to be added to tree
_dirDirection of random configuration
_deltaExpansion distance between _nearest and _new
Returns
The VID of the newly added configuration

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