Loading...
Searching...
No Matches

Batch Informed Trees (BIT*) More...

#include <ompl/geometric/planners/informedtrees/BITstar.h>

Inheritance diagram for ompl::geometric::BITstar:

Classes

class  CostHelper
 A helper class to handle the various heuristic functions in one place. More...
 
class  IdGenerator
 An ID generator class for vertex IDs. More...
 
class  ImplicitGraph
 A conceptual representation of samples as an edge-implicit random geometric graph. More...
 
class  SearchQueue
 A queue of edges, sorted according to a sort key. More...
 
class  Vertex
 The vertex of the underlying graphs in gBITstar BIT*. More...
 

Public Types

using VertexPtr = std::shared_ptr< Vertex >
 A shared pointer to a vertex.
 
using VertexConstPtr = std::shared_ptr< const Vertex >
 A shared pointer to a const vertex.
 
using VertexWeakPtr = std::weak_ptr< Vertex >
 A weak pointer to a vertex.
 
using VertexPtrVector = std::vector< VertexPtr >
 A vector of shared pointers to vertices.
 
using VertexConstPtrVector = std::vector< VertexConstPtr >
 A vector of shared pointers to const vertices.
 
using VertexId = unsigned int
 The vertex id type.
 
using VertexPtrPair = std::pair< VertexPtr, VertexPtr >
 A pair of vertices, i.e., an edge.
 
using VertexConstPtrPair = std::pair< VertexConstPtr, VertexConstPtr >
 A pair of const vertices, i.e., an edge.
 
using VertexPtrPairVector = std::vector< VertexPtrPair >
 A vector of pairs of vertices, i.e., a vector of edges.
 
using VertexConstPtrPairVector = std::vector< VertexConstPtrPair >
 A vector of pairs of const vertices, i.e., a vector of edges.
 
using VertexPtrNNPtr = std::shared_ptr< NearestNeighbors< VertexPtr > >
 The OMPL::NearestNeighbors structure.
 
using NameFunc = std::function< std::string()>
 A utility functor for ImplicitGraph and SearchQueue.
 
- Public Types inherited from ompl::base::Planner
using PlannerProgressProperty = std::function< std::string()>
 Definition of a function which returns a property about the planner's progress that can be queried by a benchmarking routine.
 
using PlannerProgressProperties = std::map< std::string, PlannerProgressProperty >
 A dictionary which maps the name of a progress property to the function to be used for querying that property.
 

Public Member Functions

 BITstar (const base::SpaceInformationPtr &spaceInfo, const std::string &name="kBITstar")
 Construct with a pointer to the space information and an optional name.
 
virtual ~BITstar () override=default
 Destruct using the default destructor.
 
void setup () override
 Setup the algorithm.
 
void clear () override
 Clear the algorithm's internal state.
 
base::PlannerStatus solve (const base::PlannerTerminationCondition &terminationCondition) override
 Solve the problem given a termination condition.
 
void getPlannerData (base::PlannerData &data) const override
 Get results.
 
std::pair< const ompl::base::State *, const ompl::base::State * > getNextEdgeInQueue ()
 Get the next edge to be processed. Causes vertices in the queue to be expanded (if necessary) and therefore effects the run timings of the algorithm, but helpful for some videos and debugging.
 
ompl::base::Cost getNextEdgeValueInQueue ()
 Get the value of the next edge to be processed. Causes vertices in the queue to be expanded (if necessary) and therefore effects the run timings of the algorithm, but helpful for some videos and debugging.
 
void getEdgeQueue (VertexConstPtrPairVector *edgesInQueue)
 Get the whole messy set of edges in the queue. Expensive but helpful for some videos.
 
unsigned int numIterations () const
 Get the number of iterations completed.
 
ompl::base::Cost bestCost () const
 Retrieve the best exact-solution cost found.
 
unsigned int numBatches () const
 Retrieve the number of batches processed as the raw data.
 
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 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.
 
void setSamplesPerBatch (unsigned int n)
 Set the number of samplers per batch.
 
