![]() |
Parasol Planning Library (PPL)
|
#include <AdaptiveRRT.h>
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, GrowthSet > | GrowthSets |
typedef MPBaseObject::WeightType | WeightType |
typedef MPBaseObject::RoadmapType | RoadmapType |
typedef RoadmapType::VID | VID |
![]() | |
typedef size_t | VID |
typedef std::unordered_set< VID > | VertexSet |
![]() | |
typedef size_t | VID |
![]() | |
typedef DefaultWeight< Cfg > | WeightType |
typedef GenericStateGraph< Cfg, WeightType > | RoadmapType |
typedef GroupCfg< RoadmapType > | GroupCfgType |
typedef GroupLocalPlan< RoadmapType > | GroupWeightType |
typedef GroupRoadmap< GroupCfgType, GroupWeightType > | GroupRoadmapType |
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 |
![]() | |
BasicRRTStrategy () | |
BasicRRTStrategy (XMLNode &_node) | |
virtual | ~BasicRRTStrategy () |
![]() | |
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 () |
![]() | |
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... | |
MPLibrary * | GetMPLibrary () const noexcept |
Get the owning MPLibrary. More... | |
bool | IsRunning () const noexcept |
Check the library's running flag. More... | |
MPProblem * | GetMPProblem () const noexcept |
Get the library's current MPProblem. More... | |
Environment * | GetEnvironment () const noexcept |
Get the current environment. More... | |
MPTask * | GetTask () const noexcept |
Get the current task. More... | |
GroupTask * | GetGroupTask () const noexcept |
Get the current group task. More... | |
MPSolutionType * | GetMPSolution () const noexcept |
RoadmapType * | GetRoadmap (Robot *const _r=nullptr) const noexcept |
Get the current free-space roadmap. More... | |
GroupRoadmapType * | GetGroupRoadmap (RobotGroup *const _g=nullptr) const noexcept |
Get the current free-space group roadmap. More... | |
RoadmapType * | GetBlockRoadmap (Robot *const _r=nullptr) const noexcept |
Get the current obstacle-space roadmap. More... | |
Path * | GetPath (Robot *const _r=nullptr) const noexcept |
GroupPath * | GetGroupPath (RobotGroup *const _g=nullptr) const noexcept |
Get the current best group path. More... | |
StatClass * | GetStatClass () const noexcept |
Get the current StatClass. More... | |
LocalObstacleMap * | GetLocalObstacleMap () 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) |
![]() | |
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) |
![]() | |
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="") |
![]() | |
void | SetName (const std::string &_s) |
const std::string & | GetBaseFilename () const |
Additional Inherited Members | |
![]() | |
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< VertexSet > | m_trees |
The current tree set. More... | |
![]() | |
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... | |
![]() | |
bool | m_debug |
Print debug info? More... | |
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.
typedef std::map<std::string, std::pair<std::pair<double, long>, double> > AdaptiveRRT::GrowthSet |
typedef std::map<double, GrowthSet> AdaptiveRRT::GrowthSets |
typedef RoadmapType::VID AdaptiveRRT::VID |
AdaptiveRRT::AdaptiveRRT | ( | double | _wallPenalty = 0.5 , |
double | _gamma = 0.5 , |
||
const GrowthSets & | _growthSets = GrowthSets() , |
||
CostMethod | _c = FIXED |
||
) |
@ Construction
AdaptiveRRT::AdaptiveRRT | ( | XMLNode & | _node | ) |
|
virtualdefault |
|
protected |
Adds node to tree and updates visibility
_newCfg | New configuration to add to tree |
_nearVID | Vertex ID of nearest tree configuration |
_againstWall | Bool flag indicating if _newCfg is against a wall. |
_ratio | Reward ratio |
|
protectedvirtual |
Expand tree in the direction of a given configuration
_dir | Direction of random configuration |
|
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.
Reimplemented from BasicRRTStrategy.
|
virtual |
Print internal state of this object.
_os | The std::ostream to print to. |
Reimplemented from BasicRRTStrategy.
|
protected |
Update weight of growth method given a reward value
_r | Reward value |
_s | String indicator for growth method |
_gs | The growth set containing the growth method we want to access |
|
protected |
Select growth method from a set of growth methods
_gs | The growth set containing the growth method we want to access |
|
protected |
Update average cost of growth method
_cost | Average cost used to update cost of growth method |
_s | String indicator for growth method |
_gs | The growth set containing the growth method we want to access |
|
protected |
Updates tree based on expansion type
_nearest | Vertex ID of nearest configuration |
_new | New configuration to be added to tree |
_dir | Direction of random configuration |
_delta | Expansion distance between _nearest and _new |