Skip to content

Commit 1e3f92c

Browse files
fix preceding lanes
Signed-off-by: Zulfaqar Azmi <zulfaqar.azmi@tier4.jp>
1 parent 59d45e6 commit 1e3f92c

File tree

4 files changed

+28
-47
lines changed
  • planning
    • behavior_path_lane_change_module
    • behavior_path_planner_common

4 files changed

+28
-47
lines changed

planning/behavior_path_lane_change_module/include/behavior_path_lane_change_module/scene.hpp

-5
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,6 @@ class NormalLaneChange : public LaneChangeBase
175175
const utils::path_safety_checker::RSSparams & rss_params,
176176
CollisionCheckDebugMap & debug_data) const;
177177

178-
LaneChangeTargetObjectIndices filterObject(
179-
const PredictedObjects & objects, const lanelet::ConstLanelets & current_lanes,
180-
const lanelet::ConstLanelets & target_lanes,
181-
const lanelet::ConstLanelets & target_backward_lanes) const;
182-
183178
//! @brief Check if the ego vehicle is in stuck by a stationary obstacle.
184179
//! @param obstacle_check_distance Distance to check ahead for any objects that might be
185180
//! obstructing ego path. It makes sense to use values like the maximum lane change distance.

planning/behavior_path_lane_change_module/src/scene.cpp

+11-31
Original file line numberDiff line numberDiff line change
@@ -1005,42 +1005,22 @@ void NormalLaneChange::filterObjectsByLanelets(
10051005

10061006
// get backward lanes
10071007
const auto backward_length = lane_change_parameters_->backward_lane_length;
1008-
const auto target_backward_lanes = [&]() -> std::vector<lanelet::ConstLanelets> {
1009-
if (target_lanes.empty()) {
1010-
return {};
1011-
}
1012-
1013-
const auto arc_length = lanelet::utils::getArcCoordinates(target_lanes, current_pose);
1014-
1015-
if (arc_length.length >= backward_length) {
1016-
return {};
1017-
}
1018-
1019-
const auto & front_lane = target_lanes.front();
1020-
return route_handler->getPrecedingLaneletSequence(
1021-
front_lane, std::abs(backward_length - arc_length.length), {front_lane});
1022-
}();
1008+
const auto target_backward_lanes =
1009+
utils::getPrecedingLanelets(*route_handler, target_lanes, current_pose, backward_length);
10231010

10241011
{
10251012
lane_change_debug_.current_lanes = current_lanes;
10261013
lane_change_debug_.target_lanes = target_lanes;
10271014

1028-
lanelet::ConstLanelets backward_lanes{};
1029-
const auto num_of_lanes = std::invoke([&target_backward_lanes]() {
1030-
size_t sum{0};
1031-
for (const auto & lanes : target_backward_lanes) {
1032-
sum += lanes.size();
1033-
}
1034-
return sum;
1035-
});
1036-
1037-
backward_lanes.reserve(num_of_lanes);
1038-
1039-
for (const auto & lanes : target_backward_lanes) {
1040-
backward_lanes.insert(backward_lanes.end(), lanes.begin(), lanes.end());
1041-
}
1042-
1043-
lane_change_debug_.target_backward_lanes = backward_lanes;
1015+
// TODO(Azu) change the type to std::vector<lanelet::ConstLanelet>
1016+
lane_change_debug_.target_backward_lanes.clear();
1017+
std::for_each(
1018+
target_backward_lanes.begin(), target_backward_lanes.end(),
1019+
[&](const lanelet::ConstLanelets & target_backward_lane) {
1020+
lane_change_debug_.target_backward_lanes.insert(
1021+
lane_change_debug_.target_backward_lanes.end(), target_backward_lane.begin(),
1022+
target_backward_lane.end());
1023+
});
10441024
}
10451025

10461026
const auto expanded_target_lanes = utils::lane_change::generateExpandedLanelets(

planning/behavior_path_planner_common/include/behavior_path_planner_common/utils/utils.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,10 @@ lanelet::ConstLanelets extendPrevLane(
299299
lanelet::ConstLanelets extendLanes(
300300
const std::shared_ptr<RouteHandler> route_handler, const lanelet::ConstLanelets & lanes);
301301

302+
std::vector<lanelet::ConstLanelets> getPrecedingLanelets(
303+
const RouteHandler & route_handler, const lanelet::ConstLanelets & target_lanes,
304+
const Pose & current_pose, const double backward_length);
305+
302306
lanelet::ConstLanelets getBackwardLanelets(
303307
const RouteHandler & route_handler, const lanelet::ConstLanelets & target_lanes,
304308
const Pose & current_pose, const double backward_length);

planning/behavior_path_planner_common/src/utils/utils.cpp

+13-11
Original file line numberDiff line numberDiff line change
@@ -1513,8 +1513,7 @@ lanelet::ConstLanelets getExtendedCurrentLanesFromPath(
15131513
return lanes;
15141514
}
15151515

1516-
// TODO(Azu): In the future, get back lanelet within `to_back_dist` [m] from queried lane
1517-
lanelet::ConstLanelets getBackwardLanelets(
1516+
std::vector<lanelet::ConstLanelets> getPrecedingLanelets(
15181517
const RouteHandler & route_handler, const lanelet::ConstLanelets & target_lanes,
15191518
const Pose & current_pose, const double backward_length)
15201519
{
@@ -1529,18 +1528,21 @@ lanelet::ConstLanelets getBackwardLanelets(
15291528
}
15301529

15311530
const auto & front_lane = target_lanes.front();
1532-
const auto preceding_lanes = route_handler.getPrecedingLaneletSequence(
1531+
return route_handler.getPrecedingLaneletSequence(
15331532
front_lane, std::abs(backward_length - arc_length.length), {front_lane});
1533+
}
15341534

1535-
lanelet::ConstLanelets backward_lanes{};
1536-
const auto num_of_lanes = std::invoke([&preceding_lanes]() {
1537-
size_t sum{0};
1538-
for (const auto & lanes : preceding_lanes) {
1539-
sum += lanes.size();
1540-
}
1541-
return sum;
1542-
});
1535+
lanelet::ConstLanelets getBackwardLanelets(
1536+
const RouteHandler & route_handler, const lanelet::ConstLanelets & target_lanes,
1537+
const Pose & current_pose, const double backward_length)
1538+
{
1539+
const auto preceding_lanes =
1540+
getPrecedingLanelets(route_handler, target_lanes, current_pose, backward_length);
1541+
const auto calc_sum = [](size_t sum, const auto & lanes) { return sum + lanes.size(); };
1542+
const auto num_of_lanes =
1543+
std::accumulate(preceding_lanes.begin(), preceding_lanes.end(), 0u, calc_sum);
15431544

1545+
lanelet::ConstLanelets backward_lanes{};
15441546
backward_lanes.reserve(num_of_lanes);
15451547

15461548
for (const auto & lanes : preceding_lanes) {

0 commit comments

Comments
 (0)