ompl::geometric::BITstar::ImplicitGraph Class Reference

A conceptual representation of samples as an edge-implicit random geometric graph. More...

#include <ompl/geometric/planners/informedtrees/bitstar/ImplicitGraph.h>

Public Member Functions

 ImplicitGraph (NameFunc nameFunc)
 Construct an implicit graph.
 
virtual ~ImplicitGraph ()=default
 Destruct the graph using default destruction.
 
void setup (const ompl::base::SpaceInformationPtr &spaceInformation, const ompl::base::ProblemDefinitionPtr &problemDefinition, CostHelper *costHelper, SearchQueue *searchQueue, const ompl::base::Planner *plannerPtr, ompl::base::PlannerInputStates &inputStates)
 Setup the ImplicitGraph, must be called before use. Does not take a copy of the PlannerInputStates, but checks it for starts/goals.
 
void reset ()
 Reset the graph to the state of construction.
 
bool hasAStart () const
 Gets whether the graph contains a start or not.
 
bool hasAGoal () const
 Gets whether the graph contains a goal or not.
 
VertexPtrVector::const_iterator startVerticesBeginConst () const
 Returns a const-iterator to the front of the start-vertex vector.
 
VertexPtrVector::const_iterator startVerticesEndConst () const
 Returns a const-iterator to the end of the start-vertex vector.
 
VertexPtrVector::const_iterator goalVerticesBeginConst () const
 Returns a const-iterator to the front of the goal-vertex vector.
 
VertexPtrVector::const_iterator goalVerticesEndConst () const
 Returns a const-iterator to the end of the goal-vertex vector.
 
ompl::base::Cost minCost () const
 Get the minimum cost solution possible for this problem.
 
bool hasInformedMeasure () const
 Query whether the underlying state sampler can provide an informed measure.
 
double getInformedMeasure (const ompl::base::Cost &cost) const
 Query the underlying state sampler for the informed measure of the problem.
 
double distance (const VertexConstPtr &a, const VertexConstPtr &b) const
 Computes the distance between two states.
 
double distance (const VertexConstPtrPair &vertices) const
 Computes the distance between two states.
 
void nearestSamples (const VertexPtr &vertex, VertexPtrVector *neighbourSamples)
 Get the nearest unconnected samples using the appropriate "near" definition (i.e., k or r).
 
void getGraphAsPlannerData (ompl::base::PlannerData &data) const
 Adds the graph to the given PlannerData struct.
 
VertexConstPtr closestVertexToGoal () const
 IF BEING TRACKED, returns the closest vertex in the tree to the goal.
 
double smallestDistanceToGoal () const
 IF BEING TRACKED, returns the how close vertices in the tree are to the goal.
 
unsigned int getConnectivityK () const
 Get the k of this k-nearest RGG.
 
double getConnectivityR () const
 Get the radius of this r-disc RGG.
 
VertexPtrVector getCopyOfSamples () const
 Get a copy of all samples.
 
void registerSolutionCost (const ompl::base::Cost &solutionCost)
 Mark that a solution has been found and that the graph should be limited to the given heuristic value.
 
void updateStartAndGoalStates (ompl::base::PlannerInputStates &inputStates, const base::PlannerTerminationCondition &terminationCondition)
 Adds any new goals or starts that have appeared in the problem definition to the vector of vertices and the queue. Creates a new informed sampler if necessary.
 
void addNewSamples (const unsigned int &numSamples)
 Increase the resolution of the graph-based approximation of the continuous search domain by adding a batch of new samples.
 
std::pair< unsigned int, unsigned int > prune (double prunedMeasure)
 Prune the samples to the subproblem of the given measure. Returns the number of vertices disconnected and the number of samples removed.
 
void addToSamples (const VertexPtr &sample)
 Add an unconnected sample.
 
void addToSamples (const VertexPtrVector &samples)
 Add a vector of unconnected samples.
 
void removeFromSamples (const VertexPtr &sample)
 Remove a sample from the sample set.
 
