You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
0: Free space, no cost to traverse.
1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
Description:
Detects occupied cells from input point clouds (points key in NavState) and marks them as LETHAL_OBSTACLE in the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z < 0.1 m), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
Parameter
Type
Default
Description
(None)
—
—
This filter does not declare additional ROS parameters beyond plugin. Downsampling resolution and frame fusion use the costmap's own resolution and map frame.
NavState Keys:
Key
Type
Access
Description
points
sensor_msgs::msg::PointCloud2
Read
Input point clouds to detect obstacles.
map.dynamic.filtered
Costmap2D
Write
Marks cells as LETHAL_OBSTACLE (254).
map.dynamic.obstacle_bounds
ObstacleBounds
Write
Bounding box of updated obstacles for incremental inflation.
Description:
Expands obstacle information in the costmap by assigning graded costs around LETHAL_OBSTACLE cells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up to inflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. If ObstacleBounds is available in NavState, inflation is restricted to the updated region for performance.
Parameters:
Parameter
Type
Default
Description
<plugin>.inflation_radius
double
0.3
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost.
<plugin>.inscribed_radius
double
0.25
Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins.
<plugin>.cost_scaling_factor
double
3.0
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients.
NavState Keys:
Key
Type
Access
Description
map.base
Costmap2D
Read
Base costmap to inflate.
map.dynamic.filtered
Costmap2D
Read/Write
Dynamic costmap input and output after inflation.
map.dynamic.obstacle_bounds
ObstacleBounds
Read (optional)
Restricts inflation to updated region for performance.