@@ -1375,7 +1375,7 @@ bool NormalLaneChange::getLaneChangePaths(
1375
1375
std::vector<ExtendedPredictedObject> filtered_objects =
1376
1376
filterObjectsInTargetLane (target_objects, target_lanes);
1377
1377
if (
1378
- !is_stuck && utils::lane_change::passParkedObject (
1378
+ !is_stuck && ! utils::lane_change::passParkedObject (
1379
1379
route_handler, *candidate_path, filtered_objects, lane_change_buffer,
1380
1380
is_goal_in_route, *lane_change_parameters_, object_debug_)) {
1381
1381
debug_print (
@@ -1417,6 +1417,24 @@ PathSafetyStatus NormalLaneChange::isApprovedPathSafe() const
1417
1417
1418
1418
CollisionCheckDebugMap debug_data;
1419
1419
const bool is_stuck = isVehicleStuck (current_lanes);
1420
+
1421
+ const auto & route_handler = *getRouteHandler ();
1422
+ const auto & lc_param = *lane_change_parameters_;
1423
+
1424
+ const auto min_lc_length = utils::lane_change::calcMinimumLaneChangeLength (
1425
+ *lane_change_parameters_,
1426
+ route_handler.getLateralIntervalsToPreferredLane (current_lanes.back ()));
1427
+ const auto is_goal_in_route = route_handler.isInGoalRouteSection (current_lanes.back ());
1428
+
1429
+ const auto has_passed_parked_objects = utils::lane_change::passParkedObject (
1430
+ route_handler, path, target_objects.target_lane , min_lc_length, is_goal_in_route, lc_param,
1431
+ debug_data);
1432
+
1433
+ if (!has_passed_parked_objects) {
1434
+ RCLCPP_DEBUG (logger_, " Lane change has been delayed." );
1435
+ return {false , false };
1436
+ }
1437
+
1420
1438
const auto safety_status = isLaneChangePathSafe (
1421
1439
path, target_objects, lane_change_parameters_->rss_params_for_abort , is_stuck, debug_data);
1422
1440
{
0 commit comments