unsigned int getSamplesPerBatch () const
 Get the number of samplers per batch.
 
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 setStrictQueueOrdering (bool beStrict)
 Enable "strict sorting" of the edge queue. Rewirings can change the position in the queue of an edge. When strict sorting is enabled, the effected edges are resorted immediately, while disabling strict sorting delays this resorting until the end of the batch.
 
bool getStrictQueueOrdering () const
 Get whether strict queue ordering is in use.
 
void setPruning (bool prune)
 Enable pruning of vertices/samples that CANNOT improve the current solution. When a vertex in the graph is pruned, it's descendents are also pruned (if they also cannot improve the solution) or placed back in the set of free samples (if they could improve the solution). This assures that a uniform density is maintained.
 
bool getPruning () const
 Get whether graph and sample pruning is in use.
 
void setPruneThresholdFraction (double fractionalChange)
 Set the fractional change in the solution cost AND problem measure necessary for pruning to occur.
 
double getPruneThresholdFraction () const
 Get the fractional change in the solution cost AND problem measure necessary for pruning to occur.
 
void setDelayRewiringUntilInitialSolution (bool delayRewiring)
 Delay the consideration of rewiring edges until an initial solution is found. When multiple batches are required to find an initial solution, this can improve the time required to do so, by delaying improvements in the cost-to-come to a connected vertex. As the rewiring edges are considered once an initial solution is found, this has no effect on the theoretical asymptotic optimality of the planner.
 
bool getDelayRewiringUntilInitialSolution () const
 Get whether BIT* is delaying rewiring until a solution is found.
 
void setJustInTimeSampling (bool useJit)
 Delay the generation of samples until they are necessary. This only works when using an r-disc connection scheme, and is currently only implemented for problems seeking to minimize path length. This helps reduce the complexity of nearest-neighbour look ups, and can be particularly beneficial in unbounded planning problems where selecting an appropriate bounding box is difficult. With JIT sampling enabled, BIT* can solve planning problems whose state space has infinite boundaries. When enumerating outgoing edges from a vertex, BIT* uses JIT sampling to assure that the area within r of the vertex has been sampled during this batch. This is done in a way that maintains uniform sample distribution and has no effect on the theoretical asymptotic optimality of the planner.
 
bool getJustInTimeSampling () const
 Get whether we're using just-in-time sampling.
 
void setDropSamplesOnPrune (bool dropSamples)
 Drop all unconnected samples when pruning, regardless of their heuristic value. This provides a method for BIT* to remove samples that have not been connected to the graph and may be beneficial in problems where portions of the free space are unreachable (i.e., disconnected). BIT* calculates the connection radius for each batch from the underlying uniform distribution of states. The resulting larger connection radius may be detrimental in areas where the graph is dense, but maintains the theoretical asymptotic optimality of the planner.
 
bool getDropSamplesOnPrune () const
 Get whether unconnected samples are dropped on pruning.
 
void setStopOnSolnImprovement (bool stopOnChange)
 Stop the planner each time a solution improvement is found. Useful for examining the intermediate solutions found by BIT*.
 
bool getStopOnSolnImprovement () const
 Get whether BIT* stops each time a solution is found.
 
void setConsiderApproximateSolutions (bool findApproximate)
 Set BIT* to consider approximate solutions during its initial search.
 
bool getConsiderApproximateSolutions () const
 Get whether BIT* is considering approximate solutions.
 
template<template< typename T > class NN>
void setNearestNeighbors ()
 Set a different nearest neighbours datastructure.
 
- Public Member Functions inherited from ompl::base::Planner
 Planner (const Planner &)=delete
 
Planneroperator= (const Planner &)=delete
 
 Planner (SpaceInformationPtr si, std::string name)
 Constructor.
 
virtual ~Planner ()=default
 Destructor.
 
template<class T >
T * as ()
 Cast this instance to a desired type.
 
template<class T >
const T * as () const
 Cast this instance to a desired type.
 
const SpaceInformationPtrgetSpaceInformation () const
 Get the space information this planner is using.
 
const ProblemDefinitionPtrgetProblemDefinition () const
 Get the problem definition the planner is trying to solve.
 
ProblemDefinitionPtrgetProblemDefinition ()
 Get the problem definition the planner is trying to solve.
 
