Skip to content

Global Planner Docs

Egan edited this page Jan 16, 2022 · 2 revisions

Overview

See the route planner design page

Organization

The global planner currently follows the Autoware pattern of splitting the logic and node packages. These are named lanelet2_global_planner and lanelet2_global_planner_nodes respectively. The nodes package deals with anything related to Ros2 while the logic package is more abstract.

Inputs and output topics

A description of inputs and outputs is available on the design page. Topic names are remapped in main.launch.py. What is shown here is the pre-remapped topic names.

Topic name: input description.

  • HAD_Map_Client (service): Source of map data
  • goal_pose: Goal pose message topic
  • vehicle_kinematic_state: Includes the vehicles current position
  • route_costs: Output topic

Implementation

Lanelet2GlobalPlannerNode listens to topics, passes information to Lanelet2GlobalPlanner, and publishes costs ~1hz. The only significant logic is transforming the vehicle_kinematic_state to map coordinates.

Lanelet2GlobalPlanner holds the logic. Using lanelet2, each lanelet in the map is assigned an absolute cost each time the destination is set. These costs are stored in a map and can easily be looked up by lanelet::Id. Absolute costs may be calculated using any cost formula, however, this is not yet implemented. Upon receiving a current position and being asked for costs, the absolute costs for all nearby lanelets are fetched, made relative to the current routing cost, and passed back to the node. The calculations for "nearby" does involve a cost formula, but this cost formula must only incorporate distance to line up with the path planner horizon.

Clone this wiki locally