Skip to content

Commit 77059a1

Browse files
refactor(lane_change): update filtered objects only once (#8489)
Signed-off-by: Muhammad Zulfaqar Azmi <zulfaqar.azmi@tier4.jp>
1 parent 85e2660 commit 77059a1

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/scene.hpp

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class NormalLaneChange : public LaneChangeBase
5353

5454
void update_lanes(const bool is_approved) final;
5555

56+
void update_filtered_objects() final;
57+
5658
void updateLaneChangeStatus() override;
5759

5860
std::pair<bool, bool> getSafePath(LaneChangePath & safe_path) const override;

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/include/autoware/behavior_path_lane_change_module/utils/base_class.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ class LaneChangeBase
6767

6868
virtual void update_lanes(const bool is_approved) = 0;
6969

70+
virtual void update_filtered_objects() = 0;
71+
7072
virtual void updateLaneChangeStatus() = 0;
7173

7274
virtual std::pair<bool, bool> getSafePath(LaneChangePath & safe_path) const = 0;
@@ -252,6 +254,7 @@ class LaneChangeBase
252254
std::shared_ptr<LaneChangePath> abort_path_{};
253255
std::shared_ptr<const PlannerData> planner_data_{};
254256
lane_change::CommonDataPtr common_data_ptr_{};
257+
FilteredByLanesExtendedObjects filtered_objects_{};
255258
BehaviorModuleOutput prev_module_output_{};
256259
std::optional<Pose> lane_change_stop_pose_{std::nullopt};
257260

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/interface.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ void LaneChangeInterface::updateData()
7676
universe_utils::ScopedTimeTrack st(__func__, *getTimeKeeper());
7777
module_type_->setPreviousModuleOutput(getPreviousModuleOutput());
7878
module_type_->update_lanes(getCurrentStatus() == ModuleStatus::RUNNING);
79+
module_type_->update_filtered_objects();
7980
module_type_->updateSpecialData();
8081

8182
if (isWaitingApproval() || module_type_->isAbortState()) {

planning/behavior_path_planner/autoware_behavior_path_lane_change_module/src/scene.cpp

+9-6
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ void NormalLaneChange::update_lanes(const bool is_approved)
9999
*common_data_ptr_->lanes_polygon_ptr = create_lanes_polygon(common_data_ptr_);
100100
}
101101

102+
void NormalLaneChange::update_filtered_objects()
103+
{
104+
filtered_objects_ = filterObjects();
105+
}
106+
102107
void NormalLaneChange::updateLaneChangeStatus()
103108
{
104109
universe_utils::ScopedTimeTrack st(__func__, *time_keeper_);
@@ -1412,8 +1417,7 @@ bool NormalLaneChange::getLaneChangePaths(
14121417
return false;
14131418
}
14141419

1415-
const auto filtered_objects = filterObjects();
1416-
const auto target_objects = getTargetObjects(filtered_objects, current_lanes);
1420+
const auto target_objects = getTargetObjects(filtered_objects_, current_lanes);
14171421

14181422
const auto prepare_durations = calcPrepareDuration(current_lanes, target_lanes);
14191423

@@ -1661,7 +1665,7 @@ bool NormalLaneChange::getLaneChangePaths(
16611665

16621666
if (
16631667
!is_stuck && !utils::lane_change::passed_parked_objects(
1664-
common_data_ptr_, *candidate_path, filtered_objects.target_lane_leading,
1668+
common_data_ptr_, *candidate_path, filtered_objects_.target_lane_leading,
16651669
lane_change_buffer, lane_change_debug_.collision_check_objects)) {
16661670
debug_print_lat(
16671671
"Reject: parking vehicle exists in the target lane, and the ego is not in stuck. Skip "
@@ -1849,8 +1853,7 @@ PathSafetyStatus NormalLaneChange::isApprovedPathSafe() const
18491853
return {true, true};
18501854
}
18511855

1852-
const auto filtered_objects = filterObjects();
1853-
const auto target_objects = getTargetObjects(filtered_objects, current_lanes);
1856+
const auto target_objects = getTargetObjects(filtered_objects_, current_lanes);
18541857

18551858
CollisionCheckDebugMap debug_data;
18561859

@@ -1859,7 +1862,7 @@ PathSafetyStatus NormalLaneChange::isApprovedPathSafe() const
18591862
common_data_ptr_->route_handler_ptr->getLateralIntervalsToPreferredLane(current_lanes.back()));
18601863

18611864
const auto has_passed_parked_objects = utils::lane_change::passed_parked_objects(
1862-
common_data_ptr_, path, filtered_objects.target_lane_leading, min_lc_length, debug_data);
1865+
common_data_ptr_, path, filtered_objects_.target_lane_leading, min_lc_length, debug_data);
18631866

18641867
if (!has_passed_parked_objects) {
18651868
RCLCPP_DEBUG(logger_, "Lane change has been delayed.");

0 commit comments

Comments
 (0)