@@ -400,11 +400,20 @@ PlannerPlugin::LaneletRoute DefaultPlanner::plan(const RoutePoints & points)
400
400
401
401
LaneletRoute route_msg;
402
402
RouteSections route_sections;
403
+ RoutePoints check_points{points};
404
+
405
+ if (param_.enable_correct_goal_pose ) {
406
+ for (size_t i = 1 ; i < check_points.size (); ++i) {
407
+ check_points.at (i) = get_closest_centerline_pose (
408
+ lanelet::utils::query::laneletLayer (lanelet_map_ptr_), check_points.at (i), vehicle_info_);
409
+ }
410
+ }
403
411
404
412
lanelet::ConstLanelets all_route_lanelets;
405
- for (std::size_t i = 1 ; i < points.size (); i++) {
406
- const auto start_check_point = points.at (i - 1 );
407
- const auto goal_check_point = points.at (i);
413
+ for (std::size_t i = 1 ; i < check_points.size (); i++) {
414
+ const auto start_check_point = check_points.at (i - 1 );
415
+ const auto goal_check_point = check_points.at (i);
416
+
408
417
lanelet::ConstLanelets path_lanelets;
409
418
if (!route_handler_.planPathLaneletsBetweenCheckpoints (
410
419
start_check_point, goal_check_point, &path_lanelets, param_.consider_no_drivable_lanes )) {
@@ -421,13 +430,7 @@ PlannerPlugin::LaneletRoute DefaultPlanner::plan(const RoutePoints & points)
421
430
}
422
431
route_handler_.setRouteLanelets (all_route_lanelets);
423
432
424
- auto goal_pose = points.back ();
425
- if (param_.enable_correct_goal_pose ) {
426
- goal_pose = get_closest_centerline_pose (
427
- lanelet::utils::query::laneletLayer (lanelet_map_ptr_), goal_pose, vehicle_info_);
428
- }
429
-
430
- if (!is_goal_valid (goal_pose, all_route_lanelets)) {
433
+ if (!is_goal_valid (check_points.back (), all_route_lanelets)) {
431
434
RCLCPP_WARN (logger, " Goal is not valid! Please check position and angle of goal_pose" );
432
435
return route_msg;
433
436
}
@@ -437,12 +440,12 @@ PlannerPlugin::LaneletRoute DefaultPlanner::plan(const RoutePoints & points)
437
440
return route_msg;
438
441
}
439
442
440
- const auto refined_goal = refine_goal_height (goal_pose , route_sections);
443
+ const auto refined_goal = refine_goal_height (check_points. back () , route_sections);
441
444
RCLCPP_DEBUG (logger, " Goal Pose Z : %lf" , refined_goal.position .z );
442
445
443
446
// The header is assigned by mission planner.
444
- route_msg.start_pose = points .front ();
445
- route_msg.goal_pose = refined_goal ;
447
+ route_msg.start_pose = check_points .front ();
448
+ route_msg.goal_pose = check_points. back () ;
446
449
route_msg.segments = route_sections;
447
450
return route_msg;
448
451
}
0 commit comments