@@ -496,15 +496,12 @@ bool isEgoOutOfRoute(
496
496
const Pose & goal_pose = (modified_goal && modified_goal->uuid == route_handler->getRouteUuid ())
497
497
? modified_goal->pose
498
498
: route_handler->getGoalPose ();
499
- const auto shoulder_lanes = route_handler->getShoulderLanelets ();
500
499
501
500
lanelet::ConstLanelet goal_lane;
502
- const bool is_failed_getting_lanelet = std::invoke ([&]() {
503
- if (utils::isInLanelets (goal_pose, shoulder_lanes)) {
504
- return !lanelet::utils::query::getClosestLanelet (shoulder_lanes, goal_pose, &goal_lane);
505
- }
506
- return !route_handler->getGoalLanelet (&goal_lane);
507
- });
501
+ const auto shoulder_goal_lanes = route_handler->getShoulderLaneletsAtPose (goal_pose);
502
+ if (!shoulder_goal_lanes.empty ()) goal_lane = shoulder_goal_lanes.front ();
503
+ const auto is_failed_getting_lanelet =
504
+ shoulder_goal_lanes.empty () && !route_handler->getGoalLanelet (&goal_lane);
508
505
if (is_failed_getting_lanelet) {
509
506
RCLCPP_WARN_STREAM (
510
507
rclcpp::get_logger (" behavior_path_planner" ).get_child (" util" ), " cannot find goal lanelet" );
@@ -527,14 +524,7 @@ bool isEgoOutOfRoute(
527
524
528
525
// If ego vehicle is out of the closest lanelet, return true
529
526
// Check if ego vehicle is in shoulder lane
530
- const bool is_in_shoulder_lane = std::invoke ([&]() {
531
- lanelet::Lanelet closest_shoulder_lanelet;
532
- if (!lanelet::utils::query::getClosestLanelet (
533
- shoulder_lanes, self_pose, &closest_shoulder_lanelet)) {
534
- return false ;
535
- }
536
- return lanelet::utils::isInLanelet (self_pose, closest_shoulder_lanelet);
537
- });
527
+ const bool is_in_shoulder_lane = !route_handler->getShoulderLaneletsAtPose (self_pose).empty ();
538
528
// Check if ego vehicle is in road lane
539
529
const bool is_in_road_lane = std::invoke ([&]() {
540
530
lanelet::ConstLanelet closest_road_lane;
@@ -1662,13 +1652,6 @@ bool isAllowedGoalModification(const std::shared_ptr<RouteHandler> & route_handl
1662
1652
bool checkOriginalGoalIsInShoulder (const std::shared_ptr<RouteHandler> & route_handler)
1663
1653
{
1664
1654
const Pose & goal_pose = route_handler->getOriginalGoalPose ();
1665
- const auto shoulder_lanes = route_handler->getShoulderLanelets ();
1666
-
1667
- lanelet::ConstLanelet closest_shoulder_lane{};
1668
- if (lanelet::utils::query::getClosestLanelet (shoulder_lanes, goal_pose, &closest_shoulder_lane)) {
1669
- return lanelet::utils::isInLanelet (goal_pose, closest_shoulder_lane, 0.1 );
1670
- }
1671
-
1672
- return false ;
1655
+ return !route_handler->getShoulderLaneletsAtPose (goal_pose).empty ();
1673
1656
}
1674
1657
} // namespace behavior_path_planner::utils
0 commit comments