00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef OMPL_GEOMETRIC_PLANNERS_RRT_RRT_
00038 #define OMPL_GEOMETRIC_PLANNERS_RRT_RRT_
00039
00040 #include "ompl/geometric/planners/PlannerIncludes.h"
00041 #include "ompl/datastructures/NearestNeighbors.h"
00042
00043 namespace ompl
00044 {
00045
00046 namespace geometric
00047 {
00048
00068 class RRT : public base::Planner
00069 {
00070 public:
00071
00073 RRT(const base::SpaceInformationPtr &si);
00074
00075 virtual ~RRT(void);
00076
00077 virtual void getPlannerData(base::PlannerData &data) const;
00078
00079 virtual bool solve(const base::PlannerTerminationCondition &ptc);
00080
00081 virtual void clear(void);
00082
00092 void setGoalBias(double goalBias)
00093 {
00094 goalBias_ = goalBias;
00095 }
00096
00098 double getGoalBias(void) const
00099 {
00100 return goalBias_;
00101 }
00102
00108 void setRange(double distance)
00109 {
00110 maxDistance_ = distance;
00111 }
00112
00114 double getRange(void) const
00115 {
00116 return maxDistance_;
00117 }
00118
00120 template<template<typename T> class NN>
00121 void setNearestNeighbors(void)
00122 {
00123 nn_.reset(new NN<Motion*>());
00124 }
00125
00126 virtual void setup(void);
00127
00128 protected:
00129
00130
00135 class Motion
00136 {
00137 public:
00138
00139 Motion(void) : state(NULL), parent(NULL)
00140 {
00141 }
00142
00144 Motion(const base::SpaceInformationPtr &si) : state(si->allocState()), parent(NULL)
00145 {
00146 }
00147
00148 ~Motion(void)
00149 {
00150 }
00151
00153 base::State *state;
00154
00156 Motion *parent;
00157
00158 };
00159
00161 void freeMemory(void);
00162
00164 double distanceFunction(const Motion* a, const Motion* b) const
00165 {
00166 return si_->distance(a->state, b->state);
00167 }
00168
00170 base::StateSamplerPtr sampler_;
00171
00173 boost::shared_ptr< NearestNeighbors<Motion*> > nn_;
00174
00176 double goalBias_;
00177
00179 double maxDistance_;
00180
00182 RNG rng_;
00183 };
00184
00185 }
00186 }
00187
00188 #endif