Skip to content

Commit d5e691e

Browse files
refactor(obstacle_cruise): refactor a function checkConsistency() (#7105)
refactor Signed-off-by: Yuki Takagi <yuki.takagi@tier4.jp>
1 parent 02775eb commit d5e691e

File tree

1 file changed

+11
-33
lines changed
  • planning/obstacle_cruise_planner/src

1 file changed

+11
-33
lines changed

planning/obstacle_cruise_planner/src/node.cpp

+11-33
Original file line numberDiff line numberDiff line change
@@ -1378,7 +1378,6 @@ void ObstacleCruisePlannerNode::checkConsistency(
13781378
const auto current_closest_stop_obstacle =
13791379
obstacle_cruise_utils::getClosestStopObstacle(stop_obstacles);
13801380

1381-
// If previous closest obstacle ptr is not set
13821381
if (!prev_closest_stop_obstacle_ptr_) {
13831382
if (current_closest_stop_obstacle) {
13841383
prev_closest_stop_obstacle_ptr_ =
@@ -1387,44 +1386,23 @@ void ObstacleCruisePlannerNode::checkConsistency(
13871386
return;
13881387
}
13891388

1390-
// Put previous closest target obstacle if necessary
13911389
const auto predicted_object_itr = std::find_if(
13921390
predicted_objects.objects.begin(), predicted_objects.objects.end(),
13931391
[&](PredictedObject predicted_object) {
13941392
return tier4_autoware_utils::toHexString(predicted_object.object_id) ==
13951393
prev_closest_stop_obstacle_ptr_->uuid;
13961394
});
1397-
1398-
// If previous closest obstacle is not in the current perception lists
1399-
// just return the current target obstacles
1395+
// If previous closest obstacle disappear from the perception result, do nothing anymore.
14001396
if (predicted_object_itr == predicted_objects.objects.end()) {
14011397
return;
14021398
}
14031399

1404-
// Previous closest obstacle is in the perception lists
1405-
const auto obstacle_itr = std::find_if(
1400+
const auto is_disappeared_from_stop_obstacle = std::none_of(
14061401
stop_obstacles.begin(), stop_obstacles.end(),
14071402
[&](const auto & obstacle) { return obstacle.uuid == prev_closest_stop_obstacle_ptr_->uuid; });
1408-
1409-
// Previous closest obstacle is both in the perception lists and target obstacles
1410-
if (obstacle_itr != stop_obstacles.end()) {
1411-
if (current_closest_stop_obstacle) {
1412-
if ((current_closest_stop_obstacle->uuid == prev_closest_stop_obstacle_ptr_->uuid)) {
1413-
// prev_closest_obstacle is current_closest_stop_obstacle just return the target
1414-
// obstacles(in target obstacles)
1415-
prev_closest_stop_obstacle_ptr_ =
1416-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1417-
} else {
1418-
// New obstacle becomes new stop obstacle
1419-
prev_closest_stop_obstacle_ptr_ =
1420-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1421-
}
1422-
} else {
1423-
// Previous closest stop obstacle becomes cruise obstacle
1424-
prev_closest_stop_obstacle_ptr_ = nullptr;
1425-
}
1426-
} else {
1427-
// prev obstacle is not in the target obstacles, but in the perception list
1403+
if (is_disappeared_from_stop_obstacle) {
1404+
// re-evaluate as a stop candidate, and overwrite the current decision if "maintain stop"
1405+
// condition is satisfied
14281406
const double elapsed_time = (current_time - prev_closest_stop_obstacle_ptr_->stamp).seconds();
14291407
if (
14301408
predicted_object_itr->kinematics.initial_twist_with_covariance.twist.linear.x <
@@ -1433,13 +1411,13 @@ void ObstacleCruisePlannerNode::checkConsistency(
14331411
stop_obstacles.push_back(*prev_closest_stop_obstacle_ptr_);
14341412
return;
14351413
}
1414+
}
14361415

1437-
if (current_closest_stop_obstacle) {
1438-
prev_closest_stop_obstacle_ptr_ =
1439-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1440-
} else {
1441-
prev_closest_stop_obstacle_ptr_ = nullptr;
1442-
}
1416+
if (current_closest_stop_obstacle) {
1417+
prev_closest_stop_obstacle_ptr_ =
1418+
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1419+
} else {
1420+
prev_closest_stop_obstacle_ptr_ = nullptr;
14431421
}
14441422
}
14451423

0 commit comments

Comments
 (0)