Skip to content

Commit 0c88d49

Browse files
committed
fix warm start condition
Signed-off-by: Mamoru Sobue <[email protected]>
1 parent dc75202 commit 0c88d49

File tree

3 files changed

+24
-30
lines changed

3 files changed

+24
-30
lines changed

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/include/autoware/behavior_path_goal_planner_module/goal_planner_module.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ class GoalPlannerModule : public SceneModuleInterface
304304
bool trigger_thread_on_approach_{false};
305305

306306
// signal path generator and state manager to regenerate path candidates and remain NOT_DECIDED
307-
std::optional<bool> prev_lane_change_status_{};
307+
std::optional<bool> prev_lane_change_detected_{};
308308
bool lane_change_status_changed_{false};
309309

310310
// pre-generate lane parking paths in a separate thread

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/decision_state.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ PathDecisionState PathDecisionStateController::get_next_state(
7676

7777
// if lane change is triggered, reference path for pull over must be reset accordingly
7878
if (lane_change_status_changed) {
79+
RCLCPP_INFO(logger_, "[DecidingPathStatus]: NOT_DECIDED. lane change detected");
7980
next_state.state = PathDecisionState::DecisionKind::NOT_DECIDED;
8081
return next_state;
8182
}

planning/behavior_path_planner/autoware_behavior_path_goal_planner_module/src/goal_planner_module.cpp

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -618,12 +618,6 @@ std::pair<LaneParkingResponse, FreespaceParkingResponse> GoalPlannerModule::sync
618618
vehicle_footprint_, goal_candidates_, getPreviousModuleOutput(),
619619
use_bus_stop_area_ && goal_searcher.bus_stop_area_available());
620620
}
621-
const auto lane_change_status =
622-
goal_planner_utils::find_lane_change_completed_lanelet(
623-
getPreviousModuleOutput().path, planner_data_->route_handler->getLaneletMapPtr(),
624-
planner_data_->route_handler->getRoutingGraphPtr())
625-
.has_value();
626-
627621
// NOTE: for the above reasons, PlannerManager/behavior_path_planner_node ensure that
628622
// planner_data_ is not nullptr, so it is OK to copy as value
629623
// By copying PlannerData as value, the internal shared member variables are also copied
@@ -634,7 +628,7 @@ std::pair<LaneParkingResponse, FreespaceParkingResponse> GoalPlannerModule::sync
634628
lane_parking_request_.value().update(
635629
*planner_data_, getCurrentStatus(), getPreviousModuleOutput(), pull_over_path,
636630
path_decision_controller_.get_current_state(), trigger_thread_on_approach_,
637-
lane_change_status);
631+
lane_change_status_changed_);
638632
// NOTE: RouteHandler holds several shared pointers in it, so just copying PlannerData as
639633
// value does not adds the reference counts of RouteHandler.lanelet_map_ptr_ and others. Since
640634
// behavior_path_planner::run() updates
@@ -697,40 +691,40 @@ void GoalPlannerModule::updateData()
697691
goal_candidates_ = generateGoalCandidates(goal_searcher_.value(), use_bus_stop_area_);
698692
}
699693

700-
const auto lane_change_status =
694+
const auto lane_change_detected =
701695
goal_planner_utils::find_lane_change_completed_lanelet(
702696
getPreviousModuleOutput().path, planner_data_->route_handler->getLaneletMapPtr(),
703697
planner_data_->route_handler->getRoutingGraphPtr())
704698
.has_value();
705699
lane_change_status_changed_ =
706-
prev_lane_change_status_ && prev_lane_change_status_.value() != lane_change_status;
707-
prev_lane_change_status_ = lane_change_status;
700+
prev_lane_change_detected_ && prev_lane_change_detected_.value() != lane_change_detected;
701+
prev_lane_change_detected_ = lane_change_detected;
708702

709703
const lanelet::ConstLanelets current_lanes =
710704
utils::getCurrentLanesFromPath(getPreviousModuleOutput().reference_path, planner_data_);
711705

712-
if (getCurrentStatus() == ModuleStatus::IDLE) {
713-
if (
714-
!trigger_thread_on_approach_ &&
715-
utils::isAllowedGoalModification(planner_data_->route_handler) &&
716-
goal_planner_utils::is_goal_reachable_on_path(
717-
current_lanes, *(planner_data_->route_handler), left_side_parking_)) {
718-
const double self_to_goal_arc_length = utils::getSignedDistance(
719-
planner_data_->self_odometry->pose.pose,
720-
planner_data_->route_handler->getOriginalGoalPose(), current_lanes);
721-
if (self_to_goal_arc_length < parameters_.pull_over_prepare_length) {
722-
trigger_thread_on_approach_ = true;
723-
[[maybe_unused]] const auto send_only_request = syncWithThreads();
724-
RCLCPP_INFO(
725-
getLogger(), "start preparing goal candidates once for goal ahead of %f meter",
726-
self_to_goal_arc_length);
727-
return;
728-
}
706+
if (
707+
!trigger_thread_on_approach_ &&
708+
utils::isAllowedGoalModification(planner_data_->route_handler) &&
709+
goal_planner_utils::is_goal_reachable_on_path(
710+
current_lanes, *(planner_data_->route_handler), left_side_parking_)) {
711+
const double self_to_goal_arc_length = utils::getSignedDistance(
712+
planner_data_->self_odometry->pose.pose, planner_data_->route_handler->getOriginalGoalPose(),
713+
current_lanes);
714+
if (self_to_goal_arc_length < parameters_.pull_over_prepare_length) {
715+
trigger_thread_on_approach_ = true;
716+
[[maybe_unused]] const auto send_only_request = syncWithThreads();
717+
RCLCPP_INFO(
718+
getLogger(), "start preparing goal candidates once for goal ahead of %f meter",
719+
self_to_goal_arc_length);
720+
return;
729721
}
722+
}
723+
724+
if (getCurrentStatus() == ModuleStatus::IDLE) {
730725
if (lane_change_status_changed_) {
731726
[[maybe_unused]] const auto send_only_request = syncWithThreads();
732727
RCLCPP_INFO(getLogger(), "restart preparing goal candidates since lane_change is detected");
733-
return;
734728
}
735729
return;
736730
}
@@ -762,7 +756,6 @@ void GoalPlannerModule::updateData()
762756

763757
const bool upstream_module_has_stopline_except_terminal =
764758
goal_planner_utils::has_stopline_except_terminal(getPreviousModuleOutput().path);
765-
766759
path_decision_controller_.transit_state(
767760
pull_over_path_recv, upstream_module_has_stopline_except_terminal, clock_->now(),
768761
static_target_objects, dynamic_target_objects, planner_data_, occupancy_grid_map_,

0 commit comments

Comments
 (0)