46   calc_loader_(
"dlux_global_planner", 
"dlux_global_planner::PotentialCalculator"),
    47   traceback_loader_(
"dlux_global_planner", 
"dlux_global_planner::Traceback"),
    48   potential_grid_(
HIGH_POTENTIAL), cached_goal_x_(-1), cached_goal_y_(-1), potential_pub_(potential_grid_)
    62   std::string plugin_name;
    63   planner_nh.
param(
"potential_calculator", plugin_name, std::string(
"dlux_plugins::AStar"));
    64   ROS_INFO_NAMED(
"DluxGlobalPlanner", 
"Using PotentialCalculator \"%s\"", plugin_name.c_str());
    68   planner_nh.
param(
"traceback", plugin_name, std::string(
"dlux_plugins::GradientPath"));
    69   ROS_INFO_NAMED(
"DluxGlobalPlanner", 
"Using Traceback \"%s\"", plugin_name.c_str());
    77   bool publish_potential;
    78   planner_nh.
param(
"publish_potential", publish_potential, 
false);
    79   if (publish_potential)
    91   for (geometry_msgs::Pose2D pose : path.poses)
   102                                                 const nav_2d_msgs::Pose2DStamped& goal)
   120   if (costmap(x, y) >= costmap.INSCRIBED_INFLATED_OBSTACLE)
   130   if (costmap(x, y) >= costmap.INSCRIBED_INFLATED_OBSTACLE)
   136   bool cached_plan_available = 
false;
   143     cached_plan_available = 
true;
   149   double path_cost = 0.0;  
   154                    "Got plan! Cost: %.2f, %d updated potentials, path of length %.2f with %zu poses.",
   170                                            unsigned int goal_x, 
unsigned int goal_y)
   175   cached_goal_y_ = goal_y;
 
boost::shared_ptr< Traceback > traceback_
#define ROS_INFO_NAMED(name,...)
virtual bool shouldReturnCachedPathImmediately() const 
Whether the planner should always return a valid cached path without running the planning algorithm...
static const unsigned char INSCRIBED_INFLATED_OBSTACLE
nav_core2::Costmap::Ptr costmap_
CostInterpreter::Ptr cost_interpreter_
PotentialGrid potential_grid_
TFSIMD_FORCE_INLINE const tfScalar & y() const 
boost::shared_ptr< PotentialCalculator > calculator_
pluginlib::ClassLoader< PotentialCalculator > calc_loader_
void init(ros::NodeHandle &nh, const std::string &nav_grid_topic="grid", const std::string &occupancy_grid_topic="costmap", const std::string &update_area_topic="update_area", bool publish_updates=true, ros::Duration full_publish_cycle=ros::Duration(0), ros::Duration update_publish_cycle=ros::Duration(0))
std::string getFrameId() const 
double improvement_threshold_
const float HIGH_POTENTIAL
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val) const 
nav_2d_msgs::Path2D cached_path_
void setInfo(const NavGridInfo &new_info) override
unsigned int cached_goal_y_
TFSIMD_FORCE_INLINE const tfScalar & x() const 
virtual bool hasValidCachedPath(const geometry_msgs::Pose2D &local_goal, unsigned int goal_x, unsigned int goal_y)
Check whether there is a valid cached path where the goal hasn't changed. 
unsigned int cached_goal_x_
Plugin-based global wavefront planner that conforms to the nav_core2 GlobalPlanner interface...
nav_grid_pub_sub::ScaleGridPublisher< float > potential_pub_
pluginlib::ClassLoader< Traceback > traceback_loader_
double getPlanLength(const nav_2d_msgs::Path2D &plan, const unsigned int start_index=0)
virtual bool shouldReturnNewPath(const nav_2d_msgs::Path2D &new_path, const double new_path_cost) const 
Given a cached path is available and a new path, should the new path be the one returned? 
nav_2d_msgs::Path2D makePlan(const nav_2d_msgs::Pose2DStamped &start, const nav_2d_msgs::Pose2DStamped &goal) override
NavGridInfo getInfo() const 
virtual bool isPlanValid(const nav_2d_msgs::Path2D &path) const 
Check the costmap for any obstacles on this path. 
geometry_msgs::Pose2D transformStampedPose(const TFListenerPtr tf, const nav_2d_msgs::Pose2DStamped &pose, const std::string &frame_id)
void initialize(const ros::NodeHandle &parent, const std::string &name, TFListenerPtr tf, nav_core2::Costmap::Ptr costmap) override
std::shared_ptr< Costmap > Ptr
std::shared_ptr< tf::TransformListener > TFListenerPtr
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
bool worldToGridBounded(const NavGridInfo &info, double wx, double wy, unsigned int &mx, unsigned int &my)