@@ -288,17 +288,7 @@ class GoalPlannerModule : public SceneModuleInterface
288
288
getLogger (), *clock_, 1000 , " lane parking and freespace parking callbacks finished" );
289
289
}
290
290
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 {}
302
292
303
293
BehaviorModuleOutput plan () override ;
304
294
BehaviorModuleOutput planWaitingApproval () override ;
@@ -308,63 +298,40 @@ class GoalPlannerModule : public SceneModuleInterface
308
298
void updateData () override ;
309
299
310
300
void postProcess () override ;
311
- void setParameters (const std::shared_ptr<GoalPlannerParameters> & parameters);
312
301
void acceptVisitor (
313
302
[[maybe_unused]] const std::shared_ptr<SceneModuleVisitor> & visitor) const override
314
303
{
315
304
}
316
305
CandidateOutput planCandidate () const override { return CandidateOutput{}; }
317
306
318
307
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_;
320
317
321
318
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_;
322
323
// NOTE: never access to following variables except in updateData()!!!
323
324
std::mutex lane_parking_mutex_;
324
325
std::optional<LaneParkingRequest> lane_parking_request_;
325
326
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_;
327
331
std::mutex freespace_parking_mutex_;
328
332
std::optional<FreespaceParkingRequest> freespace_parking_request_;
329
333
FreespaceParkingResponse freespace_parking_response_;
330
334
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
-
368
335
std::unique_ptr<FixedGoalPlannerBase> fixed_goal_planner_;
369
336
370
337
// goal searcher
@@ -380,8 +347,6 @@ class GoalPlannerModule : public SceneModuleInterface
380
347
std::deque<nav_msgs::msg::Odometry::ConstSharedPtr> odometry_buffer_stopped_;
381
348
std::deque<nav_msgs::msg::Odometry::ConstSharedPtr> odometry_buffer_stuck_;
382
349
383
- autoware::universe_utils::LinearRing2d vehicle_footprint_;
384
-
385
350
std::optional<PullOverContextData> context_data_{std::nullopt};
386
351
// path_decision_controller is updated in updateData(), and used in plan()
387
352
PathDecisionStateController path_decision_controller_{getLogger ()};
@@ -393,25 +358,41 @@ class GoalPlannerModule : public SceneModuleInterface
393
358
// ego may exceed the stop distance, so add a buffer
394
359
const double stop_distance_buffer_{2.0 };
395
360
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
-
409
361
// debug
410
362
mutable GoalPlannerDebugData debug_data_;
411
363
412
364
// goal seach
413
365
GoalCandidates generateGoalCandidates () const ;
414
366
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
+
415
396
// stop or decelerate
416
397
void deceleratePath (PullOverPath & pull_over_path) const ;
417
398
void decelerateForTurnSignal (const Pose & stop_pose, PathWithLaneId & path) const ;
@@ -427,7 +408,7 @@ class GoalPlannerModule : public SceneModuleInterface
427
408
double calcSignedArcLengthFromEgo (const PathWithLaneId & path, const Pose & pose) const ;
428
409
429
410
// status
430
- bool hasFinishedCurrentPath (const PullOverContextData & ctx_data);
411
+ bool hasFinishedCurrentPath (const PullOverContextData & ctx_data) const ;
431
412
double calcModuleRequestLength () const ;
432
413
void decideVelocity (PullOverPath & pull_over_path);
433
414
void updateStatus (const BehaviorModuleOutput & output);
@@ -480,9 +461,6 @@ class GoalPlannerModule : public SceneModuleInterface
480
461
std::pair<double , double > calcDistanceToPathChange (
481
462
const PullOverContextData & context_data) const ;
482
463
483
- // safety check
484
- void initializeSafetyCheckParameters ();
485
- SafetyCheckParams createSafetyCheckParams () const ;
486
464
/*
487
465
void updateSafetyCheckTargetObjectsData(
488
466
const PredictedObjects & filtered_objects, const TargetObjectsOnLane & target_objects_on_lane,
@@ -494,11 +472,8 @@ class GoalPlannerModule : public SceneModuleInterface
494
472
*/
495
473
std::pair<bool , utils::path_safety_checker::CollisionCheckDebugMap> isSafePath (
496
474
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 ;
502
477
503
478
// debug
504
479
void setDebugData (const PullOverContextData & context_data);
0 commit comments