提交 a0a668ec 编写于 作者: J jiangyifei 提交者: Jiangtao Hu

planning: added exit condition for backup stage in sidepass.

上级 d3504aff
......@@ -11,6 +11,7 @@ side_pass_config: {
approach_obstacle_min_stop_distance: 4.0
block_obstacle_min_speed: 0.1
enable_obstacle_blocked_check: true
max_backup_stage_cycle_num: 30
}
stage_config: {
stage_type: SIDE_PASS_APPROACH_OBSTACLE
......
......@@ -74,6 +74,7 @@ message ScenarioSidePassConfig {
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];
optional uint32 max_backup_stage_cycle_num = 6 [default = 30];
}
message ScenarioStopSignUnprotectedConfig {
......
......@@ -36,6 +36,7 @@ struct SidePassContext {
PathData path_data_;
ScenarioSidePassConfig scenario_config_;
int pass_obstacle_stuck_cycle_num_;
uint32_t backup_stage_cycle_num;
};
class SidePassScenario : public Scenario {
......
......@@ -90,7 +90,11 @@ Stage::StageStatus SidePassBackup::Process(
break;
}
if (!has_blocking_obstacle) {
GetContext()->backup_stage_cycle_num += 1;
if (!has_blocking_obstacle ||
GetContext()->backup_stage_cycle_num >
GetContext()->scenario_config_.max_backup_stage_cycle_num()) {
GetContext()->backup_stage_cycle_num = 0;
next_stage_ = ScenarioConfig::NO_STAGE;
return Stage::FINISHED;
}
......@@ -223,6 +227,7 @@ Stage::StageStatus SidePassGeneratePath::Process(
const TrajectoryPoint& planning_start_point, Frame* frame) {
if (!ExecuteTaskOnReferenceLine(planning_start_point, frame)) {
AERROR << "Fail to plan on reference_line.";
GetContext()->backup_stage_cycle_num = 0;
next_stage_ = ScenarioConfig::SIDE_PASS_BACKUP;
return Stage::FINISHED;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册