README
easynav_navmap_maps_manager
Description
Maps Manager that maintains a NavMap (triangulated 3D surface) and publishes full maps and layer updates; supports importing from YAML OccupancyGrid or point clouds.
This package also includes map filters implemented as plugins (ObstacleFilter and InflationFilter) that operate on NavMap layers to detect obstacles and inflate their costs, enabling cost-aware path planning.
Supported ROS 2 Distributions
Distribution |
Status |
|---|---|
humble |
|
jazzy |
|
kilted |
|
rolling |
Plugin (pluginlib)
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManagerType:
easynav::navmap::NavMapMapsManagerBase Class:
easynav::MapsManagerBaseLibrary:
easynav_navmap_maps_managerDescription:
Maps Manager that maintains a NavMap (triangulated 3D surface) and publishes full maps and layer updates; supports importing from YAML OccupancyGrid or point clouds, and applying dynamic filters to generate obstacle and inflated layers.
Parameters
All parameters are declared under the plugin namespace, i.e.
/<node_fqn>/easynav_navmap_maps_manager/NavMapMapsManager/...
Name |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Package name to resolve relative paths via |
|
|
|
Update frequency (Hz) for map publishing and filter execution. |
|
|
|
Relative path (inside the package) to a |
|
|
|
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
|
|
|
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
|
|
|
Ordered list of filter plugin names to be applied after map loading (e.g. |
Filter Plugins
ObstacleFilter
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilterType:
easynav::navmap::ObstacleFilterDescription:
Detects occupied NavCels from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the"obstacles"layer.
The filter groups 3D points into voxels and marks cells as occupied if a sufficient vertical structure is detected (either multiple bins along the z-axis or a vertical span exceeding a threshold).
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Minimum number of vertical bins required to consider a column as an obstacle. |
|
|
|
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
|
|
|
Voxel size used to downsample point clouds before obstacle detection. |
|
|
|
Frame in which points are fused before projection into NavMap. |
Input Key: |
Reads point clouds from |
||
Output Layer: |
Updates or creates NavMap layer |
InflationFilter
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilterType:
easynav::navmap::InflationFilterDescription:
Expands obstacle information from the"obstacles"layer into an"inflated_obstacles"layer, assigning graded costs depending on distance to obstacles and map boundaries (NavCels with missing neighbors).
This filter mimics the behavior ofcostmap_2d::InflationLayerbut operates on the NavMap triangular mesh.
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Maximum inflation distance (m) from obstacles. |
|
|
|
Exponential decay rate controlling how fast cost decreases with distance. |
|
|
|
Radius of inscribed zone (constant high cost before decay). |
Input Layer: |
Reads from |
||
Output Layer: |
Writes to |
Interfaces (Topics and Services)
Subscriptions and Publications
Direction |
Topic |
Type |
Purpose |
QoS |
|---|---|---|---|---|
Publisher |
|
|
Publishes the full NavMap. |
depth=1 |
Publisher |
|
|
Publishes incremental layer updates. |
depth=100 |
Subscription |
|
|
Input occupancy grid to import into NavMap. |
depth=1, transient_local, reliable |
Subscription |
|
|
Input point cloud to build/update NavMap. |
depth=100 |
Services
Direction |
Service |
Type |
Purpose |
|---|---|---|---|
Service Server |
|
|
Saves the current NavMap and layers to disk. |
TF Frames
Role |
Transform |
Notes |
|---|---|---|
Publishes |
— |
No TF broadcasting in this manager; outputs are stamped in their configured frame. |
Example Configuration
maps_manager_node:
ros__parameters:
use_sim_time: true
map_types: [navmap]
navmap:
freq: 10.0
plugin: easynav_navmap_maps_manager/NavMapMapsManager
package: easynav_indoor_testcase
navmap_path_file: maps/excavation_urjc.navmap
filters: [obstacles, inflation]
obstacles:
plugin: easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter
height_threshold: 0.25
inflation:
plugin: easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter
inflation_radius: 1.0
cost_scaling_factor: 2.0
License
Apache-2.0