Map Management Node
Maintained by Nova
Overview
Routinely publishes a drivable_grid
and junction_grid
that is centered around the car. Uses the map information from either the world_info
topic or a parameter to form the grids. Also, publishes a goal_pose
(rotation) and route_path
(path) for the car to follow.
In:
- /clock Clock
- /clicked_point PointStamped
- /carla/world_info CarlaWorldInfo
Out:
- /grid/drivable OccupancyGrid
- /grid/junction OccupancyGrid
- /planning/smoothed_route Path
- /planning/goal_pose PoseStamped
MapManagementNode::publishSmoothRoute
Once a route is requested and the route_linestring_
variable is defined, this method will regularly publish the global smoothed route.
MapManagementNode::publishGrids
General steps
- Query the map-wide R-tree to find all lanes within range
- Creates a second, local R-tree and insert all nearby lanes, which were found from the query
- For each row j and column i, query the local R-tree to see if that cell (i,j) is within a lane’s bounding box
- If yes, find out if it is within the actual lane, not just its bounding box. R-trees only calculate for bounding boxes.
- If yes again, the cell is truly occupied. Append ‘100’ (“occupied”) to OccupancyGrid. Otherwise ‘0’.
- If yes, find out if it is within the actual lane, not just its bounding box. R-trees only calculate for bounding boxes.
- Set OccupancyGrid metadata and return.