const PlannerInputStatesgetPlannerInputStates () const
 Get the planner input states.
 
virtual void setProblemDefinition (const ProblemDefinitionPtr &pdef)
 Set the problem definition for the planner. The problem needs to be set before calling solve(). Note: If this problem definition replaces a previous one, it may also be necessary to call clear() or clearQuery().
 
PlannerStatus solve (const PlannerTerminationConditionFn &ptc, double checkInterval)
 Same as above except the termination condition is only evaluated at a specified interval.
 
PlannerStatus solve (double solveTime)
 Same as above except the termination condition is solely a time limit: the number of seconds the algorithm is allowed to spend planning.
 
virtual void clearQuery ()
 Clears internal datastructures of any query-specific information from the previous query. Planner settings are not affected. The planner, if able, should retain all datastructures generated from previous queries that can be used to help solve the next query. Note that clear() should also clear all query-specific information along with all other datastructures in the planner. By default clearQuery() calls clear().
 
const std::string & getName () const
 Get the name of the planner.
 
void setName (const std::string &name)
 Set the name of the planner.
 
const PlannerSpecsgetSpecs () const
 Return the specifications (capabilities of this planner)
 
virtual void checkValidity ()
 Check to see if the planner is in a working state (setup has been called, a goal was set, the input states seem to be in order). In case of error, this function throws an exception.
 
bool isSetup () const
 Check if setup() was called for this planner.
 
ParamSetparams ()
 Get the parameters for this planner.
 
const ParamSetparams () const
 Get the parameters for this planner.
 
const PlannerProgressPropertiesgetPlannerProgressProperties () const
 Retrieve a planner's planner progress property map.
 
virtual void printProperties (std::ostream &out) const
 Print properties of the motion planner.
 
virtual void printSettings (std::ostream &out) const
 Print information about the motion planner's settings.
 

Protected Member Functions

void setInitialInflationFactor (double factor)
 Set the inflation for the initial search of RGG approximation. See ABIT*'s class description for more details about the inflation factor update policy.
 
void setInflationScalingParameter (double parameter)
 The parameter that scales the inflation factor on the second search of each RGG approximation. See ABIT*'s class description for more details about the inflation factor update policy.
 
void setTruncationScalingParameter (double parameter)
 Sets the parameter that scales the truncation factor for the searches of each RGG approximation. See ABIT*'s class description for more details about the truncation factor update policy.
 
void enableCascadingRewirings (bool enable)
 Enable the cascading of rewirings.
 
double getInitialInflationFactor () const
 Get the inflation factor for the initial search.
 
double getInflationScalingParameter () const
 Get the inflation scaling parameter.
 
double getTruncationScalingParameter () const
 Get the truncation factor parameter.
 
double getCurrentInflationFactor () const
 Get the inflation factor for the current search.
 
double getCurrentTruncationFactor () const
 Get the truncation factor for the current search.
 
- Protected Member Functions inherited from ompl::base::Planner
template<typename T , typename PlannerType , typename SetterType , typename GetterType >
void declareParam (const std::string &name, const PlannerType &planner, const SetterType &setter, const GetterType &getter, const std::string &rangeSuggestion="")
 This function declares a parameter for this planner instance, and specifies the setter and getter functions.
 
template<typename T , typename PlannerType , typename SetterType >
void declareParam (const std::string &name, const PlannerType &planner, const SetterType &setter, const std::string &rangeSuggestion="")
 This function declares a parameter for this planner instance, and specifies the setter function.
 
void addPlannerProgressProperty (const std::string &progressPropertyName, const PlannerProgressProperty &prop)
 Add a planner progress property called progressPropertyName with a property querying function prop to this planner's progress property map.
 

Additional Inherited Members

- Protected Attributes inherited from ompl::base::Planner
SpaceInformationPtr si_
 The space information for which planning is done.
 
ProblemDefinitionPtr pdef_
 The user set problem definition.
 
PlannerInputStates pis_
 Utility class to extract valid input states

 
std::string name_
 The name of this planner.
 
PlannerSpecs specs_
 The specifications of the planner (its capabilities)
 
