Skip to content

Commit 0d030d7

Browse files
authored
refactor(goal_planner): make parameters const (#10043)
Signed-off-by: Mamoru Sobue <mamoru.sobue@tier4.jp>
1 parent 04ed652 commit 0d030d7

File tree

2 files changed

+182
-271
lines changed

2 files changed

+182
-271
lines changed

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

+50-75
Original file line numberDiff line numberDiff line change
@@ -288,17 +288,7 @@ class GoalPlannerModule : public SceneModuleInterface
288288
getLogger(), *clock_, 1000, "lane parking and freespace parking callbacks finished");
289289
}
290290

291-
void updateModuleParams(const std::any & parameters) override
292-
{
293-
parameters_ = std::any_cast<std::shared_ptr<GoalPlannerParameters>>(parameters);
294-
if (parameters_->safety_check_params.enable_safety_check) {
295-
ego_predicted_path_params_ =
296-
std::make_shared<EgoPredictedPathParams>(parameters_->ego_predicted_path_params);
297-
objects_filtering_params_ =
298-
std::make_shared<ObjectsFilteringParams>(parameters_->objects_filtering_params);
299-
safety_check_params_ = std::make_shared<SafetyCheckParams>(parameters_->safety_check_params);
300-
}
301-
}
291+
void updateModuleParams([[maybe_unused]] const std::any & parameters) override {}
302292

303293
BehaviorModuleOutput plan() override;
304294
BehaviorModuleOutput planWaitingApproval() override;
@@ -308,63 +298,40 @@ class GoalPlannerModule : public SceneModuleInterface
308298
void updateData() override;
309299

310300
void postProcess() override;
311-
void setParameters(const std::shared_ptr<GoalPlannerParameters> & parameters);
312301
void acceptVisitor(
313302
[[maybe_unused]] const std::shared_ptr<SceneModuleVisitor> & visitor) const override
314303
{
315304
}
316305
CandidateOutput planCandidate() const override { return CandidateOutput{}; }
317306

318307
private:
319-
std::pair<LaneParkingResponse, FreespaceParkingResponse> syncWithThreads();
308+
const GoalPlannerParameters parameters_;
309+
const EgoPredictedPathParams & ego_predicted_path_params_ = parameters_.ego_predicted_path_params;
310+
const ObjectsFilteringParams & objects_filtering_params_ = parameters_.objects_filtering_params;
311+
const SafetyCheckParams safety_check_params_ = parameters_.safety_check_params;
312+
313+
const autoware::vehicle_info_utils::VehicleInfo vehicle_info_;
314+
const autoware::universe_utils::LinearRing2d vehicle_footprint_;
315+
316+
const bool left_side_parking_;
320317

321318
bool trigger_thread_on_approach_{false};
319+
// pre-generate lane parking paths in a separate thread
320+
rclcpp::TimerBase::SharedPtr lane_parking_timer_;
321+
rclcpp::CallbackGroup::SharedPtr lane_parking_timer_cb_group_;
322+
std::atomic<bool> is_lane_parking_cb_running_;
322323
// NOTE: never access to following variables except in updateData()!!!
323324
std::mutex lane_parking_mutex_;
324325
std::optional<LaneParkingRequest> lane_parking_request_;
325326
LaneParkingResponse lane_parking_response_;
326-
327+
// generate freespace parking paths in a separate thread
328+
rclcpp::TimerBase::SharedPtr freespace_parking_timer_;
329+
rclcpp::CallbackGroup::SharedPtr freespace_parking_timer_cb_group_;
330+
std::atomic<bool> is_freespace_parking_cb_running_;
327331
std::mutex freespace_parking_mutex_;
328332
std::optional<FreespaceParkingRequest> freespace_parking_request_;
329333
FreespaceParkingResponse freespace_parking_response_;
330334

331-
/*
332-
* state transitions and plan function used in each state
333-
*
334-
* +--------------------------+
335-
* | RUNNING |
336-
* | planPullOverAsCandidate()|
337-
* +------------+-------------+
338-
* | hasDecidedPath()
339-
* 2 v
340-
* +--------------------------+
341-
* | WAITING_APPROVAL |
342-
* | planPullOverAsCandidate()|
343-
* +------------+-------------+
344-
* | isActivated()
345-
* 3 v
346-
* +--------------------------+
347-
* | RUNNING |
348-
* | planPullOverAsOutput() |
349-
* +--------------------------+
350-
*/
351-
352-
// The start_planner activates when it receives a new route,
353-
// so there is no need to terminate the goal planner.
354-
// If terminating it, it may switch to lane following and could generate an inappropriate path.
355-
bool canTransitSuccessState() override { return false; }
356-
bool canTransitFailureState() override { return false; }
357-
358-
mutable StartGoalPlannerData goal_planner_data_;
359-
360-
std::shared_ptr<GoalPlannerParameters> parameters_;
361-
362-
mutable std::shared_ptr<EgoPredictedPathParams> ego_predicted_path_params_;
363-
mutable std::shared_ptr<ObjectsFilteringParams> objects_filtering_params_;
364-
mutable std::shared_ptr<SafetyCheckParams> safety_check_params_;
365-
366-
autoware::vehicle_info_utils::VehicleInfo vehicle_info_{};
367-
368335
std::unique_ptr<FixedGoalPlannerBase> fixed_goal_planner_;
369336

