Skip to content

Commit f2e309d

Browse files
feat(start_planner): prevent hindering rear vehicles (autowarefoundation#6545)
* wip add function to check if other vehicles can pass Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * further refactoring Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * change breaks for return Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * added way to check closest overhang point to target centerline Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * wip get distance to left and right bounds Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * add check for param dereferencing Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * check gap and rear vehicle width Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * bugfix boolean condition was inverted Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * refactor Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * rename param Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * remove prints Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * use a better function to get the previous lanelets Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * update docs Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * update description Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * typo Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * update readme Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * Use the merging side to choose what lane bound to use Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * delete unused function Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> * add debug message Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com> --------- Signed-off-by: Daniel Sanchez <danielsanchezaran@gmail.com>
1 parent 5a9e616 commit f2e309d

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed

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+
lanelet::ConstLanelets getBackwardLanelets(
303+
const RouteHandler & route_handler, const lanelet::ConstLanelets & target_lanes,
304+
const Pose & current_pose, const double backward_length);
305+
302306
lanelet::ConstLanelets getExtendedCurrentLanes(
303307
const std::shared_ptr<const PlannerData> & planner_data);
304308

planning/behavior_path_planner_common/src/utils/path_safety_checker/objects_filtering.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ PredictedObjects filterObjects(
7878
const std::shared_ptr<ObjectsFilteringParams> & params)
7979
{
8080
// Guard
81-
if (objects->objects.empty()) {
81+
if (objects->objects.empty() || !params) {
8282
return PredictedObjects();
8383
}
8484

planning/behavior_path_planner_common/src/utils/utils.cpp

+37
Original file line numberDiff line numberDiff line change
@@ -1514,6 +1514,43 @@ lanelet::ConstLanelets getExtendedCurrentLanesFromPath(
15141514
return lanes;
15151515
}
15161516

1517+
// TODO(Azu): In the future, get back lanelet within `to_back_dist` [m] from queried lane
1518+
lanelet::ConstLanelets getBackwardLanelets(
1519+
const RouteHandler & route_handler, const lanelet::ConstLanelets & target_lanes,
1520+
const Pose & current_pose, const double backward_length)
1521+
{
1522+
if (target_lanes.empty()) {
1523+
return {};
1524+
}
1525+
1526+
const auto arc_length = lanelet::utils::getArcCoordinates(target_lanes, current_pose);
1527+
1528+
if (arc_length.length >= backward_length) {
1529+
return {};
1530+
}
1531+
1532+
const auto & front_lane = target_lanes.front();
1533+
const auto preceding_lanes = route_handler.getPrecedingLaneletSequence(
1534+
front_lane, std::abs(backward_length - arc_length.length), {front_lane});
1535+
1536+
lanelet::ConstLanelets backward_lanes{};
1537+
const auto num_of_lanes = std::invoke([&preceding_lanes]() {
1538+
size_t sum{0};
1539+
for (const auto & lanes : preceding_lanes) {
1540+
sum += lanes.size();
1541+
}
1542+
return sum;
1543+
});
1544+
1545+
backward_lanes.reserve(num_of_lanes);
1546+
1547+
for (const auto & lanes : preceding_lanes) {
1548+
backward_lanes.insert(backward_lanes.end(), lanes.begin(), lanes.end());
1549+
}
1550+
1551+
return backward_lanes;
1552+
}
1553+
15171554
lanelet::ConstLanelets calcLaneAroundPose(
15181555
const std::shared_ptr<RouteHandler> route_handler, const Pose & pose, const double forward_length,
15191556
const double backward_length, const double dist_threshold, const double yaw_threshold)

0 commit comments

Comments
 (0)