ProblemDefinition.h
void clearSolutionNonExistenceProof()
Removes any existing instance of SolutionNonExistenceProof.
Definition: ProblemDefinition.cpp:490
SolutionNonExistenceProofPtr nonExistenceProof_
A Representation of a proof of non-existence of a solution for this problem definition.
Definition: ProblemDefinition.h:485
A shared pointer wrapper for ompl::base::Path.
A shared pointer wrapper for ompl::base::SpaceInformation.
SpaceInformationPtr si_
The space information this problem definition is for.
Definition: ProblemDefinition.h:476
bool hasOptimizedSolution() const
Return true if the top found solution is optimized (satisfies the specified optimization objective)
Definition: ProblemDefinition.cpp:446
void setApproximate(double difference)
Specify that the solution is approximate and set the difference to the goal.
Definition: ProblemDefinition.h:153
void addSolutionPath(const PathPtr &path, bool approximate=false, double difference=-1.0, const std::string &plannerName="Unknown") const
Add a solution path in a thread-safe manner. Multiple solutions can be set for a goal....
Definition: ProblemDefinition.cpp:424
bool operator==(const PlannerSolution &p) const
Return true if two solutions are the same.
Definition: ProblemDefinition.h:144
bool hasExactSolution() const
Returns true if an exact solution path has been found. Specifically returns hasSolution && !...
Definition: ProblemDefinition.h:405
Definition of a problem to be solved. This includes the start state(s) for the system and a goal spec...
Definition: ProblemDefinition.h:216
unsigned int getStartStateCount() const
Returns the number of start states.
Definition: ProblemDefinition.h:271
OptimizationObjectivePtr opt_
Optimization objective that was used to optimize this solution.
Definition: ProblemDefinition.h:194
OptimizationObjectivePtr optimizationObjective_
The objective to be optimized while solving the planning problem.
Definition: ProblemDefinition.h:488
std::string plannerName_
Name of planner type that generated this solution, as received from Planner::getName()
Definition: ProblemDefinition.h:200
const State * getStartState(unsigned int index) const
Returns a specific start state.
Definition: ProblemDefinition.h:277
PathPtr isStraightLinePathValid() const
Check if a straight line path is valid. If it is, return an instance of a path that represents the st...
Definition: ProblemDefinition.cpp:290
Representation of a solution to a planning problem.
Definition: ProblemDefinition.h:133
Definition of a cost value. Can represent the cost of a motion or the cost of a state.
Definition: Cost.h:111
bool hasStartState(const State *state, unsigned int *startIndex=nullptr) const
Check whether a specified starting state is already included in the problem definition and optionally...
Definition: ProblemDefinition.cpp:197
A shared pointer wrapper for ompl::base::OptimizationObjective.
std::vector< PlannerSolution > getSolutions() const
Get all the solution paths available for this goal.
Definition: ProblemDefinition.cpp:456
std::size_t getSolutionCount() const
Get the number of solutions already found.
Definition: ProblemDefinition.cpp:409
Abstract definition of optimization objectives.
Definition: OptimizationObjective.h:138
double length_
For efficiency reasons, keep the length of the path as well.
Definition: ProblemDefinition.h:182
bool fixInvalidInputStates(double distStart, double distGoal, unsigned int attempts)
Many times the start or goal state will barely touch an obstacle. In this case, we may want to automa...
Definition: ProblemDefinition.cpp:245
ReportIntermediateSolutionFn intermediateSolutionCallback_
Callback function which is called when a new intermediate solution has been found.
Definition: ProblemDefinition.h:491
bool approximate_
True if goal was not achieved, but an approximate solution was found.
Definition: ProblemDefinition.h:185
bool hasSolution() const
Returns true if a solution path has been found (could be approximate)
Definition: ProblemDefinition.cpp:404
bool operator<(const PlannerSolution &b) const
Define a ranking for solutions.
Definition: ProblemDefinition.cpp:148
void setGoalState(const State *goal, double threshold=std::numeric_limits< double >::epsilon())
A simple form of setting the goal. This is called by setStartAndGoalStates(). A more general form is ...
Definition: ProblemDefinition.cpp:188
A shared pointer wrapper for ompl::base::ProblemDefinition.
const OptimizationObjectivePtr & getOptimizationObjective() const
Get the optimization objective to be considered during planning.
Definition: ProblemDefinition.h:347
bool hasSolutionNonExistenceProof() const
Returns true if the problem definition has a proof of non existence for a solution.
Definition: ProblemDefinition.cpp:485
PlannerSolution(const PathPtr &path)
Construct a solution that consists of a path and its attributes (whether it is approximate and the di...
Definition: ProblemDefinition.h:137
bool isTrivial(unsigned int *startIndex=nullptr, double *distance=nullptr) const
A problem is trivial if a given starting state already in the goal region, so we need no motion plann...
Definition: ProblemDefinition.cpp:372
Cost cost_
The cost of this solution path, with respect to the optimization objective.
Definition: ProblemDefinition.h:197
const SpaceInformationPtr & getSpaceInformation() const
Get the space information this problem definition is for.
Definition: ProblemDefinition.h:240
double getSolutionDifference() const
Get the distance to the desired goal for the top solution. Return -1.0 if there are no solutions avai...
Definition: ProblemDefinition.cpp:451
void getInputStates(std::vector< const State * > &states) const
Get all the input states. This includes start states and states that are part of goal regions that ca...
Definition: ProblemDefinition.cpp:274
ProblemDefinitionPtr clone() const
Return a copy of the problem definition.
Definition: ProblemDefinition.cpp:168
bool optimized_
True if the solution was optimized to meet the specified optimization criterion.
Definition: ProblemDefinition.h:191
void setOptimized(const OptimizationObjectivePtr &opt, Cost cost, bool meetsObjective)
Set the optimization objective used to optimize this solution, the cost of the solution and whether i...
Definition: ProblemDefinition.h:161
A shared pointer wrapper for ompl::base::SolutionNonExistenceProof.
std::function< void(const Planner *, const std::vector< const base::State * > &, const Cost)> ReportIntermediateSolutionFn
When a planner has an intermediate solution (e.g., optimizing planners), a function with this signatu...
Definition: ProblemDefinition.h:209
bool fixInvalidInputState(State *state, double dist, bool start, unsigned int attempts)
Helper function for fixInvalidInputStates(). Attempts to fix an individual state.
Definition: ProblemDefinition.cpp:209
void setIntermediateSolutionCallback(const ReportIntermediateSolutionFn &callback)
Set the callback to be called by planners that can compute intermediate solutions.
Definition: ProblemDefinition.h:366
void setOptimizationObjective(const OptimizationObjectivePtr &optimizationObjective)
Set the optimization objective to be considered during planning.
Definition: ProblemDefinition.h:353
const ReportIntermediateSolutionFn & getIntermediateSolutionCallback() const
When this function returns a valid function pointer, that function should be called by planners that ...
Definition: ProblemDefinition.h:360
PathPtr getSolutionPath() const
Return the top solution path, if one is found. The top path is a shortest path that was found,...
Definition: ProblemDefinition.cpp:414
double difference_
The achieved difference between the found solution and the desired goal.
Definition: ProblemDefinition.h:188
void setSolutionNonExistenceProof(const SolutionNonExistenceProofPtr &nonExistenceProof)
Set the instance of SolutionNonExistenceProof for this problem definition.
Definition: ProblemDefinition.cpp:500
void setPlannerName(const std::string &name)
Set the name of the planner used to compute this solution.
Definition: ProblemDefinition.h:169
void clearSolutionPaths() const
Forget the solution paths (thread safe). Memory is freed.
Definition: ProblemDefinition.cpp:461
bool getSolution(PlannerSolution &solution) const
Return true if a top solution is found, with the top solution passed by reference in the function hea...
Definition: ProblemDefinition.cpp:419
const SolutionNonExistenceProofPtr & getSolutionNonExistenceProof() const
Retrieve a pointer to the SolutionNonExistenceProof instance for this problem definition.
Definition: ProblemDefinition.cpp:495
A shared pointer wrapper for ompl::base::Goal.
void addStartState(const State *state)
Add a start state. The state is copied.
Definition: ProblemDefinition.h:246
int index_
When multiple solutions are found, each is given a number starting at 0, so that the order in which t...
Definition: ProblemDefinition.h:176
bool hasOptimizationObjective() const
Check if an optimization objective was defined for planning
Definition: ProblemDefinition.h:341
void print(std::ostream &out=std::cout) const
Print information about the start and goal states and the optimization objective.
Definition: ProblemDefinition.cpp:466
bool hasApproximateSolution() const
Return true if the top found solution is approximate (does not actually reach the desired goal,...
Definition: ProblemDefinition.cpp:441
void setStartAndGoalStates(const State *start, const State *goal, double threshold=std::numeric_limits< double >::epsilon())
In the simplest case possible, we have a single starting state and a single goal state.
Definition: ProblemDefinition.cpp:181