370337
// goal searcher
@@ -380,8 +347,6 @@ class GoalPlannerModule : public SceneModuleInterface
380347
std::deque<nav_msgs::msg::Odometry::ConstSharedPtr> odometry_buffer_stopped_;
381348
std::deque<nav_msgs::msg::Odometry::ConstSharedPtr> odometry_buffer_stuck_;
382349

383-
autoware::universe_utils::LinearRing2d vehicle_footprint_;
384-
385350
std::optional<PullOverContextData> context_data_{std::nullopt};
386351
// path_decision_controller is updated in updateData(), and used in plan()
387352
PathDecisionStateController path_decision_controller_{getLogger()};
@@ -393,25 +358,41 @@ class GoalPlannerModule : public SceneModuleInterface
393358
// ego may exceed the stop distance, so add a buffer
394359
const double stop_distance_buffer_{2.0};
395360

396-
// for parking policy
397-
bool left_side_parking_{true};
398-
399-
// pre-generate lane parking paths in a separate thread
400-
rclcpp::TimerBase::SharedPtr lane_parking_timer_;
401-
rclcpp::CallbackGroup::SharedPtr lane_parking_timer_cb_group_;
402-
std::atomic<bool> is_lane_parking_cb_running_;
403-
404-
// generate freespace parking paths in a separate thread
405-
rclcpp::TimerBase::SharedPtr freespace_parking_timer_;
406-
rclcpp::CallbackGroup::SharedPtr freespace_parking_timer_cb_group_;
407-
std::atomic<bool> is_freespace_parking_cb_running_;
408-
409361
// debug
410362
mutable GoalPlannerDebugData debug_data_;
411363

412364
// goal seach
413365
GoalCandidates generateGoalCandidates() const;
414366

367+
/*
368+
* state transitions and plan function used in each state
369+
*
370+
* +--------------------------+
371+
* | RUNNING |
372+
* | planPullOverAsCandidate()|
373+
* +------------+-------------+
374+
* | hasDecidedPath()
375+
* 2 v
376+
* +--------------------------+
377+
* | WAITING_APPROVAL |
378+
* | planPullOverAsCandidate()|
379+
* +------------+-------------+
380+
* | isActivated()
381+
* 3 v
382+
* +--------------------------+
383+
* | RUNNING |
384+
* | planPullOverAsOutput() |
385+
* +--------------------------+
386+
*/
387+
388+
// The start_planner activates when it receives a new route,
389+
// so there is no need to terminate the goal planner.
390+
// If terminating it, it may switch to lane following and could generate an inappropriate path.
391+
bool canTransitSuccessState() override { return false; }
392+
bool canTransitFailureState() override { return false; }
393+
394+
std::pair<LaneParkingResponse, FreespaceParkingResponse> syncWithThreads();
395+
415396
// stop or decelerate
416397
void deceleratePath(PullOverPath & pull_over_path) const;
417398
void decelerateForTurnSignal(const Pose & stop_pose, PathWithLaneId & path) const;
@@ -427,7 +408,7 @@ class GoalPlannerModule : public SceneModuleInterface
427408
double calcSignedArcLengthFromEgo(const PathWithLaneId & path, const Pose & pose) const;
428409

429410
// status
430-
bool hasFinishedCurrentPath(const PullOverContextData & ctx_data);
411+
bool hasFinishedCurrentPath(const PullOverContextData & ctx_data) const;
431412
double calcModuleRequestLength() const;
432413
void decideVelocity(PullOverPath & pull_over_path);
433414
void updateStatus(const BehaviorModuleOutput & output);
@@ -480,9 +461,6 @@ class GoalPlannerModule : public SceneModuleInterface
480461
std::pair<double, double> calcDistanceToPathChange(
481462
const PullOverContextData & context_data) const;
482463

483-
// safety check
484-
void initializeSafetyCheckParameters();
485-
SafetyCheckParams createSafetyCheckParams() const;
486464
/*
487465
void updateSafetyCheckTargetObjectsData(
488466
const PredictedObjects & filtered_objects, const TargetObjectsOnLane & target_objects_on_lane,
@@ -494,11 +472,8 @@ class GoalPlannerModule : public SceneModuleInterface
494472
*/
495473
std::pair<bool, utils::path_safety_checker::CollisionCheckDebugMap> isSafePath(
496474
const std::shared_ptr<const PlannerData> planner_data, const bool found_pull_over_path,
497-
const std::optional<PullOverPath> & pull_over_path_opt, const PathDecisionState & prev_data,
498-
const GoalPlannerParameters & parameters,
499-
const std::shared_ptr<EgoPredictedPathParams> & ego_predicted_path_params,
500-
const std::shared_ptr<ObjectsFilteringParams> & objects_filtering_params,
501-
const std::shared_ptr<SafetyCheckParams> & safety_check_params) const;
475+
const std::optional<PullOverPath> & pull_over_path_opt,
476+
const PathDecisionState & prev_data) const;
502477

503478
// debug
504479
void setDebugData(const PullOverContextData & context_data);

0 commit comments

Comments
 (0)