Skip to content

Commit 60b7b81

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

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
@@ -1375,7 +1375,6 @@ void ObstacleCruisePlannerNode::checkConsistency(
13751375
const auto current_closest_stop_obstacle =
13761376
obstacle_cruise_utils::getClosestStopObstacle(stop_obstacles);
13771377

1378-
// If previous closest obstacle ptr is not set
13791378
if (!prev_closest_stop_obstacle_ptr_) {
13801379
if (current_closest_stop_obstacle) {
13811380
prev_closest_stop_obstacle_ptr_ =
@@ -1384,44 +1383,23 @@ void ObstacleCruisePlannerNode::checkConsistency(
13841383
return;
13851384
}
13861385

1387-
// Put previous closest target obstacle if necessary
13881386
const auto predicted_object_itr = std::find_if(
13891387
predicted_objects.objects.begin(), predicted_objects.objects.end(),
13901388
[&](PredictedObject predicted_object) {
13911389
return tier4_autoware_utils::toHexString(predicted_object.object_id) ==
13921390
prev_closest_stop_obstacle_ptr_->uuid;
13931391
});
1394-
1395-
// If previous closest obstacle is not in the current perception lists
1396-
// just return the current target obstacles
1392+
// If previous closest obstacle disappear from the perception result, do nothing anymore.
13971393
if (predicted_object_itr == predicted_objects.objects.end()) {
13981394
return;
13991395
}
14001396

1401-
// Previous closest obstacle is in the perception lists
1402-
const auto obstacle_itr = std::find_if(
1397+
const auto is_disappeared_from_stop_obstacle = std::none_of(
14031398
stop_obstacles.begin(), stop_obstacles.end(),
14041399
[&](const auto & obstacle) { return obstacle.uuid == prev_closest_stop_obstacle_ptr_->uuid; });
1405-
1406-
// Previous closest obstacle is both in the perception lists and target obstacles
1407-
if (obstacle_itr != stop_obstacles.end()) {
1408-
if (current_closest_stop_obstacle) {
1409-
if ((current_closest_stop_obstacle->uuid == prev_closest_stop_obstacle_ptr_->uuid)) {
1410-
// prev_closest_obstacle is current_closest_stop_obstacle just return the target
1411-
// obstacles(in target obstacles)
1412-
prev_closest_stop_obstacle_ptr_ =
1413-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1414-
} else {
1415-
// New obstacle becomes new stop obstacle
1416-
prev_closest_stop_obstacle_ptr_ =
1417-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1418-
}
1419-
} else {
1420-
// Previous closest stop obstacle becomes cruise obstacle
1421-
prev_closest_stop_obstacle_ptr_ = nullptr;
1422-
}
1423-
} else {
1424-
// prev obstacle is not in the target obstacles, but in the perception list
1400+
if (is_disappeared_from_stop_obstacle) {
1401+
// re-evaluate as a stop candidate, and overwrite the current decision if "maintain stop"
1402+
// condition is satisfied
14251403
const double elapsed_time = (current_time - prev_closest_stop_obstacle_ptr_->stamp).seconds();
14261404
if (
14271405
predicted_object_itr->kinematics.initial_twist_with_covariance.twist.linear.x <
@@ -1430,13 +1408,13 @@ void ObstacleCruisePlannerNode::checkConsistency(
14301408
stop_obstacles.push_back(*prev_closest_stop_obstacle_ptr_);
14311409
return;
14321410
}
1411+
}
14331412

1434-
if (current_closest_stop_obstacle) {
1435-
prev_closest_stop_obstacle_ptr_ =
1436-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1437-
} else {
1438-
prev_closest_stop_obstacle_ptr_ = nullptr;
1439-
}
1413+
if (current_closest_stop_obstacle) {
1414+
prev_closest_stop_obstacle_ptr_ =
1415+
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1416+
} else {
1417+
prev_closest_stop_obstacle_ptr_ = nullptr;
14401418
}
14411419
}
14421420

0 commit comments

Comments
 (0)