45 namespace ompl
74 ~BiTRRT() override;
75 void clear() override;
76 void setup() override;
85 maxDistance_ = distance;
91 return maxDistance_;
101 tempChangeFactor_ = exp(factor);
131 initTemperature_ = initTemperature;
137 return initTemperature_;
144 frontierThreshold_ = frontierThreshold;
151 return frontierThreshold_;
159 frontierNodeRatio_ = frontierNodeRatio;
166 return frontierNodeRatio_;
174 OMPL_WARN("Calling setNearestNeighbors will clear all states.");
176 tStart_ = std::make_shared<NN<Motion *>>();
177 tGoal_ = std::make_shared<NN<Motion *>>();
187 Motion() = default;
194 ~Motion() = default;
211 void freeMemory();
229 bool minExpansionControl(double dist);
Object containing planner generated vertex and edge data. It is assumed that all vertices are unique...
base::PlannerStatus solve(const base::PlannerTerminationCondition &ptc) override
Function that can solve the motion planning problem. This function can be called multiple times on th...
Motion * addMotion(const base::State *state, TreeData &tree, Motion *parent=nullptr)
Add a state to the given tree. The motion created is returned.
void setup() override
Perform extra configuration steps, if needed. This call will also issue a call to ompl::base::SpaceIn...
The distance between an existing state and a new state that qualifies it as a frontier state...
void log(const char *file, int line, LogLevel level, const char *m,...)
Root level logging function. This should not be invoked directly, but rather used via a logging macro...
base::State * state
The state contained by the motion.
bool minExpansionControl(double dist)
Use frontier node ratio to filter nodes that do not add new information to the search tree...
bool transitionTest(const base::Cost &motionCost)
Transition test that filters transitions based on the motion cost. If the motion cost is near or belo...
GrowResult extendTree(Motion *toMotion, TreeData &tree, Motion *&result)
Extend tree toward the state in rmotion. Store the result of the extension, if any, in result.
The most desirable (e.g., minimum) cost value in the search tree.
double getFrontierThreshold() const
Get the distance between a new state and the nearest neighbor that qualifies a state as being a front...
Encapsulate a termination condition for a motion planner. Planners will call operator() to decide whe...
Motion * parent
The parent motion in the exploration tree.
A count of the number of non-frontier nodes in the trees.
BiTRRT(const base::SpaceInformationPtr &si)
std::shared_ptr< NearestNeighbors< Motion * > > TreeData
The nearest-neighbors data structure that contains the entire the tree of motions generated during pl...
void getPlannerData(base::PlannerData &data) const override
Get information about the current run of the motion planner. Repeated calls to this function will upd...
The temperature that planning begins at.
The range at which the algorithm will attempt to connect the two trees.
void setFrontierNodeRatio(double frontierNodeRatio)
Set the ratio between adding non-frontier nodes to frontier nodes. For example: .1 is one non-frontie...
The least desirable (e.g., maximum) cost value in the search tree.
The factor by which the temperature is increased after a failed transition test.
The maximum length of a motion to be added to a tree.
std::pair< Motion *, Motion * > connectionPoint_
The most recent connection point for the two trees. Used for PlannerData computation.
double getInitTemperature() const
Get the initial temperature at the start of planning.
Motion(const base::SpaceInformationPtr &si)
Constructor that allocates memory for the state.
Set a different nearest neighbors datastructure.
Free all memory allocated during planning.
double getRange() const
Get the range the planner is using.
double getFrontierNodeRatio() const
Get the ratio between adding non-frontier nodes to frontier nodes.
The result of a call to extendTree.
const base::State * root
Pointer to the root of the tree this motion is contained in.
void setTempChangeFactor(double factor)
Set the factor by which the temperature is increased after a failed transition test. This value should be in the range (0, 1], typically close to zero (default is 0.1). This value is an exponential (e^factor) that is multiplied with the current temperature.
A class to store the exit status of Planner::solve()
void setInitTemperature(double initTemperature)
Set the initial temperature at the start of planning. Should be high to allow for initial exploration...
A shared pointer wrapper for ompl::base::SpaceInformation.
double getTempChangeFactor() const
Get the factor by which the temperature is increased after a failed transition.
A count of the number of frontier nodes in the trees.
double distanceFunction(const Motion *a, const Motion *b) const
Compute distance between motions (actually distance between contained states)
The objective (cost function) being optimized.
*double getCostThreshold() const
Get the cost threshold (default is infinity). Any motion cost that is not better than this cost (acco...
void setFrontierThreshold(double frontierThreshold)
Set the distance between a new state and the nearest neighbor that qualifies a state as being a front...
Representation of a motion in the search tree.
A shared pointer wrapper for ompl::base::OptimizationObjective.
The target ratio of non-frontier nodes to frontier nodes.
void setRange(double distance)
Set the maximum possible length of any one motion in the search tree. Very short/long motions may inh...
All motion costs must be better than this cost (default is infinity)
The space information for which planning is done.
void setCostThreshold(double maxCost)
Set the cost threshold (default is infinity). Any motion cost that is not better than this cost (acco...
bool connectTrees(Motion *nmotion, TreeData &tree, Motion *xmotion)
Attempt to connect tree to nmotion, which is in the other tree. xmotion is scratch space and will be ...
Bi-directional Transition-based Rapidly-exploring Random Trees.
The desired state was reached during extension.
Definition of a cost value. Can represent the cost of a motion or the cost of a state.
void clear() override
Clear all internal datastructures. Planner settings are not affected. Subsequent calls to solve() wil...