提交 8f175910 编写于 作者: H Hongyi 提交者: PAN Jiacheng

Prediction: refactor evaluator_manager logic for new caution

上级 209856ff
......@@ -238,35 +238,40 @@ void EvaluatorManager::EvaluateObstacle(Obstacle* obstacle,
// Select different evaluators depending on the obstacle's type.
switch (obstacle->type()) {
case PerceptionObstacle::VEHICLE: {
if (obstacle->HasJunctionFeatureWithExits() &&
!obstacle->IsCloseToJunctionExit()) {
if (obstacle->latest_feature().priority().priority() ==
ObstaclePriority::CAUTION) {
if (obstacle->latest_feature().priority().priority() ==
ObstaclePriority::CAUTION) {
if (obstacle->IsNearJunction()) {
evaluator = GetEvaluator(vehicle_in_junction_caution_evaluator_);
CHECK_NOTNULL(evaluator);
if (evaluator->Evaluate(obstacle, obstacles_container)) {
break;
}
}
evaluator = GetEvaluator(vehicle_in_junction_evaluator_);
CHECK_NOTNULL(evaluator);
evaluator->Evaluate(obstacle, obstacles_container);
} else if (obstacle->IsOnLane()) {
if (obstacle->latest_feature().priority().priority() ==
ObstaclePriority::CAUTION) {
} else if (obstacle->IsOnLane()) {
evaluator = GetEvaluator(vehicle_on_lane_caution_evaluator_);
} else {
evaluator = GetEvaluator(vehicle_on_lane_evaluator_);
evaluator = GetEvaluator(vehicle_default_caution_evaluator_);
}
CHECK_NOTNULL(evaluator);
if (evaluator->GetName() == "LANE_SCANNING_EVALUATOR") {
evaluator->Evaluate(obstacle, obstacles_container, dynamic_env);
// Evaluate and break if success
if (evaluator->Evaluate(obstacle, obstacles_container)) {
break;
} else {
evaluator->Evaluate(obstacle, obstacles_container);
AERROR << "Obstacle: " << obstacle->id()
<< " caution evaluator failed, downgrade to normal level!";
}
}
// if obstacle is not caution or caution_evaluator run failed
if (obstacle->HasJunctionFeatureWithExits() &&
!obstacle->IsCloseToJunctionExit()) {
evaluator = GetEvaluator(vehicle_in_junction_evaluator_);
} else if (obstacle->IsOnLane()) {
evaluator = GetEvaluator(vehicle_on_lane_evaluator_);
} else {
ADEBUG << "Obstacle: " << obstacle->id()
<< " is neither on lane, nor in junction. Skip evaluating.";
break;
}
CHECK_NOTNULL(evaluator);
if (evaluator->GetName() == "LANE_SCANNING_EVALUATOR") {
evaluator->Evaluate(obstacle, obstacles_container, dynamic_env);
} else {
evaluator->Evaluate(obstacle, obstacles_container);
}
break;
}
......
......@@ -108,6 +108,9 @@ class EvaluatorManager {
ObstacleConf::EvaluatorType vehicle_in_junction_caution_evaluator_ =
ObstacleConf::JUNCTION_MAP_EVALUATOR;
ObstacleConf::EvaluatorType vehicle_default_caution_evaluator_ =
ObstacleConf::SEMANTIC_LSTM_EVALUATOR;
ObstacleConf::EvaluatorType cyclist_on_lane_evaluator_ =
ObstacleConf::CYCLIST_KEEP_LANE_EVALUATOR;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册