@@ -330,8 +330,9 @@ TargetObjectsOnLane createTargetObjectsOnLane(
330
330
331
331
lanelet::ConstLanelets all_left_lanelets;
332
332
lanelet::ConstLanelets all_right_lanelets;
333
+ // TODO(sugahara): consider right side parking and define right shoulder lanelets
334
+ lanelet::ConstLanelets all_left_shoulder_lanelets;
333
335
334
- // Define lambda functions to update left and right lanelets
335
336
const auto update_left_lanelets = [&](const lanelet::ConstLanelet & target_lane) {
336
337
const auto left_lanelets = route_handler->getAllLeftSharedLinestringLanelets (
337
338
target_lane, include_opposite, invert_opposite);
@@ -345,13 +346,23 @@ TargetObjectsOnLane createTargetObjectsOnLane(
345
346
all_right_lanelets.end (), right_lanelets.begin (), right_lanelets.end ());
346
347
};
347
348
348
- // Update left and right lanelets for each current lane
349
+ const auto update_left_shoulder_lanelet = [&](const lanelet::ConstLanelet & target_lane) {
350
+ lanelet::ConstLanelet neighbor_shoulder_lane{};
351
+ const bool shoulder_lane_is_found =
352
+ route_handler->getLeftShoulderLanelet (target_lane, &neighbor_shoulder_lane);
353
+ if (shoulder_lane_is_found) {
354
+ all_left_shoulder_lanelets.insert (all_left_shoulder_lanelets.end (), neighbor_shoulder_lane);
355
+ }
356
+ };
357
+
349
358
for (const auto & current_lane : current_lanes) {
350
359
update_left_lanelets (current_lane);
351
360
update_right_lanelets (current_lane);
361
+ update_left_shoulder_lanelet (current_lane);
352
362
}
353
363
354
364
TargetObjectsOnLane target_objects_on_lane{};
365
+
355
366
const auto append_objects_on_lane = [&](auto & lane_objects, const auto & check_lanes) {
356
367
std::for_each (
357
368
filtered_objects.objects .begin (), filtered_objects.objects .end (), [&](const auto & object) {
@@ -362,7 +373,7 @@ TargetObjectsOnLane createTargetObjectsOnLane(
362
373
});
363
374
};
364
375
365
- // TODO(Sugahara): Consider shoulder and other lane objects
376
+ // TODO(Sugahara): Consider other lane objects
366
377
if (object_lane_configuration.check_current_lane && !current_lanes.empty ()) {
367
378
append_objects_on_lane (target_objects_on_lane.on_current_lane , current_lanes);
368
379
}
@@ -372,6 +383,9 @@ TargetObjectsOnLane createTargetObjectsOnLane(
372
383
if (object_lane_configuration.check_right_lane && !all_right_lanelets.empty ()) {
373
384
append_objects_on_lane (target_objects_on_lane.on_right_lane , all_right_lanelets);
374
385
}
386
+ if (object_lane_configuration.check_shoulder_lane && !all_left_shoulder_lanelets.empty ()) {
387
+ append_objects_on_lane (target_objects_on_lane.on_shoulder_lane , all_left_shoulder_lanelets);
388
+ }
375
389
376
390
return target_objects_on_lane;
377
391
}
0 commit comments