1 #ifndef ROBOTICS_KINODYNAMIC_MOTION_PLANNER_H 2 #define ROBOTICS_KINODYNAMIC_MOTION_PLANNER_H 4 #include "KinodynamicSpace.h" 5 #include "KinodynamicPath.h" 6 #include "PointLocation.h" 7 #include "DensityEstimator.h" 9 #include <KrisLibrary/graph/Tree.h> 30 EdgePlannerPtr checker;
36 void Init(
const State& initialState);
37 void EnablePointLocation(
const char* type=NULL);
40 Node* AddMilestone(Node* parent,
const ControlInput& u,
const InterpolatorPtr& path,
const EdgePlannerPtr& e);
45 Node* FindClosest(
const State& x);
51 void RebuildPointLocation();
60 std::vector<Node*> index;
61 std::vector<Vector> pointRefs;
69 virtual void Init(
const State& xinit,
CSet* goalSet)=0;
70 virtual void Init(
const State& xinit,
const State& xgoal,Real goalRadius);
71 virtual bool Plan(
int maxIters)=0;
72 virtual bool Done()
const=0;
89 virtual void Init(
const State& xinit,
CSet* goalSet);
90 virtual bool Plan(
int maxIters);
91 virtual bool Done()
const;
94 virtual Node* Extend();
95 virtual Node* ExtendToward(
const State& xdest);
96 virtual void PickDestination(
State& xdest);
106 Real goalSeekProbability;
112 int numIters,numInfeasibleControls,numInfeasibleEndpoints,numFilteredExtensions,numSuccessfulExtensions;
113 Real nnTime,pickControlTime,visibleTime,overheadTime;
136 void EnableExtensionCaching(
int cacheSize=100);
137 void SetDensityEstimatorResolution(Real res);
138 void SetDensityEstimatorResolution(
const Vector& res);
139 virtual void Init(
const State& xinit,
CSet* goalSet);
140 virtual bool Plan(
int maxIters);
141 virtual bool Done()
const;
147 void RebuildDensityEstimator();
150 std::shared_ptr<DensityEstimatorBase> densityEstimator;
151 int extensionCacheSize;
156 std::vector<double> extensionWeights;
160 int numIters,numFilteredExtensions,numSuccessfulExtensions;
161 Real sampleTime,simulateTime,visibleTime,overheadTime;
172 virtual bool Plan(
int maxIters);
173 virtual Node* ExtendToward(
const State& xdest);
174 bool CheckPath(
Node* n);
186 void Init(
const State& xStart,
const State& xGoal);
187 virtual void Init(
const State& xinit,
CSet* goalSet);
188 virtual bool Plan(
int maxIters);
189 virtual bool Done()
const;
196 bool ConnectTrees(Node* nStart,Node* nGoal);
203 Real connectionTolerance;
209 EdgePlannerPtr checker;
std::shared_ptr< PointLocationBase > pointLocation
If point location is enabled, this will contain a point location data structure.
Definition: KinodynamicMotionPlanner.h:59
virtual bool FilterExtension(Node *n, const KinodynamicMilestonePath &path)
Subclasses can overload this to eliminate certain extensions of the tree.
Definition: KinodynamicMotionPlanner.h:102
Definition: KinodynamicMotionPlanner.h:64
Definition: KinodynamicMotionPlanner.h:27
Data structure for a kinodynamic planning tree.
Definition: KinodynamicMotionPlanner.h:24
Definition: KinodynamicMotionPlanner.h:205
A bidirectional RRT planner for kinodynamic systems.
Definition: KinodynamicMotionPlanner.h:179
Stores a kinodynamic path with piecewise constant controls.
Definition: KinodynamicPath.h:23
A lazy version of kinodynamic RRT.
Definition: KinodynamicMotionPlanner.h:167
The RRT planner for kinodynamic systems.
Definition: KinodynamicMotionPlanner.h:82
A class used for kinodynamic planning. Combines a CSpace defining the state space, as well as a ControlSpace.
Definition: KinodynamicSpace.h:22
A tree graph structure, represented directly at the node level.
Definition: Tree.h:25
std::vector< Node * > extensionCache
Definition: KinodynamicMotionPlanner.h:155
The EST planner for kinodynamic systems.
Definition: KinodynamicMotionPlanner.h:129
A simple map from keys to values.
Definition: PropertyMap.h:27
A subset of a CSpace, which establishes a constraint for a configuration must meet. Mathematically, this is a set S which imposes the constraint [q in S].
Definition: CSet.h:20
virtual bool FilterExtension(Node *n, const KinodynamicMilestonePath &path)
Subclasses can overload this to eliminate certain extensions of the tree.
Definition: KinodynamicMotionPlanner.h:144
void DeleteSubTree(Node *n, bool rebuild=true)
Definition: KinodynamicMotionPlanner.cpp:210