Parasol Planning Library (PPL)
WorkspaceSkeleton.h
Go to the documentation of this file.
1 #ifndef PMPL_WORKSPACE_SKELETON_H_
2 #define PMPL_WORKSPACE_SKELETON_H_
3 
8 
9 #include <containers/sequential/graph/directed_preds_graph.h>
10 
11 #include "Vector.h"
12 
13 #include <queue>
14 #include <set>
15 #include <unordered_map>
16 #include <string>
17 
18 
22 class WorkspaceSkeleton : public GenericStateGraph<mathtool::Point3d, std::vector<mathtool::Point3d>> {
23 
24  public:
25 
28 
30 
31  typedef BaseType::VID VD;
32  typedef BaseType::EID ED;
33  typedef typename BaseType::VI vertex_iterator;
34  typedef typename BaseType::VID vertex_descriptor;
35  typedef typename BaseType::EI adj_edge_iterator;
36 
37  // Interface with CompositeState, CompositeEdge
38  typedef mathtool::Point3d CfgType;
39  typedef std::vector<mathtool::Point3d> EdgeType;
40 
44 
46 
50 
55  vertex_iterator FindNearestVertex(const mathtool::Point3d& _target);
56 
60  vertex_iterator FindVertex(const VD _vertexDescriptor);
61 
65  adj_edge_iterator FindEdge(const ED& _edgeDescriptor);
66 
70 
75  WorkspaceSkeleton Direct(const mathtool::Point3d& _start);
76 
81  void Prune(const mathtool::Point3d& _goal);
82 
84  void RefineEdges(double _maxLength);
85 
92  void DoubleEdges();
93 
97 
100 
101  void Write(const std::string& _file);
102 
105 
106  void Read(const std::string& _file);
107 
109 
110  private:
111 
114 
115  bool m_debug{false};
116 
118  VD m_start{std::numeric_limits<VD>::max()};
119 
121 };
122 
123 #endif
Definition: GenericStateGraph.h:67
STAPLGraph::vertex_descriptor VID
Definition: GenericStateGraph.h:83
STAPLGraph::vertex_iterator VI
Definition: GenericStateGraph.h:89
STAPLGraph::edge_descriptor EID
Definition: GenericStateGraph.h:84
STAPLGraph::adj_edge_iterator EI
Definition: GenericStateGraph.h:90
Geometric skeleton of the workspace.
Definition: WorkspaceSkeleton.h:22
BaseType::EID ED
Definition: WorkspaceSkeleton.h:32
WorkspaceSkeleton()
Definition: WorkspaceSkeleton.cpp:11
WorkspaceSkeleton Direct(const mathtool::Point3d &_start)
Definition: WorkspaceSkeleton.cpp:55
BaseType::VID VD
Definition: WorkspaceSkeleton.h:31
std::vector< mathtool::Point3d > EdgeType
Definition: WorkspaceSkeleton.h:39
BaseType::VID vertex_descriptor
Definition: WorkspaceSkeleton.h:34
vertex_iterator FindNearestVertex(const mathtool::Point3d &_target)
Definition: WorkspaceSkeleton.cpp:17
void Write(const std::string &_file)
Definition: WorkspaceSkeleton.cpp:294
void DoubleEdges()
Definition: WorkspaceSkeleton.cpp:263
vertex_iterator FindVertex(const VD _vertexDescriptor)
Definition: WorkspaceSkeleton.cpp:34
BaseType::VI vertex_iterator
Definition: WorkspaceSkeleton.h:33
void Read(const std::string &_file)
Definition: WorkspaceSkeleton.cpp:315
adj_edge_iterator FindEdge(const ED &_edgeDescriptor)
Definition: WorkspaceSkeleton.cpp:41
void Prune(const mathtool::Point3d &_goal)
Definition: WorkspaceSkeleton.cpp:155
BaseType::EI adj_edge_iterator
Definition: WorkspaceSkeleton.h:35
mathtool::Point3d CfgType
Definition: WorkspaceSkeleton.h:38
GenericStateGraph< mathtool::Point3d, std::vector< mathtool::Point3d > > BaseType
Definition: WorkspaceSkeleton.h:29
void RefineEdges(double _maxLength)
Divide existing edges into sizes of at most _maxLength.
Definition: WorkspaceSkeleton.cpp:214