diff --git a/modules/planning/conf/scenario_side_pass_config.pb.txt b/modules/planning/conf/scenario_side_pass_config.pb.txt index 95b08884e2682b4a82b8ccebde4402f6f46e3106..76f8932266ecbba42922980d990c07f4bf0350ec 100644 --- a/modules/planning/conf/scenario_side_pass_config.pb.txt +++ b/modules/planning/conf/scenario_side_pass_config.pb.txt @@ -10,6 +10,7 @@ side_pass_config: { approach_obstacle_max_stop_speed: 1.0e-5 approach_obstacle_min_stop_distance: 4.0 block_obstacle_min_speed: 0.1 + enable_obstacle_blocked_check: true } stage_config: { stage_type: SIDE_PASS_APPROACH_OBSTACLE diff --git a/modules/planning/proto/planning_config.proto b/modules/planning/proto/planning_config.proto index c16556fe322aa9380725e2fd9c67652498b1b336..cf3f3137e7359cf64aaca00983c49369df68e700 100644 --- a/modules/planning/proto/planning_config.proto +++ b/modules/planning/proto/planning_config.proto @@ -72,6 +72,8 @@ message ScenarioSidePassConfig { optional double approach_obstacle_max_stop_speed = 2 [default = 1.0e-5]; optional double approach_obstacle_min_stop_distance = 3 [default = 4.0]; optional double block_obstacle_min_speed = 4 [default = 0.1]; // m/s + // set to false to work around large vehicle splitting issue in perception + optional bool enable_obstacle_blocked_check = 5 [default = true]; } message ScenarioStopSignUnprotectedConfig { diff --git a/modules/planning/scenarios/side_pass/side_pass_scenario.cc b/modules/planning/scenarios/side_pass/side_pass_scenario.cc index 0005a527489ff33ad97e819c68e8eba46fbcc0de..51a7c202a3c1c218ca5b4e583121a6c65f3c915b 100644 --- a/modules/planning/scenarios/side_pass/side_pass_scenario.cc +++ b/modules/planning/scenarios/side_pass/side_pass_scenario.cc @@ -1,3 +1,4 @@ + /****************************************************************************** * Copyright 2018 The Apollo Authors. All Rights Reserved. * @@ -211,27 +212,29 @@ bool SidePassScenario::HasBlockingObstacle(const Frame& frame) { } bool is_blocked_by_others = false; - for (const auto* other_obstacle : path_decision.obstacles().Items()) { - if (other_obstacle->Id() == obstacle->Id()) { - continue; - } - if (other_obstacle->PerceptionSLBoundary().start_l() > - obstacle->PerceptionSLBoundary().end_l() || - other_obstacle->PerceptionSLBoundary().end_l() < - obstacle->PerceptionSLBoundary().start_l()) { - // not blocking the backside vehicle - continue; - } - - double delta_s = other_obstacle->PerceptionSLBoundary().start_s() - - obstacle->PerceptionSLBoundary().end_s(); - if (delta_s < 0.0 || delta_s > kAdcDistanceThreshold) { - continue; - } else { - // TODO(All): fixed the segmentation bug for large vehicles, otherwise - // the follow line will be problematic. - is_blocked_by_others = true; - break; + if (side_pass_context_.scenario_config_.enable_obstacle_blocked_check()) { + for (const auto* other_obstacle : path_decision.obstacles().Items()) { + if (other_obstacle->Id() == obstacle->Id()) { + continue; + } + if (other_obstacle->PerceptionSLBoundary().start_l() > + obstacle->PerceptionSLBoundary().end_l() || + other_obstacle->PerceptionSLBoundary().end_l() < + obstacle->PerceptionSLBoundary().start_l()) { + // not blocking the backside vehicle + continue; + } + + double delta_s = other_obstacle->PerceptionSLBoundary().start_s() - + obstacle->PerceptionSLBoundary().end_s(); + if (delta_s < 0.0 || delta_s > kAdcDistanceThreshold) { + continue; + } else { + // TODO(All): fixed the segmentation bug for large vehicles, otherwise + // the follow line will be problematic. + is_blocked_by_others = true; + break; + } } } diff --git a/modules/planning/testdata/conf/scenario_side_pass_config.pb.txt b/modules/planning/testdata/conf/scenario_side_pass_config.pb.txt index 95b08884e2682b4a82b8ccebde4402f6f46e3106..76f8932266ecbba42922980d990c07f4bf0350ec 100644 --- a/modules/planning/testdata/conf/scenario_side_pass_config.pb.txt +++ b/modules/planning/testdata/conf/scenario_side_pass_config.pb.txt @@ -10,6 +10,7 @@ side_pass_config: { approach_obstacle_max_stop_speed: 1.0e-5 approach_obstacle_min_stop_distance: 4.0 block_obstacle_min_speed: 0.1 + enable_obstacle_blocked_check: true } stage_config: { stage_type: SIDE_PASS_APPROACH_OBSTACLE