Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.3.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | kilted |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange
Package Summary
| Version | 0.2.1 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/EasyNavigation/easynav_plugins.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-02-27 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
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.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainer: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager -
Type:
easynav::navmap::NavMapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
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, 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 |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name to resolve relative paths via ament_index. |
<plugin>.freq |
double |
10.0 |
Update frequency (Hz) for map publishing and filter execution. |
<plugin>.navmap_path_file |
string |
"" |
Relative path (inside the package) to a .navmap file to load at startup. |
<plugin>.occmap_path_file |
string |
"" |
Relative path (inside the package) to a ROS YAML OccupancyGrid to import as NavMap. |
<plugin>.pcd_path_file |
string |
"" |
Relative path (inside the package) to a point cloud (PCD/PLY) used to build a NavMap surface. |
<plugin>.filters |
list<string> |
[] |
Ordered list of filter plugin names to be applied after map loading (e.g. ["obstacles", "inflation"]). |
Filter Plugins
ObstacleFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/ObstacleFilter -
Type:
easynav::navmap::ObstacleFilter -
Description:
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 |
|---|---|---|---|
<plugin>.vertical_bins_min |
int |
3 |
Minimum number of vertical bins required to consider a column as an obstacle. |
<plugin>.height_threshold |
double |
0.25 |
Minimum vertical height (in meters) between max and min z to mark as an obstacle. |
<plugin>.downsample |
double |
0.3 |
Voxel size used to downsample point clouds before obstacle detection. |
<plugin>.fuse_frame |
string |
"map" |
Frame in which points are fused before projection into NavMap. |
| Input Key: | Reads point clouds from NavState key "points". |
||
| Output Layer: | Updates or creates NavMap layer "obstacles". |
InflationFilter
-
Plugin Name:
easynav_navmap_maps_manager/NavMapMapsManager/InflationFilter -
Type:
easynav::navmap::InflationFilter -
Description:
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 |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how fast cost decreases with distance. |
<plugin>.inscribed_radius |
double |
0.3 |
Radius of inscribed zone (constant high cost before decay). |
| Input Layer: | Reads from "obstacles". |
||
| Output Layer: | Writes to "inflated_obstacles". |
Interfaces (Topics and Services)
Subscriptions and Publications
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/map |
navmap_ros_interfaces/msg/NavMap |
Publishes the full NavMap. | depth=1 |
| Publisher | <node_fqn>/<plugin>/map_updates |
navmap_ros_interfaces/msg/NavMapLayer |
Publishes incremental layer updates. | depth=100 |
| Subscription | <node_fqn>/<plugin>/incoming_occ_map |
nav_msgs/msg/OccupancyGrid |
Input occupancy grid to import into NavMap. | depth=1, transient_local, reliable |
| Subscription | <node_fqn>/<plugin>/incoming_pc2_map |
sensor_msgs/msg/PointCloud2 |
Input point cloud to build/update NavMap. | depth=100 |
Services
| Direction | Service | Type | Purpose |
|---|---|---|---|
| Service Server | <node_fqn>/<plugin>/savemap |
std_srvs/srv/Trigger |
Saves the current NavMap and layers to disk. |
NavState Keys
| Key | Type | Access | Notes |
File truncated at 100 lines see the full file
Changelog for package easynav_navmap_maps_manager
0.2.1 (2026-02-27)
- 0.2.0
- GPLv3 -> Apache 2.0
- Documentation was corrected
- Add a base_footprint frame in TFInfo
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- Referencing base class if ot void
- Optimize execution
- Cleanup unused headers
- Update sheets
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely G., Miguel
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| graphicsmagick |