Skip to content

Commit 13a0ca5

Browse files
committed
fix(mission_planner): correct checkpoint pose
Signed-off-by: Mehmet Emin BAŞOĞLU <mehmeteminbasoglu@hotmail.com>
1 parent f6a734f commit 13a0ca5

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

planning/mission_planner/src/lanelet2_plugins/default_planner.cpp

+16-13
Original file line numberDiff line numberDiff line change
@@ -400,11 +400,20 @@ PlannerPlugin::LaneletRoute DefaultPlanner::plan(const RoutePoints & points)
400400

401401
LaneletRoute route_msg;
402402
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+
}
403411

404412
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+
408417
lanelet::ConstLanelets path_lanelets;
409418
if (!route_handler_.planPathLaneletsBetweenCheckpoints(
410419
start_check_point, goal_check_point, &path_lanelets, param_.consider_no_drivable_lanes)) {
@@ -421,13 +430,7 @@ PlannerPlugin::LaneletRoute DefaultPlanner::plan(const RoutePoints & points)
421430
}
422431
route_handler_.setRouteLanelets(all_route_lanelets);
423432

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)) {
431434
RCLCPP_WARN(logger, "Goal is not valid! Please check position and angle of goal_pose");
432435
return route_msg;
433436
}
@@ -437,12 +440,12 @@ PlannerPlugin::LaneletRoute DefaultPlanner::plan(const RoutePoints & points)
437440
return route_msg;
438441
}
439442

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);
441444
RCLCPP_DEBUG(logger, "Goal Pose Z : %lf", refined_goal.position.z);
442445

443446
// 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();
446449
route_msg.segments = route_sections;
447450
return route_msg;
448451
}

0 commit comments

Comments
 (0)