8 #ifndef MPL_PLANNER_BASE_H     9 #define MPL_PLANNER_BASE_H    18 template <
int Dim, 
typename Coord>
    32     for (
const auto &it : 
ss_ptr_->hm_) {
    33       if (it.second && !it.second->pred_coord.empty()) {
    34         for (
unsigned int i = 0; i < it.second->pred_coord.size(); i++) {
    35           Coord key = it.second->pred_coord[i];
    38           if (std::isinf(it.second->pred_action_cost[i])) 
continue;
    41                                it.second->pred_action_id[i], pr);
    48       printf(
"number of states in hm: %zu, number of valid prs: %zu\n",
    49              ss_ptr_->hm_.size(), prs.size());
    57     for (
const auto &it : 
ss_ptr_->hm_) {
    58       if (it.second && !it.second->pred_coord.empty()) {
    59         for (
unsigned int i = 0; i < it.second->pred_coord.size(); i++) {
    60           Coord key = it.second->pred_coord[i];
    62           ENV_->forward_action(key, it.second->pred_action_id[i], pr);
    70           "getAllPrimitives number of states in hm: %zu, number of prs: %zu\n",
    71           ss_ptr_->hm_.size(), prs.size());
    79     for (
const auto &it : 
ss_ptr_->pq_) ps.push_back(it.second->coord.pos);
    86     for (
const auto &it : 
ss_ptr_->hm_) {
    87       if (it.second && it.second->iterationclosed)
    88         ps.push_back(it.second->coord.pos);
    96     for (
const auto &it : 
ss_ptr_->hm_) {
    97       if (it.second && !it.second->iterationopened)
    98         ps.push_back(it.second->coord.pos);
   108     for (
const auto &it : 
ss_ptr_->hm_) {
   110         auto coord = it.second->coord;
   112         if (state.use_vel && (state.vel - coord.vel).norm() > 1e-3) add = 
false;
   113         if (state.use_acc && (state.acc - coord.acc).norm() > 1e-3) add = 
false;
   114         if (state.use_jrk && (state.jrk - coord.jrk).norm() > 1e-3) add = 
false;
   119           ps.push_back(coord.pos);
   121           for (
const auto &it : vels) {
   122             if ((it - coord.vel).norm() < 1e-3) {
   128           if (new_vel) vels.push_back(coord.vel);
   133     for (
const auto &it : vels)
   134       std::cout << 
"vel: " << it.transpose() << std::endl;
   135     std::cout << 
"=========================" << std::endl;
   144     return ENV_->expanded_edges_;
   173       printf(
"[PlannerBase] use Lifelong Planning A*\n");
   175       printf(
"[PlannerBase] use normal A*\n");
   198     ENV_->set_yaw_max(yaw);
   234     ENV_->set_heur_ignore_dynamics(ignore);
   236       printf(
"[PlannerBase] set heur_ignore_dynamics: %d\n", ignore);
   250     ENV_->set_prior_trajectory(traj);
   257     ENV_->set_tol_pos(tol_pos);
   258     ENV_->set_tol_vel(tol_vel);
   259     ENV_->set_tol_acc(tol_acc);
   261       printf(
"[PlannerBase] set tol_pos: %f\n", tol_pos);
   262       printf(
"[PlannerBase] set tol_vel: %f\n", tol_vel);
   263       printf(
"[PlannerBase] set tol_acc: %f\n", tol_acc);
   275   bool plan(
const Coord &start, 
const Coord &goal) {
   277       start.print(
"Start:");
   283     if (!
ENV_->is_free(start.pos)) {
   289     std::unique_ptr<MPL::GraphSearch<Dim, Coord>> planner_ptr(
   306     ENV_->set_goal(goal);
   308     ENV_->expanded_nodes_.clear();
   309     ENV_->expanded_edges_.clear();
   329   std::shared_ptr<MPL::env_base<Dim>> 
ENV_;
   331   std::shared_ptr<MPL::StateSpace<Dim, Coord>> 
ss_ptr_;
 Trajectory< Dim > getTraj() const
Get optimal trajectory. 
Definition: planner_base.h:28
 
void setMaxNum(int num)
Set max number of expansion. 
Definition: planner_base.h:240
 
bool planner_verbose_
Enabled to display debug message. 
Definition: planner_base.h:343
 
void setJmax(decimal_t j)
Set max jerk in each axis. 
Definition: planner_base.h:191
 
bool use_lpastar_
Enable LPAstar for planning. 
Definition: planner_base.h:341
 
vec_E< Primitive< Dim > > getExpandedEdges() const
Get expanded edges, for A* it should be the same as the close set. 
Definition: planner_base.h:143
 
Definition: map_util.h:12
 
void reset()
Reset state space. 
Definition: planner_base.h:164
 
std::shared_ptr< MPL::env_base< Dim > > ENV_
Environment class. 
Definition: planner_base.h:329
 
std::shared_ptr< MPL::StateSpace< Dim, Coord > > ss_ptr_
Planner workspace. 
Definition: planner_base.h:331
 
void getSubStateSpace(int time_step)
Prune state space. 
Definition: planner_base.h:155
 
#define ANSI_COLOR_RED
Set red font in printf funtion. 
Definition: data_type.h:16
 
bool initialized()
Check if the planner has been initialized. 
Definition: planner_base.h:25
 
void setTmax(decimal_t t)
Set max time step to explore. 
Definition: planner_base.h:203
 
vec_Vecf< Dim > getCloseSet() const
Get points in close set. 
Definition: planner_base.h:84
 
backend of graph search, implemetation of A* and Lifelong Planning A* 
 
GraphSearch class. 
Definition: graph_search.h:20
 
void setDt(decimal_t dt)
Set dt for each primitive. 
Definition: planner_base.h:209
 
Trajectory class. 
Definition: trajectory.h:43
 
void checkValidation()
Check tree validation. 
Definition: planner_base.h:161
 
void setYawmax(decimal_t yaw)
Set max jerk in each axis. 
Definition: planner_base.h:197
 
vec_Vecf< Dim > getStates(const Coord &state) const
Get points at certain state. 
Definition: planner_base.h:104
 
vec_E< Primitive< Dim > > getValidPrimitives() const
Get expanded collision free primitives. 
Definition: planner_base.h:30
 
bool plan(const Coord &start, const Coord &goal)
Planning thread. 
Definition: planner_base.h:275
 
void setWyaw(decimal_t w)
Set weight for cost in time. 
Definition: planner_base.h:221
 
#define ANSI_COLOR_CYAN
Set cyan font in printf funtion. 
Definition: data_type.h:36
 
int max_num_
Maxmum number of expansion, -1 means no limitation. 
Definition: planner_base.h:339
 
std::vector< T, Eigen::aligned_allocator< T > > vec_E
Pre-allocated std::vector for Eigen using vec_E. 
Definition: data_type.h:53
 
decimal_t getTrajCost() const
Get trajectory total cost. 
Definition: planner_base.h:158
 
vec_E< Vecf< N > > vec_Vecf
Vector of Eigen 1D float vector. 
Definition: data_type.h:70
 
vec_Vecf< Dim > getNullSet() const
Get points neither in open nor close set. 
Definition: planner_base.h:94
 
void setPriorTrajectory(const Trajectory< Dim > &traj)
Set prior trajectory. 
Definition: planner_base.h:249
 
void setTol(decimal_t tol_pos, decimal_t tol_vel=-1, decimal_t tol_acc=-1)
Set tolerance in geometric and dynamic spaces. 
Definition: planner_base.h:255
 
State space. 
Definition: state_space.h:83
 
double decimal_t
Rename the float type used in lib. 
Definition: data_type.h:49
 
void setW(decimal_t w)
Set weight for cost in time. 
Definition: planner_base.h:215
 
decimal_t traj_cost_
Total cost of final trajectory. 
Definition: planner_base.h:335
 
void setHeurIgnoreDynamics(bool ignore)
Calculate heuristic using dynamics. 
Definition: planner_base.h:233
 
vec_Vecf< Dim > getExpandedNodes() const
Get expanded nodes, for A* it should be the same as the close set. 
Definition: planner_base.h:140
 
#define ANSI_COLOR_RESET
Reset font color in printf funtion. 
Definition: data_type.h:40
 
void setU(const vec_E< VecDf > &U)
Set U. 
Definition: planner_base.h:246
 
void setVmax(decimal_t v)
Set max vel in each axis. 
Definition: planner_base.h:179
 
void setLPAstar(bool use_lpastar)
Set max vel in each axis. 
Definition: planner_base.h:170
 
Primitive class. 
Definition: primitive.h:206
 
vec_Vecf< Dim > getOpenSet() const
Get points in open set. 
Definition: planner_base.h:77
 
void setAmax(decimal_t a)
Set max acc in each axis. 
Definition: planner_base.h:185
 
PlannerBase(bool verbose=false)
Simple constructor. 
Definition: planner_base.h:22
 
decimal_t epsilon_
Greedy searching parameter. 
Definition: planner_base.h:337
 
vec_E< Primitive< Dim > > getAllPrimitives() const
Get expanded primitives. 
Definition: planner_base.h:55
 
Trajectory< Dim > traj_
Optimal trajectory. 
Definition: planner_base.h:333
 
int getExpandedNum() const
Get number of expanded nodes. 
Definition: planner_base.h:148
 
Motion planning base util class. 
Definition: planner_base.h:19
 
void setEpsilon(decimal_t eps)
Set greedy searching param. 
Definition: planner_base.h:227