void pruneSample (const VertexPtr &sample)
 Remove an unconnected sample.
 
void recycleSample (const VertexPtr &sample)
 Insert a sample into the set for recycled samples.
 
void registerAsVertex (const VertexPtr &vertex)
 Add a vertex to the tree, optionally moving it from the set of unconnected samples.
 
unsigned int removeFromVertices (const VertexPtr &sample, bool moveToFree)
 Remove a vertex from the tree, can optionally be allowed to move it to the set of unconnected samples if may still be useful.
 
std::pair< unsigned int, unsigned int > pruneVertex (const VertexPtr &vertex)
 Remove a vertex and mark as pruned.
 
void removeEdgeBetweenVertexAndParent (const VertexPtr &child, bool cascadeCostUpdates)
 Disconnect a vertex from its parent by removing the edges stored in itself, and its parents. Cascades cost updates if requested.
 
void setRewireFactor (double rewireFactor)
 Set the rewiring scale factor, s, such that r_rrg = s \times r_rrg*.
 
double getRewireFactor () const
 Get the rewiring scale factor.
 
void setUseKNearest (bool useKNearest)
 Enable a k-nearest search for instead of an r-disc search.
 
bool getUseKNearest () const
 Get whether a k-nearest search is being used.
 
void setJustInTimeSampling (bool useJit)
 
bool getJustInTimeSampling () const
 Get whether we're using just-in-time sampling.
 
void setDropSamplesOnPrune (bool dropSamples)
 Set whether unconnected samples are dropped on pruning.
 
void setPruning (bool usePruning)
 Set whether samples that are provably not beneficial should be kept around.
 
bool getDropSamplesOnPrune () const
 Get whether unconnected samples are dropped on pruning.
 
void setTrackApproximateSolutions (bool findApproximate)
 Set whether to track approximate solutions during the search.
 
bool getTrackApproximateSolutions () const
 Get whether approximate solutions are tracked during the search.
 
void setAverageNumOfAllowedFailedAttemptsWhenSampling (std::size_t number)
 Set the average number of allowed failed attempts when sampling.
 
std::size_t getAverageNumOfAllowedFailedAttemptsWhenSampling () const
 Get the average number of allowed failed attempts when sampling.
 
template<template< typename T > class NN>
void setNearestNeighbors ()
 Set a different nearest neighbours datastructure.
 
unsigned int numSamples () const
 The number of samples.
 
unsigned int numVertices () const
 The number of vertices in the search tree.
 
unsigned int numStatesGenerated () const
 The total number of states generated.
 
unsigned int numVerticesConnected () const
 The total number of vertices added to the graph.
 
unsigned int numFreeStatesPruned () const
 The number of states pruned.
 
unsigned int numVerticesDisconnected () const
 The number of tree vertices disconnected.
 
unsigned int numNearestLookups () const
 The number of nearest neighbour calls.
 
unsigned int numStateCollisionChecks () const
 The number of state collision checks.
 
bool canVertexBeDisconnected (const VertexPtr &vertex) const
 Returns whether the vertex can be pruned, i.e., whether it could provide a better solution given. the current graph. The check should always be g_t(v) + h^(v) >= g_t(x_g).
 
bool canSampleBePruned (const VertexPtr &sample) const
 Returns whether the sample can be pruned, i.e., whether it could ever provide a better solution. The check should always be g^(v) + h^(v) >= g_t(x_g).
 

Detailed Description

A conceptual representation of samples as an edge-implicit random geometric graph.

Short Description
An edge-implicit representation of a random geometric graph. TODO(Marlin): Separating the search tree from the RGG seems conceptually cleaner. Think about its implications.

Definition at line 120 of file ImplicitGraph.h.

Member Function Documentation

◆ setJustInTimeSampling()

void ompl::geometric::BITstar::ImplicitGraph::setJustInTimeSampling ( bool  useJit)

Enable sampling "just-in-time", i.e., only when necessary for a nearest-neighbour search.

Definition at line 1571 of file ImplicitGraph.cpp.


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