141 const std::vector<double>& XYbounds,
142 const std::vector<std::vector<common::math::LineSegment2d>>& obstacles_linesegments_vec,
147 const std::vector<double>& XYbounds,
148 const std::vector<std::vector<common::math::LineSegment2d>>& obstacles_linesegments_vec,
149 const std::vector<std::vector<common::math::LineSegment2d>>& soft_boundary_linesegments_vec = {{}});
150 double CheckDpMap(
const double sx,
const double sy);
153 double EuclidDistance(
const double x1,
const double y1,
const double x2,
const double y2);
154 std::vector<std::shared_ptr<Node2d>> GenerateNextNodes(std::shared_ptr<Node2d> node);
155 bool CheckConstraints(std::shared_ptr<Node2d> node);
156 void LoadGridAStarResult(GridAStartResult* result);
159 double xy_grid_resolution_ = 0.0;
160 double node_radius_ = 0.0;
161 std::vector<double> XYbounds_;
162 double max_grid_x_ = 0.0;
163 double max_grid_y_ = 0.0;
164 std::shared_ptr<Node2d> start_node_;
165 std::shared_ptr<Node2d> end_node_;
166 std::shared_ptr<Node2d> final_node_;
167 std::vector<std::vector<common::math::LineSegment2d>> obstacles_linesegments_vec_;
170 bool operator()(
const std::pair<std::string, double>& left,
const std::pair<std::string, double>& right)
const {
171 return left.second >= right.second;
174 std::unordered_map<std::string, std::shared_ptr<Node2d>> dp_map_;
178 explicit GridSearch(
const WarmStartConfig& warm_start_conf);
182 void AddSoftCost(
const std::vector<std::vector<common::math::LineSegment2d>>& soft_boundary);
186 common::math::Vec2d origin_index,
187 std::unordered_set<std::string>& close_set);
188 std::vector<std::vector<common::math::LineSegment2d>> soft_boundary_linesegments_vec_;
189 double esdf_range_ = 0.0;
190 bool use_esdf_ =
false;
191 std::vector<int> dx_{1, 0, -1, 0};
192 std::vector<int> dy_{0, -1, 0, 1};
bool GenerateDpMap(const double ex, const double ey, const std::vector< double > &XYbounds, const std::vector< std::vector< common::math::LineSegment2d > > &obstacles_linesegments_vec, const std::vector< std::vector< common::math::LineSegment2d > > &soft_boundary_linesegments_vec={{}})
bool GenerateAStarPath(const double sx, const double sy, const double ex, const double ey, const std::vector< double > &XYbounds, const std::vector< std::vector< common::math::LineSegment2d > > &obstacles_linesegments_vec, GridAStartResult *result)