AnytimePathShortening.cpp
46 ompl::geometric::AnytimePathShortening::AnytimePathShortening(const ompl::base::SpaceInformationPtr &si)
58 Planner::declareParam<unsigned int>("max_hybrid_paths", this, &AnytimePathShortening::setMaxHybridizationPath,
60 Planner::declareParam<unsigned int>("num_planners", this, &AnytimePathShortening::setDefaultNumPlanners,
75 OMPL_ERROR("NOT adding planner %s: SpaceInformation instances are different", planner->getName().c_str());
84 OMPL_ERROR("NOT adding planner %s: Planner instances MUST be unique", planner->getName().c_str());
92 void ompl::geometric::AnytimePathShortening::setProblemDefinition(const ompl::base::ProblemDefinitionPtr &pdef)
100 ompl::geometric::AnytimePathShortening::solve(const ompl::base::PlannerTerminationCondition &ptc)
110 OMPL_INFORM("%s: No optimization objective specified. Defaulting to optimizing path length for the allowed "
119 OMPL_WARN("The optimization objective is not set for path length. The specified optimization criteria may "
191 geometric::PathGeometric *sln = static_cast<geometric::PathGeometric *>(pdef_->getSolutionPath().get());
210 void ompl::geometric::AnytimePathShortening::getPlannerData(ompl::base::PlannerData &data) const
219 void ompl::geometric::AnytimePathShortening::getPlannerData(ompl::base::PlannerData &data, unsigned int idx) const
238 OMPL_INFORM("%s: No planners specified; using %u instances of %s", getName().c_str(), planners_.size(),
257 ompl::base::PlannerPtr ompl::geometric::AnytimePathShortening::getPlanner(unsigned int idx) const
unsigned int maxHybridizationPaths() const
Return the maximum number of paths that will be hybridized.
Definition: AnytimePathShortening.cpp:283
A shared pointer wrapper for ompl::base::SpaceInformation.
bool multithreaded
Flag indicating whether multiple threads are used in the computation of the planner.
Definition: Planner.h:264
void getPlannerData(base::PlannerData &data) const override
Get information about the most recent run of the motion planner.
Definition: AnytimePathShortening.cpp:210
An optimization objective which corresponds to optimizing path length.
Definition: PathLengthOptimizationObjective.h:111
bool isShortcutting() const
Return whether the anytime planner will perform shortcutting on paths.
Definition: AnytimePathShortening.cpp:263
void addPlannerProgressProperty(const std::string &progressPropertyName, const PlannerProgressProperty &prop)
Add a planner progress property called progressPropertyName with a property querying function prop to...
Definition: Planner.h:463
unsigned int recordPath(const base::PathPtr &pp, bool matchAcrossGaps)
Add a path to the hybridization. If matchAcrossGaps is true, more possible edge connections are evalu...
Definition: PathHybridization.cpp:137
This class contains routines that attempt to simplify geometric paths.
Definition: PathSimplifier.h:129
Definition of a cost value. Can represent the cost of a motion or the cost of a state.
Definition: Cost.h:111
void setProblemDefinition(const base::ProblemDefinitionPtr &pdef) override
Set the problem definition for the planners. The problem needs to be set before calling solve()....
Definition: AnytimePathShortening.cpp:92
base::PlannerPtr getPlanner(unsigned int idx) const
Retrieve a pointer to the ith planner instance.
Definition: AnytimePathShortening.cpp:257
unsigned int getNumPlanners() const
Retrieve the number of planners added.
Definition: AnytimePathShortening.cpp:252
A shared pointer wrapper for ompl::base::Planner.
Object containing planner generated vertex and edge data. It is assumed that all vertices are unique,...
Definition: PlannerData.h:238
std::vector< base::State * > & getStates()
Get the states that make up the path (as a reference, so it can be modified, hence the function is no...
Definition: PathGeometric.h:264
void setup() override
Perform any necessary configuration steps. This method also invokes ompl::base::SpaceInformation::set...
Definition: AnytimePathShortening.cpp:226
Given multiple geometric paths, attempt to combine them in order to obtain a shorter solution.
Definition: PathHybridization.h:134
Encapsulate a termination condition for a motion planner. Planners will call operator() to decide whe...
Definition: PlannerTerminationCondition.h:127
void computeHybridPath()
Run Dijkstra's algorithm to find out the lowest-cost path among the mixed ones.
Definition: PathHybridization.cpp:108
void setLogLevel(LogLevel level)
Set the minimum level of logging data to output. Messages with lower logging levels will not be recor...
Definition: Console.cpp:136
AnytimePathShortening(const base::SpaceInformationPtr &si)
Constructor requires the space information to plan in.
Definition: AnytimePathShortening.cpp:46
const base::PathPtr & getHybridPath() const
Get the currently computed hybrid path. computeHybridPath() needs to have been called before.
Definition: PathHybridization.cpp:132
bool optimizingPaths
Flag indicating whether the planner attempts to optimize the path and reduce its length until the max...
Definition: Planner.h:271
bool isHybridizing() const
Return whether the anytime planner will extract a hybrid path from the set of solution paths.
Definition: AnytimePathShortening.cpp:273
virtual void threadSolve(base::Planner *planner, const base::PlannerTerminationCondition &ptc)
The function that the planning threads execute when solving a motion planning problem.
Definition: AnytimePathShortening.cpp:182
A class to store the exit status of Planner::solve()
Definition: PlannerStatus.h:112
void setDefaultNumPlanners(unsigned int numPlanners)
Set default number of planners to use if none are specified.
Definition: AnytimePathShortening.cpp:293
virtual PlannerStatus solve(const PlannerTerminationCondition &ptc)=0
Function that can solve the motion planning problem. This function can be called multiple times on th...
A shared pointer wrapper for ompl::base::ProblemDefinition.
virtual bool isSatisfied(const State *st) const =0
Return true if the state satisfies the goal constraints.
void setMaxHybridizationPath(unsigned int maxPathCount)
Set the maximum number of paths that will be hybridized.
Definition: AnytimePathShortening.cpp:288
void setHybridize(bool hybridize)
Enable/disable path hybridization on the set of solution paths.
Definition: AnytimePathShortening.cpp:278
unsigned int getDefaultNumPlanners() const
Get default number of planners used if none are specified.
Definition: AnytimePathShortening.cpp:298
bool shortcutPath(PathGeometric &path, unsigned int maxSteps=0, unsigned int maxEmptySteps=0, double rangeRatio=0.33, double snapToVertex=0.005)
Given a path, attempt to shorten it while maintaining its validity. This is an iterative process that...
Definition: PathSimplifier.cpp:187
virtual void setProblemDefinition(const ProblemDefinitionPtr &pdef)
Set the problem definition for the planner. The problem needs to be set before calling solve()....
Definition: Planner.cpp:76
std::string getBestCost() const
Return best cost found so far by algorithm.
Definition: AnytimePathShortening.cpp:303
void clear() override
Clear all internal planning datastructures. Planner settings are not affected. Subsequent calls to so...
Definition: AnytimePathShortening.cpp:203
LogLevel getLogLevel()
Retrieve the current level of logging data. Messages with lower logging levels will not be recorded.
Definition: Console.cpp:142
bool approximateSolutions
Flag indicating whether the planner is able to compute approximate solutions.
Definition: Planner.h:267
~AnytimePathShortening() override
Destructor.
static base::PlannerPtr getDefaultPlanner(const base::GoalPtr &goal)
Given a goal specification, decide on a planner for that goal.
Definition: SelfConfig.cpp:243
void addPlanner(base::PlannerPtr &planner)
Adds the given planner to the set of planners used to compute candidate paths.
Definition: AnytimePathShortening.cpp:71
base::PlannerStatus solve(const base::PlannerTerminationCondition &ptc) override
Method that solves the motion planning problem. This method terminates under just two conditions,...
Definition: AnytimePathShortening.cpp:100
std::string toString(float val)
convert float to string using classic "C" locale semantics
Definition: String.cpp:82
Main namespace. Contains everything in this library.
Definition: ConstrainedSpaceInformation.h:52
void setShortcut(bool shortcut)
Enable/disable shortcutting on paths.
Definition: AnytimePathShortening.cpp:268
void checkValidity() override
Check to see if the planners are in a working state (setup has been called, a goal was set,...
Definition: AnytimePathShortening.cpp:246