ParamSet params_
 A map from parameter names to parameter instances for this planner. This field is populated by the declareParam() function.
 
PlannerProgressProperties plannerProgressProperties_
 A mapping between this planner's progress property names and the functions used for querying those progress properties.
 
bool setup_
 Flag indicating whether setup() has been called.
 

Detailed Description

Batch Informed Trees (BIT*)

BIT* (Batch Informed Trees) is an anytime asymptotically optimal sampling-based planning algorithm. It approaches problems by assuming that a simple solution exists and only goes onto consider complex solutions when that proves incorrect. It accomplishes this by using heuristics to search in order of decreasing potential solution quality.

Both a k-nearest and r-disc version are available, with the k-nearest selected by default. In general, the r-disc variant considers more connections than the k-nearest. For a small number of specific planning problems, this results in it finding solutions slower than k-nearest (hence the default choice). It is recommended that you try both variants, with the r-disc version being recommended if it finds an initial solution in a suitable amount of time (which it probably will). The difference in this number of connections considered is a RGG theory question, and certainly merits further review.

This implementation of BIT* can handle multiple starts, multiple goals, a variety of optimization objectives (e.g., path length), and with just-in-time sampling, infinite problem domains. Note that for some of optimization objectives, the user must specify a suitable heuristic and that when this heuristic is not specified, it will use the conservative/always admissible zero-heuristic.

This implementation also includes some new advancements, including the ability to prioritize exploration until an initial solution is found (Delayed rewiring), the ability to generate samples only when necessary (Just-in-time sampling), and the ability to periodically remove samples that have yet to be connected to the graph (Sample dropping). With just-in-time sampling, BIT* can even solve planning problems with infinite state space boundaries, i.e., (-inf, inf).

Associated publication:

J. D. Gammell, T. D. Barfoot, S. S. Srinivasa, "Batch Informed Trees (BIT*): Informed asymptotically optimal anytime search." The International Journal of Robotics Research (IJRR), 39(5): 543-567, Apr. 2020. DOI: 10.1177/0278364919890396. arXiv: 1707.01888 [cs.RO]. Illustration video.

Definition at line 92 of file BITstar.h.

Member Typedef Documentation

◆ NameFunc

using ompl::geometric::BITstar::NameFunc = std::function<std::string()>

A utility functor for ImplicitGraph and SearchQueue.

Definition at line 149 of file BITstar.h.

◆ VertexConstPtr

using ompl::geometric::BITstar::VertexConstPtr = std::shared_ptr<const Vertex>

A shared pointer to a const vertex.

Definition at line 119 of file BITstar.h.

◆ VertexConstPtrPair

A pair of const vertices, i.e., an edge.

Definition at line 137 of file BITstar.h.

◆ VertexConstPtrPairVector

A vector of pairs of const vertices, i.e., a vector of edges.

Definition at line 143 of file BITstar.h.

◆ VertexConstPtrVector

A vector of shared pointers to const vertices.

Definition at line 128 of file BITstar.h.

◆ VertexId

using ompl::geometric::BITstar::VertexId = unsigned int

The vertex id type.

Definition at line 131 of file BITstar.h.

◆ VertexPtr

using ompl::geometric::BITstar::VertexPtr = std::shared_ptr<Vertex>

A shared pointer to a vertex.

Definition at line 116 of file BITstar.h.

◆ VertexPtrNNPtr

The OMPL::NearestNeighbors structure.

Definition at line 146 of file BITstar.h.

◆ VertexPtrPair

A pair of vertices, i.e., an edge.

Definition at line 134 of file BITstar.h.

◆ VertexPtrPairVector

A vector of pairs of vertices, i.e., a vector of edges.

Definition at line 140 of file BITstar.h.

◆ VertexPtrVector

A vector of shared pointers to vertices.

Definition at line 125 of file BITstar.h.

◆ VertexWeakPtr

A weak pointer to a vertex.

Definition at line 122 of file BITstar.h.

Constructor & Destructor Documentation

◆ BITstar()

ompl::geometric::BITstar::BITstar ( const base::SpaceInformationPtr &  spaceInfo,
const std::string &  name = "kBITstar" 
)

