diff --git a/modules/planning/common/planning_gflags.cc b/modules/planning/common/planning_gflags.cc index e945fd995c7f88e1ce21a00ebab1f0adf2078a55..64eb3a61d8043ef1cdb8f226f6aacb9d0c4a38fa 100644 --- a/modules/planning/common/planning_gflags.cc +++ b/modules/planning/common/planning_gflags.cc @@ -449,3 +449,7 @@ DEFINE_double( DEFINE_double(max_trajectory_len, 1000.0, "(unit: meter) max possible trajectory length."); + +DEFINE_double(side_pass_min_front_obstacle_distance, 2.0, + "(unit: meter) if the distance between front obstacle is less " + "than this threshold, side_pass scenario is skipped for safety."); diff --git a/modules/planning/common/planning_gflags.h b/modules/planning/common/planning_gflags.h index ebfb5e5b9fdb7f9ad21a41ae67d3cfd4a20d2d97..3a110e78030152a7e9165c1eadf6c283545d7d98 100644 --- a/modules/planning/common/planning_gflags.h +++ b/modules/planning/common/planning_gflags.h @@ -233,3 +233,4 @@ DECLARE_bool(enable_record_debug); DECLARE_double(default_front_clear_distance); DECLARE_double(max_trajectory_len); +DECLARE_double(side_pass_min_front_obstacle_distance); diff --git a/modules/planning/scenarios/side_pass/side_pass_scenario.cc b/modules/planning/scenarios/side_pass/side_pass_scenario.cc index e1c29a6bbf7f17b8b6e9897501f68568b2d4e0d5..649aee3cdbaa37b61384aad7c61483ad54b3abee 100644 --- a/modules/planning/scenarios/side_pass/side_pass_scenario.cc +++ b/modules/planning/scenarios/side_pass/side_pass_scenario.cc @@ -188,6 +188,12 @@ bool SidePassScenario::HasBlockingObstacle(const Frame& frame) { continue; } + if (adc_sl_boundary.end_s() + FLAGS_side_pass_min_front_obstacle_distance > + obstacle->PerceptionSLBoundary().start_s()) { + // front obstacle is too close to side pass + continue; + } + // check driving_width constexpr double kLBufferThreshold = 0.3; // unit: m const auto& reference_line = reference_line_info.reference_line();