@@ -1405,7 +1405,7 @@ bool NormalLaneChange::getLaneChangePaths(
1405
1405
std::vector<ExtendedPredictedObject> filtered_objects =
1406
1406
filterObjectsInTargetLane (target_objects, target_lanes);
1407
1407
if (
1408
- !is_stuck && utils::lane_change::passParkedObject (
1408
+ !is_stuck && ! utils::lane_change::passParkedObject (
1409
1409
route_handler, *candidate_path, filtered_objects, lane_change_buffer,
1410
1410
is_goal_in_route, *lane_change_parameters_, object_debug_)) {
1411
1411
debug_print (
@@ -1453,6 +1453,24 @@ PathSafetyStatus NormalLaneChange::isApprovedPathSafe() const
1453
1453
}
1454
1454
CollisionCheckDebugMap debug_data;
1455
1455
const bool is_stuck = isVehicleStuck (current_lanes);
1456
+
1457
+ const auto & route_handler = *getRouteHandler ();
1458
+ const auto & lc_param = *lane_change_parameters_;
1459
+
1460
+ const auto min_lc_length = utils::lane_change::calcMinimumLaneChangeLength (
1461
+ *lane_change_parameters_,
1462
+ route_handler.getLateralIntervalsToPreferredLane (current_lanes.back ()));
1463
+ const auto is_goal_in_route = route_handler.isInGoalRouteSection (current_lanes.back ());
1464
+
1465
+ const auto has_passed_parked_objects = utils::lane_change::passParkedObject (
1466
+ route_handler, path, target_objects.target_lane , min_lc_length, is_goal_in_route, lc_param,
1467
+ debug_data);
1468
+
1469
+ if (!has_passed_parked_objects) {
1470
+ RCLCPP_DEBUG (logger_, " Lane change has been delayed." );
1471
+ return {false , false };
1472
+ }
1473
+
1456
1474
const auto safety_status = isLaneChangePathSafe (
1457
1475
path, target_objects, lane_change_parameters_->rss_params_for_abort , is_stuck, debug_data);
1458
1476
{
0 commit comments