MRSL JPS3D Library  1.1
An implementaion of Jump Point Search on 3D voxel map
distance_map_planner.h
Go to the documentation of this file.
1 
5 #ifndef DMPLANNER_H
6 #define DMPLANNER_H
7 
8 #include "graph_search.h"
10 #include <jps_basis/data_type.h>
11 
12 class GraphSearch;
16 template <int Dim> class DMPlanner {
17 public:
22  DMPlanner(bool verbose = false);
23 
34  std::vector<bool> setPath(const vec_Vecf<Dim> &path, const Vecf<Dim>& radius,
35  bool dense);
36 
38  void setSearchRadius(const Vecf<Dim>& r);
40  void setPotentialRadius(const Vecf<Dim>& r);
42  void setPotentialMapRange(const Vecf<Dim>& r);
44  void setEps(double eps);
46  void setCweight(double c);
48  void setPow(int pow);
49 
57  int status();
65  vec_Vecf<Dim> getOpenSet() const;
67  vec_Vecf<Dim> getCloseSet() const;
69  vec_Vecf<Dim> getAllSet() const;
71  vec_Vec3f getCloud(double h_max = 1);
75  std::shared_ptr<JPS::MapUtil<Dim>> getMapUtil();
76 
85  void setMap(const std::shared_ptr<JPS::MapUtil<Dim>> &map_util,
86  const Vecf<Dim>& pos);
87 
89  bool computePath(const Vecf<Dim>& start, const Vecf<Dim>& goal, const vec_Vecf<Dim>& path);
90 protected:
92  vec_E<std::pair<Veci<Dim>, int8_t>> createMask(int pow);
94  bool plan(const Vecf<Dim> &start, const Vecf<Dim> &goal,
95  decimal_t eps = 1, decimal_t cweight = 0.1);
101  bool checkAvailability(const Veci<Dim> &pn);
102 
104  std::shared_ptr<JPS::MapUtil<Dim>> map_util_;
106  std::shared_ptr<DMP::GraphSearch> graph_search_;
108  std::vector<bool> search_region_;
110  std::vector<int8_t> cmap_;
111 
115  double path_cost_;
123  int status_ = 0;
125  int8_t H_MAX{100};
127  double eps_{0.0};
129  double cweight_{0.1};
137  int pow_{1};
138 
139 };
140 
143 
146 
147 
148 template <int Dim> class IterativeDMPlanner : public DMPlanner<Dim> {
149  public:
150  IterativeDMPlanner(bool verbose = false);
151 
153  bool iterativeComputePath(const Vecf<Dim> &start, const Vecf<Dim> &goal,
154  const vec_Vecf<Dim> &path, int max_iteration);
155 };
156 
159 
162 
163 
164 
165 #endif
int status()
Status of the planner.
Definition: distance_map_planner.cpp:41
std::vector< bool > setPath(const vec_Vecf< Dim > &path, const Vecf< Dim > &radius, bool dense)
set a prior path and get region around it
Definition: distance_map_planner.cpp:171
void setCweight(double c)
Set collision cost weight.
Definition: distance_map_planner.cpp:31
bool computePath(const Vecf< Dim > &start, const Vecf< Dim > &goal, const vec_Vecf< Dim > &path)
Compute the optimal path.
Definition: distance_map_planner.cpp:555
Vecf< Dim > potential_map_range_
xy range of local distance map
Definition: distance_map_planner.h:135
Vecf< Dim > potential_radius_
radius of distance field
Definition: distance_map_planner.h:131
double eps_
heuristic weight
Definition: distance_map_planner.h:127
bool checkAvailability(const Veci< Dim > &pn)
check availability
Definition: distance_map_planner.cpp:292
vec_Vecf< Dim > getAllSet() const
Get all the nodes.
Definition: distance_map_planner.cpp:155
vec_Vecf< Dim > getRawPath()
Get the raw path.
Definition: distance_map_planner.cpp:47
vec_Vecf< Dim > prior_path_
Prior path from planner.
Definition: distance_map_planner.h:117
std::vector< int8_t > cmap_
1-D map array
Definition: distance_map_planner.h:110
vec_Vecf< Dim > getPriorPath()
Get the prior path.
Definition: distance_map_planner.cpp:50
Definition: map_util.h:18
vec_Vecf< Dim > raw_path_
Raw path from planner.
Definition: distance_map_planner.h:119
vec_Vecf< Dim > removeLinePts(const vec_Vecf< Dim > &path)
remove redundant points on the same line
Definition: distance_map_planner.cpp:100
Definition: distance_map_planner.h:148
vec_Vecf< Dim > getOpenSet() const
Get the nodes in open set.
Definition: distance_map_planner.cpp:123
IterativeDMPlanner< 2 > IterativeDMPlanner2D
Iterative Planner for 2D OccMap.
Definition: distance_map_planner.h:158
void setSearchRadius(const Vecf< Dim > &r)
Set search radius around a prior path.
Definition: distance_map_planner.cpp:11
IterativeDMPlanner< 3 > IterativeDMPlanner3D
Iterative Planner for 3D VoxelMap.
Definition: distance_map_planner.h:161
DMPlanner< 2 > DMPlanner2D
Planner for 2D OccMap.
Definition: distance_map_planner.h:142
DMPlanner< 3 > DMPlanner3D
Planner for 3D VoxelMap.
Definition: distance_map_planner.h:145
vec_Vec3f getCloud(double h_max=1)
Get the potential cloud.
Definition: distance_map_planner.cpp:316
MapUtil classes.
void setPow(int pow)
Set the power of potential function .
Definition: distance_map_planner.cpp:36
void setPotentialRadius(const Vecf< Dim > &r)
Set potential radius.
Definition: distance_map_planner.cpp:16
int pow_
power index for creating mask
Definition: distance_map_planner.h:137
std::vector< T, Eigen::aligned_allocator< T > > vec_E
Pre-allocated std::vector for Eigen using vec_E.
Definition: data_type.h:52
int status_
Flag indicating the success of planning.
Definition: distance_map_planner.h:123
Vecf< Dim > search_radius_
radius of searching tunnel
Definition: distance_map_planner.h:133
vec_E< Vecf< N > > vec_Vecf
Vector of Eigen 1D float vector.
Definition: data_type.h:69
vec_E< std::pair< Veci< Dim >, int8_t > > createMask(int pow)
Create the mask for potential distance field.
Definition: distance_map_planner.cpp:355
double path_cost_
Path cost (raw)
Definition: distance_map_planner.h:115
void setMap(const std::shared_ptr< JPS::MapUtil< Dim >> &map_util, const Vecf< Dim > &pos)
Generate distance map.
Definition: distance_map_planner.cpp:395
Eigen::Matrix< int, N, 1 > Veci
Eigen 1D int vector of size N.
Definition: data_type.h:58
Abstract base for planning.
Definition: distance_map_planner.h:16
double cweight_
potential weight
Definition: distance_map_planner.h:129
double decimal_t
Rename the float type used in lib.
Definition: data_type.h:48
bool plan(const Vecf< Dim > &start, const Vecf< Dim > &goal, decimal_t eps=1, decimal_t cweight=0.1)
Need to be specified in Child class, main planning function.
Definition: distance_map_planner.cpp:467
std::shared_ptr< DMP::GraphSearch > graph_search_
The planner back-end.
Definition: distance_map_planner.h:106
void setPotentialMapRange(const Vecf< Dim > &r)
Set the range of potential map, 0 means the whole map.
Definition: distance_map_planner.cpp:21
vec_Vecf< Dim > path_
Modified path for future usage.
Definition: distance_map_planner.h:121
int8_t H_MAX
max potential value
Definition: distance_map_planner.h:125
Defines all data types used in this lib.
vec_Vecf< Dim > removeCornerPts(const vec_Vecf< Dim > &path)
Remove some corner waypoints.
Definition: distance_map_planner.cpp:53
vec_Vecf< Dim > getPath()
Get the modified path.
Definition: distance_map_planner.cpp:44
Eigen::Matrix< decimal_t, N, 1 > Vecf
Eigen 1D float vector of size N.
Definition: data_type.h:55
bool planner_verbose_
Enabled for printing info.
Definition: distance_map_planner.h:113
vec_Vecf< Dim > getCloseSet() const
Get the nodes in close set.
Definition: distance_map_planner.cpp:139
vec_Vecf< Dim > getSearchRegion()
Get the searching region.
Definition: distance_map_planner.cpp:254
vec_E< Vec3f > vec_Vec3f
Vector of type Vec3f.
Definition: data_type.h:92
DMPlanner(bool verbose=false)
Simple constructor.
Definition: distance_map_planner.cpp:4
std::shared_ptr< JPS::MapUtil< Dim > > map_util_
Assume using 3D voxel map for all 2d and 3d planning.
Definition: distance_map_planner.h:104
std::shared_ptr< JPS::MapUtil< Dim > > getMapUtil()
Get the internal map util.
Definition: distance_map_planner.cpp:287
void setEps(double eps)
Set heuristic weight.
Definition: distance_map_planner.cpp:26
std::vector< bool > search_region_
tunnel for visualization
Definition: distance_map_planner.h:108