|
|
| BasicRRTStrategy () |
|
| BasicRRTStrategy (XMLNode &_node) |
|
virtual | ~BasicRRTStrategy ()=default |
|
|
virtual void | Print (std::ostream &_os) const |
|
|
void | operator() () |
| Execute the strategy by calling Initialize, Run, and Finalize.
|
|
void | EnableOutputFiles (const bool _enable=true) |
|
|
const std::string & | GetName () const |
| Get the class name for this object.
|
|
const std::string & | GetLabel () const |
| Get the unique label for this object.
|
|
std::string | GetNameAndLabel () const |
| Get the unique string identifier for this object "m_name::m_label".
|
|
void | SetLabel (const std::string &) |
| Set the unique label for this object.
|
|
|
void | SetMPLibrary (MPLibrary *) noexcept |
| Set the owning MPLibrary.
|
|
MPLibrary * | GetMPLibrary () const noexcept |
| Get the owning MPLibrary.
|
|
bool | IsRunning () const noexcept |
| Check the library's running flag.
|
|
DistanceMetricPointer | GetDistanceMetric (const std::string &) const noexcept |
| Get a distance metric by label from the owning MPLibrary.
|
|
ValidityCheckerPointer | GetValidityChecker (const std::string &) const noexcept |
| Get a validity checker by label from the owning MPLibrary.
|
|
NeighborhoodFinderPointer | GetNeighborhoodFinder (const std::string &) const noexcept |
| Get a neighborhood finder by label from the owning MPLibrary.
|
|
SamplerPointer | GetSampler (const std::string &) const noexcept |
| Get a sampler by label from the owning MPLibrary.
|
|
LocalPlannerPointer | GetLocalPlanner (const std::string &) const noexcept |
| Get a local planner by label from the owning MPLibrary.
|
|
ExtenderPointer | GetExtender (const std::string &) const noexcept |
| Get an extender by label from the owning MPLibrary.
|
|
PathModifierPointer | GetPathModifier (const std::string &) const noexcept |
| Get a path modifier by label from the owning MPLibrary.
|
|
ConnectorPointer | GetConnector (const std::string &) const noexcept |
| Get a connector by label from the owning MPLibrary.
|
|
MetricPointer | GetMetric (const std::string &) const noexcept |
| Get a metric by label from the owning MPLibrary.
|
|
MapEvaluatorPointer | GetMapEvaluator (const std::string &) const noexcept |
| Get a map evaluator by label from the owning MPLibrary.
|
|
MPStrategyPointer | GetMPStrategy (const std::string &) const noexcept |
| Get a strategy by label from the owning MPLibrary.
|
|
MPTraits::MPTools * | GetMPTools () const noexcept |
| Get the MPTools container from the owning MPLibrary.
|
|
|
MPProblem * | GetMPProblem () const noexcept |
| Get the library's current MPProblem.
|
|
Environment * | GetEnvironment () const noexcept |
| Get the current environment.
|
|
MPTask * | GetTask () const noexcept |
| Get the current task.
|
|
GroupTask * | GetGroupTask () const noexcept |
| Get the current group task.
|
|
|
MPSolution * | GetMPSolution () const noexcept |
|
RoadmapType * | GetRoadmap (Robot *const _r=nullptr) const noexcept |
| Get the current free-space roadmap.
|
|
GroupRoadmapType * | GetGroupRoadmap (RobotGroup *const _g=nullptr) const noexcept |
| Get the current free-space group roadmap.
|
|
RoadmapType * | GetBlockRoadmap (Robot *const _r=nullptr) const noexcept |
| Get the current obstacle-space roadmap.
|
|
Path * | GetPath (Robot *const _r=nullptr) const noexcept |
| Get the current best path.
|
|
GroupPath * | GetGroupPath (RobotGroup *const _g=nullptr) const noexcept |
| Get the current best group path.
|
|
StatClass * | GetStatClass () const noexcept |
| Get the current StatClass.
|
|
LocalObstacleMap * | GetLocalObstacleMap () const noexcept |
| Get the local obstacle map.
|
|
GoalTracker * | GetGoalTracker () const noexcept |
| Get the goal tracker.
|
|
|
|
typedef MPTraits::CfgType | CfgType |
|
typedef MPTraits::WeightType | WeightType |
|
typedef MPTraits::RoadmapType | RoadmapType |
|
typedef RoadmapType::VID | VID |
|
typedef RoadmapType::VertexSet | VertexSet |
|
|
typedef MPTraits::GroupRoadmapType | GroupRoadmapType |
|
typedef MPTraits::LocalObstacleMap | LocalObstacleMap |
|
typedef MPTraits::Path | Path |
|
typedef MPTraits::GroupPathType | GroupPath |
|
typedef MPTraits::MPLibrary | MPLibrary |
|
typedef MPTraits::MPSolution | MPSolution |
|
typedef MPTraits::GoalTracker | GoalTracker |
|
typedef MPLibrary::SamplerPointer | SamplerPointer |
|
typedef MPLibrary::LocalPlannerPointer | LocalPlannerPointer |
|
typedef MPLibrary::ExtenderPointer | ExtenderPointer |
|
typedef MPLibrary::PathModifierPointer | PathModifierPointer |
|
typedef MPLibrary::ConnectorPointer | ConnectorPointer |
|
typedef MPLibrary::MetricPointer | MetricPointer |
|
typedef MPLibrary::MapEvaluatorPointer | MapEvaluatorPointer |
|
typedef MPLibrary::MPStrategyPointer | MPStrategyPointer |
|
typedef MPLibrary::DistanceMetricPointer | DistanceMetricPointer |
|
typedef MPLibrary::ValidityCheckerPointer | ValidityCheckerPointer |
|
typedef MPLibrary::NeighborhoodFinderPointer | NeighborhoodFinderPointer |
|
|
void | SetName (const std::string &_s) |
|
const std::string & | GetBaseFilename () const |
|
|
virtual void | Initialize () override |
|
virtual void | Iterate () override |
| Execute one iteration of the strategy. More...
|
|
|
virtual CfgType | SelectTarget () |
| Get a random configuration to grow towards.
|
|
CfgType | SelectDispersedTarget (const VID _v) |
|
|
virtual VID | FindNearestNeighbor (const CfgType &_cfg, const VertexSet *const _candidates=nullptr) |
|
virtual Neighbor | SelectNeighbor (const CfgType &_cfg, const std::vector< Neighbor > &_neighbors) |
|
|
virtual VID | Extend (const VID _nearVID, const CfgType &_target, LPOutput< MPTraits > &_lp, const bool _requireNew=true) |
|
VID | Extend (const VID _nearVID, const CfgType &_target, const bool _requireNew=true) |
|
virtual std::pair< VID, bool > | AddNode (const CfgType &_newCfg) |
|
virtual void | AddEdge (const VID _source, const VID _target, const LPOutput< MPTraits > &_lpOutput) |
|
void | ConnectNeighbors (const VID _newVID) |
|
void | TryGoalExtension (const VID _newVID) |
|
void | TryGoalExtension (const VID _newVID, const Boundary *const _boundary) |
|
|
VID | ExpandTree (const CfgType &_target) |
|
virtual VID | ExpandTree (const VID _nearestVID, const CfgType &_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.
|
|
virtual void | Finalize () |
| Clean-up and output results. More...
|
|
virtual void | ClearRoadmap () |
| Pre-clear the roadmap(s) if requested.
|
|
|
virtual size_t | GenerateStart (const std::string &_samplerLabel="") |
|
virtual std::vector< size_t > | GenerateGoals (const std::string &_samplerLabel="") |
|
|
bool | m_debug |
| Print debug info?
|
|
|
std::string | m_samplerLabel |
| The sampler label.
|
|
std::string | m_nfLabel |
| The neighborhood finder label.
|
|
std::string | m_ncLabel |
| The connector label (for RRG).
|
|
std::string | m_exLabel |
| The extender label.
|
|
std::string | m_goalDmLabel |
| Dm for checking goal extensions.
|
|
std::string | m_fallbackNfLabel |
| NF for searching the active set, used if the main one fails.
|
|
|
bool | m_growGoals {false} |
| Grow trees from goals.
|
|
double | m_growthFocus {0} |
| The fraction of goal-biased expansions.
|
|
double | m_goalThreshold {0} |
| Distance threshold for goal extension.
|
|
size_t | m_numDirections {1} |
| Expansion directions per iteration.
|
|
size_t | m_disperseTrials {3} |
| Sample attempts for disperse search.
|
|
|
std::vector< VertexSet > | m_trees |
| The current tree set.
|
|
|
std::string | m_querySampler |
| Sampler for generating start/goal.
|
|
std::vector< std::string > | m_meLabels |
| The list of map evaluators to use.
|
|
size_t | m_iterations {0} |
| The number of executed iterations.
|
|
bool | m_writeOutput {true} |
| Write output at the end?
|
|
bool | m_clearMap {false} |
| Clear the roadmap(s) before run?
|
|
template<typename
MPTraits>
class BasicRRTStrategy< MPTraits >
The RRT algorithm grows one or more trees from a set of root nodes to solve a single-query planning problem.
References: Original RRT: LaValle, Steven M. "Rapidly-Exploring Random Trees: A New Tool for Path
Planning." TR 98-11, Computer Science Dept., Iowa State Univ., 1998. RRT Connect (bi-directional): James Kuffner and Steven LaValle. "RRT-Connect: An Efficient Approach to
Single-Query Path Planning". ICRA 2000. Nonholonomic RRT: Steven LaValle and James Kuffner. "Randomized Kinodynamic Planning." IJRR 2001.
This method supports both uni-directional and bi-directional variants. Nonholonomic problems are supported with the appropriate extender and uni-directional growth.
For uni-directional methods, we support an additional 'goal extension' heuristic which attempts to connect configurations near the goal to the goal region. This is necessary to get RRT to terminate - the alternative is to rely on goal-biased sampling to eventually complete the problem, which is not an efficient solution.
For bi-directional methods, the algorithm will attempt to connect trees after each successful extension. The new node will be extended toward the nearest neighbor in each other tree. If the extension reaches its destination, the two trees will merge.