Skip to content

Commit 1b69a5d

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

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
@@ -1248,7 +1248,6 @@ void ObstacleCruisePlannerNode::checkConsistency(
12481248
const auto current_closest_stop_obstacle =
12491249
obstacle_cruise_utils::getClosestStopObstacle(stop_obstacles);
12501250

1251-
// If previous closest obstacle ptr is not set
12521251
if (!prev_closest_stop_obstacle_ptr_) {
12531252
if (current_closest_stop_obstacle) {
12541253
prev_closest_stop_obstacle_ptr_ =
@@ -1257,44 +1256,23 @@ void ObstacleCruisePlannerNode::checkConsistency(
12571256
return;
12581257
}
12591258

1260-
// Put previous closest target obstacle if necessary
12611259
const auto predicted_object_itr = std::find_if(
12621260
predicted_objects.objects.begin(), predicted_objects.objects.end(),
12631261
[&](PredictedObject predicted_object) {
12641262
return tier4_autoware_utils::toHexString(predicted_object.object_id) ==
12651263
prev_closest_stop_obstacle_ptr_->uuid;
12661264
});
1267-
1268-
// If previous closest obstacle is not in the current perception lists
1269-
// just return the current target obstacles
1265+
// If previous closest obstacle disappear from the perception result, do nothing anymore.
12701266
if (predicted_object_itr == predicted_objects.objects.end()) {
12711267
return;
12721268
}
12731269

1274-
// Previous closest obstacle is in the perception lists
1275-
const auto obstacle_itr = std::find_if(
1270+
const auto is_disappeared_from_stop_obstacle = std::none_of(
12761271
stop_obstacles.begin(), stop_obstacles.end(),
12771272
[&](const auto & obstacle) { return obstacle.uuid == prev_closest_stop_obstacle_ptr_->uuid; });
1278-
1279-
// Previous closest obstacle is both in the perception lists and target obstacles
1280-
if (obstacle_itr != stop_obstacles.end()) {
1281-
if (current_closest_stop_obstacle) {
1282-
if ((current_closest_stop_obstacle->uuid == prev_closest_stop_obstacle_ptr_->uuid)) {
1283-
// prev_closest_obstacle is current_closest_stop_obstacle just return the target
1284-
// obstacles(in target obstacles)
1285-
prev_closest_stop_obstacle_ptr_ =
1286-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1287-
} else {
1288-
// New obstacle becomes new stop obstacle
1289-
prev_closest_stop_obstacle_ptr_ =
1290-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1291-
}
1292-
} else {
1293-
// Previous closest stop obstacle becomes cruise obstacle
1294-
prev_closest_stop_obstacle_ptr_ = nullptr;
1295-
}
1296-
} else {
1297-
// prev obstacle is not in the target obstacles, but in the perception list
1273+
if (is_disappeared_from_stop_obstacle) {
1274+
// re-evaluate as a stop candidate, and overwrite the current decision if "maintain stop"
1275+
// condition is satisfied
12981276
const double elapsed_time = (current_time - prev_closest_stop_obstacle_ptr_->stamp).seconds();
12991277
if (
13001278
predicted_object_itr->kinematics.initial_twist_with_covariance.twist.linear.x <
@@ -1303,13 +1281,13 @@ void ObstacleCruisePlannerNode::checkConsistency(
13031281
stop_obstacles.push_back(*prev_closest_stop_obstacle_ptr_);
13041282
return;
13051283
}
1284+
}
13061285

1307-
if (current_closest_stop_obstacle) {
1308-
prev_closest_stop_obstacle_ptr_ =
1309-
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1310-
} else {
1311-
prev_closest_stop_obstacle_ptr_ = nullptr;
1312-
}
1286+
if (current_closest_stop_obstacle) {
1287+
prev_closest_stop_obstacle_ptr_ =
1288+
std::make_shared<StopObstacle>(*current_closest_stop_obstacle);
1289+
} else {
1290+
prev_closest_stop_obstacle_ptr_ = nullptr;
13131291
}
13141292
}
13151293

0 commit comments

Comments
 (0)