15 #ifndef NAV2_SMAC_PLANNER__OBSTACLE_HEURISTIC_HPP_
16 #define NAV2_SMAC_PLANNER__OBSTACLE_HEURISTIC_HPP_
21 #include "nav2_smac_planner/constants.hpp"
22 #include "nav2_smac_planner/types.hpp"
23 #include "nav2_costmap_2d/costmap_2d_ros.hpp"
25 namespace nav2_smac_planner
28 typedef std::pair<float, uint64_t> ObstacleHeuristicElement;
31 bool operator()(
const ObstacleHeuristicElement & a,
const ObstacleHeuristicElement & b)
const
33 return a.first > b.first;
37 typedef std::vector<ObstacleHeuristicElement> ObstacleHeuristicQueue;
62 std::shared_ptr<nav2_costmap_2d::Costmap2DROS> costmap_ros_i,
63 const unsigned int & start_x,
const unsigned int & start_y,
64 const unsigned int & goal_x,
const unsigned int & goal_y,
65 const bool downsample_obstacle_heuristic);
75 const float & cost_penalty,
76 const bool use_quadratic_cost_penalty,
77 const bool downsample_obstacle_heuristic);
79 inline float distanceHeuristic2D(
80 const uint64_t idx,
const unsigned int size_x,
81 const unsigned int target_x,
const unsigned int target_y)
83 int dx =
static_cast<int>(idx % size_x) -
static_cast<int>(target_x);
84 int dy =
static_cast<int>(idx / size_x) -
static_cast<int>(target_y);
85 return std::sqrt(dx * dx + dy * dy);
89 LookupTable obstacle_heuristic_lookup_table_;
90 ObstacleHeuristicQueue obstacle_heuristic_queue_;
91 std::shared_ptr<nav2_costmap_2d::Costmap2DROS> costmap_ros;
Obstacle Heuristic implementation for graph, Hybrid-A*.
ObstacleHeuristic()
A constructor for nav2_smac_planner::ObstacleHeuristic.
float getObstacleHeuristic(const Coordinates &node_coords, const float &cost_penalty, const bool use_quadratic_cost_penalty, const bool downsample_obstacle_heuristic)
Compute the Obstacle heuristic.
void resetObstacleHeuristic(std::shared_ptr< nav2_costmap_2d::Costmap2DROS > costmap_ros_i, const unsigned int &start_x, const unsigned int &start_y, const unsigned int &goal_x, const unsigned int &goal_y, const bool downsample_obstacle_heuristic)
Compute the wavefront heuristic.
~ObstacleHeuristic()
A destructor for nav2_smac_planner::ObstacleHeuristic.
Implementation of coordinate2d structure.