Construct with a pointer to the space information and an optional name.

Definition at line 65 of file BITstar.cpp.

Member Function Documentation

◆ bestCost()

ompl::base::Cost ompl::geometric::BITstar::bestCost ( ) const

Retrieve the best exact-solution cost found.

Definition at line 470 of file BITstar.cpp.

◆ clear()

void ompl::geometric::BITstar::clear ( )
overridevirtual

Clear the algorithm's internal state.

Reimplemented from ompl::base::Planner.

Definition at line 263 of file BITstar.cpp.

◆ enableCascadingRewirings()

void ompl::geometric::BITstar::enableCascadingRewirings ( bool  enable)
protected

Enable the cascading of rewirings.

Definition at line 1111 of file BITstar.cpp.

◆ getAverageNumOfAllowedFailedAttemptsWhenSampling()

std::size_t ompl::geometric::BITstar::getAverageNumOfAllowedFailedAttemptsWhenSampling ( ) const

Get the average number of allowed failed attempts when sampling.

Definition at line 1304 of file BITstar.cpp.

◆ getConsiderApproximateSolutions()

bool ompl::geometric::BITstar::getConsiderApproximateSolutions ( ) const

Get whether BIT* is considering approximate solutions.

Definition at line 1294 of file BITstar.cpp.

◆ getCurrentInflationFactor()

double ompl::geometric::BITstar::getCurrentInflationFactor ( ) const
protected

Get the inflation factor for the current search.

Definition at line 1131 of file BITstar.cpp.

◆ getCurrentTruncationFactor()

double ompl::geometric::BITstar::getCurrentTruncationFactor ( ) const
protected

Get the truncation factor for the current search.

Definition at line 1136 of file BITstar.cpp.

◆ getDelayRewiringUntilInitialSolution()

bool ompl::geometric::BITstar::getDelayRewiringUntilInitialSolution ( ) const

Get whether BIT* is delaying rewiring until a solution is found.

Definition at line 1248 of file BITstar.cpp.

◆ getDropSamplesOnPrune()

bool ompl::geometric::BITstar::getDropSamplesOnPrune ( ) const

Get whether unconnected samples are dropped on pruning.

Definition at line 1270 of file BITstar.cpp.

◆ getEdgeQueue()

void ompl::geometric::BITstar::getEdgeQueue ( VertexConstPtrPairVector edgesInQueue)

Get the whole messy set of edges in the queue. Expensive but helpful for some videos.

Definition at line 460 of file BITstar.cpp.

◆ getInflationScalingParameter()

double ompl::geometric::BITstar::getInflationScalingParameter ( ) const
protected

Get the inflation scaling parameter.

Definition at line 1121 of file BITstar.cpp.

◆ getInitialInflationFactor()

double ompl::geometric::BITstar::getInitialInflationFactor ( ) const
protected

Get the inflation factor for the initial search.

Definition at line 1116 of file BITstar.cpp.

◆ getJustInTimeSampling()

bool ompl::geometric::BITstar::getJustInTimeSampling ( ) const

Get whether we're using just-in-time sampling.

Definition at line 1260 of file BITstar.cpp.

◆ getNextEdgeInQueue()

std::pair< ompl::base::State const *, ompl::base::State const * > ompl::geometric::BITstar::getNextEdgeInQueue ( )

Get the next edge to be processed. Causes vertices in the queue to be expanded (if necessary) and therefore effects the run timings of the algorithm, but helpful for some videos and debugging.

Definition at line 416 of file BITstar.cpp.

◆ getNextEdgeValueInQueue()

ompl::base::Cost ompl::geometric::BITstar::getNextEdgeValueInQueue ( )

Get the value of the next edge to be processed. Causes vertices in the queue to be expanded (if necessary) and therefore effects the run timings of the algorithm, but helpful for some videos and debugging.

Definition at line 440 of file BITstar.cpp.

◆ getPlannerData()

void ompl::geometric::BITstar::getPlannerData ( base::PlannerData data) const
overridevirtual

Get results.

Reimplemented from ompl::base::Planner.

Definition at line 394 of file BITstar.cpp.

