@@ -986,6 +986,9 @@ lane_change::TargetObjects NormalLaneChange::getTargetObjects(
986
986
const lanelet::ConstLanelets & current_lanes) const
987
987
{
988
988
ExtendedPredictedObjects leading_objects = filtered_objects.target_lane_leading ;
989
+ leading_objects.insert (
990
+ leading_objects.end (), filtered_objects.extended_target_lane .begin (),
991
+ filtered_objects.extended_target_lane .end ());
989
992
const auto is_stuck = isVehicleStuck (current_lanes);
990
993
const auto chk_obj_in_curr_lanes = lane_change_parameters_->check_objects_on_current_lanes ;
991
994
if (chk_obj_in_curr_lanes || is_stuck) {
@@ -1083,6 +1086,15 @@ FilteredByLanesExtendedObjects NormalLaneChange::filterObjects() const
1083
1086
extended_target_lane_trailing_objects.push_back (extended_predicted_object);
1084
1087
});
1085
1088
1089
+ ExtendedPredictedObjects extended_target_lane_objects;
1090
+ std::for_each (
1091
+ filtered_by_lanes_objects.extended_target_lane .begin (),
1092
+ filtered_by_lanes_objects.extended_target_lane .end (), [&](const auto & object) {
1093
+ auto extended_predicted_object = utils::lane_change::transform (
1094
+ object, common_parameters, *lane_change_parameters_, is_check_prepare_phase);
1095
+ extended_target_lane_objects.push_back (extended_predicted_object);
1096
+ });
1097
+
1086
1098
ExtendedPredictedObjects extended_current_lane_objects;
1087
1099
std::for_each (
1088
1100
filtered_by_lanes_objects.current_lane .begin (), filtered_by_lanes_objects.current_lane .end (),
@@ -1103,7 +1115,8 @@ FilteredByLanesExtendedObjects NormalLaneChange::filterObjects() const
1103
1115
1104
1116
FilteredByLanesExtendedObjects lane_change_target_objects (
1105
1117
extended_current_lane_objects, extended_target_lane_leading_objects,
1106
- extended_target_lane_trailing_objects, extended_other_lane_objects);
1118
+ extended_target_lane_trailing_objects, extended_target_lane_objects,
1119
+ extended_other_lane_objects);
1107
1120
lane_change_debug_.filtered_objects = lane_change_target_objects;
1108
1121
return lane_change_target_objects;
1109
1122
}
@@ -1140,6 +1153,7 @@ FilteredByLanesObjects NormalLaneChange::filterObjectsByLanelets(
1140
1153
{
1141
1154
std::vector<PredictedObject> target_lane_leading_objects;
1142
1155
std::vector<PredictedObject> target_lane_trailing_objects;
1156
+ std::vector<PredictedObject> extended_target_lane_objects;
1143
1157
std::vector<PredictedObject> current_lane_objects;
1144
1158
std::vector<PredictedObject> other_lane_objects;
1145
1159
@@ -1178,6 +1192,7 @@ FilteredByLanesObjects NormalLaneChange::filterObjectsByLanelets(
1178
1192
current_lane_objects.reserve (reserve_size);
1179
1193
target_lane_leading_objects.reserve (reserve_size);
1180
1194
target_lane_trailing_objects.reserve (reserve_size);
1195
+ extended_target_lane_objects.reserve (reserve_size);
1181
1196
other_lane_objects.reserve (reserve_size);
1182
1197
1183
1198
for (const auto & object : objects.objects ) {
@@ -1212,9 +1227,7 @@ FilteredByLanesObjects NormalLaneChange::filterObjectsByLanelets(
1212
1227
utils::lane_change::is_ahead_of_ego (common_data_ptr_, current_lanes_ref_path, object);
1213
1228
if (object.kinematics .initial_twist_with_covariance .twist .linear .x < 1.0 ) {
1214
1229
if (ahead_of_ego) {
1215
- target_lane_leading_objects.push_back (object);
1216
- } else {
1217
- target_lane_trailing_objects.push_back (object);
1230
+ extended_target_lane_objects.push_back (object);
1218
1231
}
1219
1232
continue ;
1220
1233
}
@@ -1246,7 +1259,7 @@ FilteredByLanesObjects NormalLaneChange::filterObjectsByLanelets(
1246
1259
1247
1260
return {
1248
1261
current_lane_objects, target_lane_leading_objects, target_lane_trailing_objects,
1249
- other_lane_objects};
1262
+ extended_target_lane_objects, other_lane_objects};
1250
1263
}
1251
1264
1252
1265
PathWithLaneId NormalLaneChange::getTargetSegment (
0 commit comments