26 #include <unordered_map> 30 #include "gtest/gtest.h" 32 #include "modules/planning/proto/planning_config.pb.h" 56 const std::shared_ptr<DependencyInjector>& injector);
72 void InitPathBoundsDecider(
const Frame& frame,
75 common::TrajectoryPoint InferFrontAxeCenterFromRearAxeCenter(
76 const common::TrajectoryPoint& traj_point);
94 std::vector<std::tuple<double, double, double>>*
const path_bound,
95 std::string*
const blocking_obstacle_id,
96 std::string*
const borrow_lane_type);
115 std::vector<std::tuple<double, double, double>>*
const path_bound);
119 std::vector<std::tuple<double, double, double>>*
const path_bound);
123 std::vector<std::tuple<double, double, double>>*
const path_bound);
125 int IsPointWithinPathBound(
128 const std::vector<std::tuple<double, double, double>>& path_bound);
130 bool FindDestinationPullOverS(
132 const std::vector<std::tuple<double, double, double>>& path_bound,
133 double* pull_over_s);
135 double* pull_over_s);
137 bool SearchPullOverPosition(
139 const std::vector<std::tuple<double, double, double>>& path_bound,
140 std::tuple<double, double, double, int>*
const pull_over_configuration);
145 void RemoveRedundantPathBoundaries(
146 std::vector<PathBoundary>*
const candidate_path_boundaries);
148 bool IsContained(
const std::vector<std::pair<double, double>>& lhs,
149 const std::vector<std::pair<double, double>>& rhs);
156 bool InitPathBoundary(
158 std::vector<std::tuple<double, double, double>>*
const path_bound);
165 bool GetBoundaryFromRoads(
167 std::vector<std::tuple<double, double, double>>*
const path_bound);
174 bool GetBoundaryFromLanes(
177 std::vector<std::tuple<double, double, double>>*
const path_bound,
178 std::string*
const borrow_lane_type);
185 bool GetBoundaryFromADC(
187 std::vector<std::tuple<double, double, double>>*
const path_bound);
194 bool GetBoundaryFromLanesAndADC(
197 std::vector<std::tuple<double, double, double>>*
const path_bound,
198 std::string*
const borrow_lane_type,
bool is_fallback_lanechange =
false);
204 void UpdatePullOverBoundaryByLaneBoundary(
206 std::vector<std::tuple<double, double, double>>*
const path_bound);
208 void ConvertBoundarySAxisFromLaneCenterToRefLine(
210 std::vector<std::tuple<double, double, double>>*
const path_bound);
212 void GetBoundaryFromLaneChangeForbiddenZone(
214 std::vector<std::tuple<double, double, double>>*
const path_bound);
220 bool GetBoundaryFromStaticObstacles(
222 std::vector<std::tuple<double, double, double>>*
const path_boundaries,
223 std::string*
const blocking_obstacle_id);
225 std::vector<std::tuple<int, double, double, double, std::string>>
226 SortObstaclesForSweepLine(
229 std::vector<std::vector<std::tuple<double, double, double>>>
230 ConstructSubsequentPathBounds(
231 const std::vector<std::tuple<int, double, double, double, std::string>>&
233 size_t path_idx,
size_t obs_idx,
234 std::unordered_map<std::string, std::tuple<bool, double>>*
const 236 std::vector<std::tuple<double, double, double>>*
const curr_path_bounds);
238 std::vector<std::vector<bool>> DecidePassDirections(
239 double l_min,
double l_max,
240 const std::vector<std::tuple<int, double, double, double, std::string>>&
241 new_entering_obstacles);
249 double GetBufferBetweenADCCenterAndEdge();
261 bool UpdatePathBoundaryWithBuffer(
262 size_t idx,
double left_bound,
double right_bound,
263 std::vector<std::tuple<double, double, double>>*
const path_boundaries,
264 bool is_left_lane_bound =
false,
bool is_right_lane_bound =
false);
275 bool UpdatePathBoundaryAndCenterLineWithBuffer(
276 size_t idx,
double left_bound,
double right_bound,
277 std::vector<std::tuple<double, double, double>>*
const path_boundaries,
278 double*
const center_line);
288 bool UpdatePathBoundary(
289 size_t idx,
double left_bound,
double right_bound,
290 std::vector<std::tuple<double, double, double>>*
const path_boundaries);
295 const int path_blocked_idx,
296 std::vector<std::tuple<double, double, double>>*
const path_boundaries);
300 void PathBoundsDebugString(
301 const std::vector<std::tuple<double, double, double>>& path_boundaries);
304 const double check_s,
307 void RecordDebugInfo(
308 const std::vector<std::tuple<double, double, double>>& path_boundaries,
309 const std::string& debug_name,
313 double adc_frenet_s_ = 0.0;
314 double adc_frenet_sd_ = 0.0;
315 double adc_frenet_l_ = 0.0;
316 double adc_frenet_ld_ = 0.0;
317 double adc_l_to_lane_center_ = 0.0;
318 double adc_lane_width_ = 0.0;
320 FRIEND_TEST(PathBoundsDeciderTest, InitPathBoundary);
321 FRIEND_TEST(PathBoundsDeciderTest, GetBoundaryFromLanesAndADC);
constexpr double kPulloverLonSearchCoeff
Definition: path_bounds_decider.h:45
constexpr double kPathBoundsDeciderResolution
Definition: path_bounds_decider.h:40
PathDecision represents all obstacle decisions on one path.
Definition: path_decision.h:38
Definition: path_bounds_decider.h:48
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Planning module main class. It processes GPS and IMU as input, to generate planning info...
Frame holds all data for one planning cycle.
Definition: frame.h:61
ReferenceLineInfo holds all data for one reference line.
Definition: reference_line_info.h:54
constexpr double kDefaultLaneWidth
Definition: path_bounds_decider.h:41
constexpr double kPulloverLatSearchCoeff
Definition: path_bounds_decider.h:46
constexpr double kDefaultRoadWidth
Definition: path_bounds_decider.h:42
PathBoundsDecider(const TaskConfig &config, const std::shared_ptr< DependencyInjector > &injector)
constexpr double kPathBoundsDeciderHorizon
Definition: path_bounds_decider.h:39
LaneBorrowInfo
Definition: path_bounds_decider.h:50
A general class to denote the return status of an API call. It can either be an OK status for success...
Definition: status.h:43
constexpr int kNumExtraTailBoundPoint
Definition: path_bounds_decider.h:44