◆ getPruneThresholdFraction()

double ompl::geometric::BITstar::getPruneThresholdFraction ( ) const

Get the fractional change in the solution cost AND problem measure necessary for pruning to occur.

Definition at line 1237 of file BITstar.cpp.

◆ getPruning()

bool ompl::geometric::BITstar::getPruning ( ) const

Get whether graph and sample pruning is in use.

Definition at line 1222 of file BITstar.cpp.

◆ getRewireFactor()

double ompl::geometric::BITstar::getRewireFactor ( ) const

Get the rewiring scale factor.

Definition at line 1146 of file BITstar.cpp.

◆ getSamplesPerBatch()

unsigned int ompl::geometric::BITstar::getSamplesPerBatch ( ) const

Get the number of samplers per batch.

Definition at line 1156 of file BITstar.cpp.

◆ getStopOnSolnImprovement()

bool ompl::geometric::BITstar::getStopOnSolnImprovement ( ) const

Get whether BIT* stops each time a solution is found.

Definition at line 1280 of file BITstar.cpp.

◆ getStrictQueueOrdering()

bool ompl::geometric::BITstar::getStrictQueueOrdering ( ) const

Get whether strict queue ordering is in use.

Definition at line 1209 of file BITstar.cpp.

◆ getTruncationScalingParameter()

double ompl::geometric::BITstar::getTruncationScalingParameter ( ) const
protected

Get the truncation factor parameter.

Definition at line 1126 of file BITstar.cpp.

◆ getUseKNearest()

bool ompl::geometric::BITstar::getUseKNearest ( ) const

Get whether a k-nearest search is being used.

Definition at line 1198 of file BITstar.cpp.

◆ numBatches()

unsigned int ompl::geometric::BITstar::numBatches ( ) const

Retrieve the number of batches processed as the raw data.

Definition at line 475 of file BITstar.cpp.

◆ numIterations()

unsigned int ompl::geometric::BITstar::numIterations ( ) const

Get the number of iterations completed.

Definition at line 465 of file BITstar.cpp.

◆ setAverageNumOfAllowedFailedAttemptsWhenSampling()

void ompl::geometric::BITstar::setAverageNumOfAllowedFailedAttemptsWhenSampling ( std::size_t  number)

Set the average number of allowed failed attempts when sampling.

Definition at line 1299 of file BITstar.cpp.

◆ setConsiderApproximateSolutions()

void ompl::geometric::BITstar::setConsiderApproximateSolutions ( bool  findApproximate)

Set BIT* to consider approximate solutions during its initial search.

Definition at line 1285 of file BITstar.cpp.

◆ setDelayRewiringUntilInitialSolution()

void ompl::geometric::BITstar::setDelayRewiringUntilInitialSolution ( bool  delayRewiring)

Delay the consideration of rewiring edges until an initial solution is found. When multiple batches are required to find an initial solution, this can improve the time required to do so, by delaying improvements in the cost-to-come to a connected vertex. As the rewiring edges are considered once an initial solution is found, this has no effect on the theoretical asymptotic optimality of the planner.

Definition at line 1242 of file BITstar.cpp.

◆ setDropSamplesOnPrune()

void ompl::geometric::BITstar::setDropSamplesOnPrune ( bool  dropSamples)

Drop all unconnected samples when pruning, regardless of their heuristic value. This provides a method for BIT* to remove samples that have not been connected to the graph and may be beneficial in problems where portions of the free space are unreachable (i.e., disconnected). BIT* calculates the connection radius for each batch from the underlying uniform distribution of states. The resulting larger connection radius may be detrimental in areas where the graph is dense, but maintains the theoretical asymptotic optimality of the planner.

Definition at line 1265 of file BITstar.cpp.

◆ setInflationScalingParameter()

void ompl::geometric::BITstar::setInflationScalingParameter ( double  parameter)
protected

The parameter that scales the inflation factor on the second search of each RGG approximation. See ABIT*'s class description for more details about the inflation factor update policy.

Definition at line 1101 of file BITstar.cpp.

◆ setInitialInflationFactor()

void ompl::geometric::BITstar::setInitialInflationFactor ( double  factor)
protected

