Parasol Planning Library (PPL)
BasicRRTStrategy.h
Go to the documentation of this file.
1 #ifndef PMPL_BASIC_RRT_STRATEGY_H_
2 #define PMPL_BASIC_RRT_STRATEGY_H_
3 
6 #include "MPStrategyMethod.h"
7 #include "Utilities/XMLNode.h"
8 
9 // #include <iomanip>
10 // #include <iterator>
11 // #include <string>
12 // #include <unordered_set>
13 // #include <vector>
14 
15 
49 
50  public:
51 
54 
55  typedef size_t VID;
56  typedef typename std::unordered_set<VID> VertexSet;
57 
61 
63 
64  BasicRRTStrategy(XMLNode& _node);
65 
66  virtual ~BasicRRTStrategy();
67 
71 
72  virtual void Print(std::ostream& _os) const;
73 
75 
76  protected:
77 
80 
81  virtual void Initialize() override;
82  virtual void Iterate() override;
83 
87 
89  virtual Cfg SelectTarget();
90 
98  Cfg SelectDispersedTarget(const VID _v);
99 
103 
109  virtual VID FindNearestNeighbor(const Cfg& _cfg,
110  const VertexSet* const _candidates = nullptr);
111 
117  virtual Neighbor SelectNeighbor(const Cfg& _cfg,
118  const std::vector<Neighbor>& _neighbors);
119 
123 
132  virtual VID Extend(const VID _nearVID, const Cfg& _target,
133  LPOutput& _lp, const bool _requireNew = true);
134 
136  VID Extend(const VID _nearVID, const Cfg& _target,
137  const bool _requireNew = true);
138 
143  virtual std::pair<VID, bool> AddNode(const Cfg& _newCfg);
144 
149  virtual void AddEdge(const VID _source, const VID _target,
150  const LPOutput& _lpOutput);
151 
154  void ConnectNeighbors(const VID _newVID);
155 
160  void TryGoalExtension(const VID _newVID);
161 
167  void TryGoalExtension(const VID _newVID, const Boundary* const _boundary);
168 
172 
178  VID ExpandTree(const Cfg& _target);
179 
186  virtual VID ExpandTree(const VID _nearestVID, const Cfg& _target);
187 
191  void ConnectTrees(const VID _recentlyGrown);
192 
196 
197  std::string m_samplerLabel;
198  std::string m_nfLabel;
199  std::string m_ncLabel;
200  std::string m_exLabel;
201  std::string m_goalDmLabel;
202 
203  std::string m_fallbackNfLabel;
204 
208 
209  bool m_growGoals{false};
210  double m_growthFocus{0};
211  double m_goalThreshold{0};
212  size_t m_numDirections{1};
213  size_t m_disperseTrials{3};
214 
218 
219  std::vector<VertexSet> m_trees;
220 
222 
223 };
224 
225 #endif
Definition: BasicRRTStrategy.h:48
Cfg SelectDispersedTarget(const VID _v)
Definition: BasicRRTStrategy.cpp:229
virtual std::pair< VID, bool > AddNode(const Cfg &_newCfg)
Definition: BasicRRTStrategy.cpp:419
virtual void AddEdge(const VID _source, const VID _target, const LPOutput &_lpOutput)
Definition: BasicRRTStrategy.cpp:440
void TryGoalExtension(const VID _newVID)
Definition: BasicRRTStrategy.cpp:484
double m_goalThreshold
Distance threshold for goal extension.
Definition: BasicRRTStrategy.h:211
std::string m_fallbackNfLabel
NF for searching the active set, used if the main one fails.
Definition: BasicRRTStrategy.h:203
std::string m_nfLabel
The neighborhood finder label.
Definition: BasicRRTStrategy.h:198
std::string m_samplerLabel
The sampler label.
Definition: BasicRRTStrategy.h:197
virtual VID FindNearestNeighbor(const Cfg &_cfg, const VertexSet *const _candidates=nullptr)
Definition: BasicRRTStrategy.cpp:286
size_t m_numDirections
Expansion directions per iteration.
Definition: BasicRRTStrategy.h:212
size_t VID
Definition: BasicRRTStrategy.h:55
VID ExpandTree(const Cfg &_target)
Definition: BasicRRTStrategy.cpp:585
virtual void Iterate() override
Execute one iteration of the strategy.
Definition: BasicRRTStrategy.cpp:152
void ConnectTrees(const VID _recentlyGrown)
Definition: BasicRRTStrategy.cpp:634
bool m_growGoals
Grow trees from goals.
Definition: BasicRRTStrategy.h:209
virtual Neighbor SelectNeighbor(const Cfg &_cfg, const std::vector< Neighbor > &_neighbors)
Definition: BasicRRTStrategy.cpp:348
std::string m_ncLabel
The connector label (for RRG).
Definition: BasicRRTStrategy.h:199
virtual Cfg SelectTarget()
Get a random configuration to grow towards.
Definition: BasicRRTStrategy.cpp:173
std::string m_exLabel
The extender label.
Definition: BasicRRTStrategy.h:200
size_t m_disperseTrials
Sample attempts for disperse search.
Definition: BasicRRTStrategy.h:213
std::string m_goalDmLabel
Dm for checking goal extensions.
Definition: BasicRRTStrategy.h:201
BasicRRTStrategy()
Definition: BasicRRTStrategy.cpp:15
virtual void Print(std::ostream &_os) const
Definition: BasicRRTStrategy.cpp:76
virtual VID Extend(const VID _nearVID, const Cfg &_target, LPOutput &_lp, const bool _requireNew=true)
Definition: BasicRRTStrategy.cpp:357
std::unordered_set< VID > VertexSet
Definition: BasicRRTStrategy.h:56
virtual ~BasicRRTStrategy()
Definition: BasicRRTStrategy.cpp:70
void ConnectNeighbors(const VID _newVID)
Definition: BasicRRTStrategy.cpp:469
virtual void Initialize() override
Definition: BasicRRTStrategy.cpp:94
std::vector< VertexSet > m_trees
The current tree set.
Definition: BasicRRTStrategy.h:219
double m_growthFocus
The fraction of goal-biased expansions.
Definition: BasicRRTStrategy.h:210
Definition: Boundary.h:30
Definition: Cfg.h:38
Definition: MPStrategyMethod.h:33
Definition: XMLNode.h:27
Definition: LPOutput.h:24
Definition: Neighbors.h:13