@@ -1464,7 +1464,9 @@ BehaviorModuleOutput GoalPlannerModule::planPullOverAsCandidate(
1464
1464
1465
1465
// if pull over path candidates generation is not finished, use previous module output
1466
1466
if (context_data.lane_parking_response .pull_over_path_candidates .empty ()) {
1467
- return getPreviousModuleOutput ();
1467
+ auto stop_path = getPreviousModuleOutput ();
1468
+ stop_path.path = generateStopPath (context_data, detail);
1469
+ return stop_path;
1468
1470
}
1469
1471
1470
1472
BehaviorModuleOutput output{};
@@ -1735,11 +1737,13 @@ PathWithLaneId GoalPlannerModule::generateStopPath(
1735
1737
// calculate search start offset pose from the closest goal candidate pose with
1736
1738
// approximate_pull_over_distance_ ego vehicle decelerates to this position. or if no feasible
1737
1739
// stop point is found, stop at this position.
1738
- const auto closest_goal_candidate =
1739
- goal_searcher.getClosetGoalCandidateAlongLanes (goal_candidates_, planner_data_);
1740
+ const auto closest_searched_goal_candidate =
1741
+ goal_searcher.getClosestGoalCandidateAlongLanes (goal_candidates_, planner_data_);
1742
+ const auto closest_goal_candidate = closest_searched_goal_candidate
1743
+ ? closest_searched_goal_candidate.value ().goal_pose
1744
+ : route_handler->getOriginalGoalPose ();
1740
1745
const auto decel_pose = calcLongitudinalOffsetPose (
1741
- extended_prev_path.points , closest_goal_candidate.goal_pose .position ,
1742
- -approximate_pull_over_distance_);
1746
+ extended_prev_path.points , closest_goal_candidate.position , -approximate_pull_over_distance_);
1743
1747
1744
1748
// if not approved stop road lane.
1745
1749
// stop point priority is
@@ -2066,12 +2070,18 @@ double GoalPlannerModule::calcSignedArcLengthFromEgo(
2066
2070
void GoalPlannerModule::deceleratePath (PullOverPath & pull_over_path) const
2067
2071
{
2068
2072
universe_utils::ScopedTimeTrack st (__func__, *time_keeper_);
2073
+ assert (goal_searcher_);
2074
+ const auto & goal_searcher = goal_searcher_.value ();
2069
2075
2070
2076
// decelerate before the search area start
2071
- const auto closest_goal_candidate =
2072
- goal_searcher_->getClosetGoalCandidateAlongLanes (goal_candidates_, planner_data_);
2077
+ const auto & route_handler = planner_data_->route_handler ;
2078
+ const auto closest_searched_goal_candidate =
2079
+ goal_searcher.getClosestGoalCandidateAlongLanes (goal_candidates_, planner_data_);
2080
+ const auto closest_goal_candidate = closest_searched_goal_candidate
2081
+ ? closest_searched_goal_candidate.value ().goal_pose
2082
+ : route_handler->getOriginalGoalPose ();
2073
2083
const auto decel_pose = calcLongitudinalOffsetPose (
2074
- pull_over_path.full_path ().points , closest_goal_candidate.goal_pose . position ,
2084
+ pull_over_path.full_path ().points , closest_goal_candidate.position ,
2075
2085
-approximate_pull_over_distance_);
2076
2086
auto & first_path = pull_over_path.partial_paths ().front ();
2077
2087
if (decel_pose) {
0 commit comments