Set the inflation for the initial search of RGG approximation. See ABIT*'s class description for more details about the inflation factor update policy.

Definition at line 1095 of file BITstar.cpp.

◆ setJustInTimeSampling()

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

Delay the generation of samples until they are necessary. This only works when using an r-disc connection scheme, and is currently only implemented for problems seeking to minimize path length. This helps reduce the complexity of nearest-neighbour look ups, and can be particularly beneficial in unbounded planning problems where selecting an appropriate bounding box is difficult. With JIT sampling enabled, BIT* can solve planning problems whose state space has infinite boundaries. When enumerating outgoing edges from a vertex, BIT* uses JIT sampling to assure that the area within r of the vertex has been sampled during this batch. This is done in a way that maintains uniform sample distribution and has no effect on the theoretical asymptotic optimality of the planner.

Definition at line 1255 of file BITstar.cpp.

◆ setNearestNeighbors()

template<template< typename T > class NN>
void ompl::geometric::BITstar::setNearestNeighbors ( )

Set a different nearest neighbours datastructure.

Definition at line 1310 of file BITstar.cpp.

◆ setPruneThresholdFraction()

void ompl::geometric::BITstar::setPruneThresholdFraction ( double  fractionalChange)

Set the fractional change in the solution cost AND problem measure necessary for pruning to occur.

Definition at line 1227 of file BITstar.cpp.

◆ setPruning()

void ompl::geometric::BITstar::setPruning ( bool  prune)

Enable pruning of vertices/samples that CANNOT improve the current solution. When a vertex in the graph is pruned, it's descendents are also pruned (if they also cannot improve the solution) or placed back in the set of free samples (if they could improve the solution). This assures that a uniform density is maintained.

Definition at line 1216 of file BITstar.cpp.

◆ setRewireFactor()

void ompl::geometric::BITstar::setRewireFactor ( double  rewireFactor)

Set the rewiring scale factor, s, such that r_rrg = s \times r_rrg*.

Definition at line 1141 of file BITstar.cpp.

◆ setSamplesPerBatch()

void ompl::geometric::BITstar::setSamplesPerBatch ( unsigned int  n)

Set the number of samplers per batch.

Definition at line 1151 of file BITstar.cpp.

◆ setStopOnSolnImprovement()

void ompl::geometric::BITstar::setStopOnSolnImprovement ( bool  stopOnChange)

Stop the planner each time a solution improvement is found. Useful for examining the intermediate solutions found by BIT*.

Definition at line 1275 of file BITstar.cpp.

◆ setStrictQueueOrdering()

void ompl::geometric::BITstar::setStrictQueueOrdering ( bool  beStrict)

Enable "strict sorting" of the edge queue. Rewirings can change the position in the queue of an edge. When strict sorting is enabled, the effected edges are resorted immediately, while disabling strict sorting delays this resorting until the end of the batch.

Definition at line 1203 of file BITstar.cpp.

◆ setTruncationScalingParameter()

void ompl::geometric::BITstar::setTruncationScalingParameter ( double  parameter)
protected

Sets the parameter that scales the truncation factor for the searches of each RGG approximation. See ABIT*'s class description for more details about the truncation factor update policy.

Definition at line 1106 of file BITstar.cpp.

◆ setup()

void ompl::geometric::BITstar::setup ( )
overridevirtual

Setup the algorithm.

Reimplemented from ompl::base::Planner.

Definition at line 168 of file BITstar.cpp.

◆ setUseKNearest()

void ompl::geometric::BITstar::setUseKNearest ( bool  useKNearest)

Enable a k-nearest search for instead of an r-disc search.

Definition at line 1161 of file BITstar.cpp.

◆ solve()

ompl::base::PlannerStatus ompl::geometric::BITstar::solve ( const base::PlannerTerminationCondition terminationCondition)
overridevirtual

Solve the problem given a termination condition.

Implements ompl::base::Planner.

Definition at line 300 of file BITstar.cpp.


The documentation for this class was generated from the following files:
  • ompl/geometric/planners/informedtrees/BITstar.h
  • ompl/geometric/planners/informedtrees/src/BITstar.cpp