Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

Package Summary

Version 0.5.0
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-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

Package Summary

Version 0.5.0
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-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

Package Summary

Version 0.5.0
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 lyrical
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.5.0
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 humble
Last Updated 2026-10-09
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Easy Navigation: Simple MapsManager package.

Maintainers

  • Francisco Martín Rico

Authors

No additional 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 humble
jazzy jazzy
kilted kilted
lyrical lyrical
rolling 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 the point perceptions in NavState and marks them as LETHAL_OBSTACLE in the "obstacles" layer, on top of the static map’s "occupancy" layer (if any).
    The points are downsampled, those within max_range and below max_height (robot frame) are grouped in 0.3 m columns, and a column is an obstacle when its highest point is more than min_height (plus min_height_per_meter for each meter from the robot) above the NavMap surface under it (along the surface’s normal). So a 2D laser detects obstacles too, and the ground or a ramp, being on the surface, is not one.
Parameter Type Default Description
<plugin>.max_range double 10.0 Only points within this distance (x and y, robot frame) are used.
<plugin>.min_height double 0.1 Height above the NavMap surface below which points are the ground.
<plugin>.min_height_per_meter double 0.0 min_height grows this much per meter of horizontal distance from the robot (< 0 or not finite: 0). On rough terrain, a small error in the robot’s tilt lifts the ground more the farther it is; e.g. 0.05 adds 0.25 m at 5 m.
<plugin>.max_height double NaN Points above this height (robot frame) are ignored; NaN disables it.
<plugin>.downsample_resolution double 0.3 Voxel size (m) the points are reduced to first; <= 0 disables it.
Input Key:     Reads list of point clouds from NavState group "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 of costmap_2d::InflationLayer but 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 — Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). 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.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package easynav_navmap_maps_manager

0.5.0 (2026-10-08)

  • Runtime reconfiguration (rejected ones are reported)
  • Robot geometry from system_node
  • ObstacleFilter: keeps the static map; range and height limits; a column is an obstacle when it rises more than min_height above the NavMap surface (so a 2D laser sees obstacles, and the ground and ramps are not ones); min_height_per_meter and downsample_resolution parameters
  • InflationFilter: inflates across unknown cells
  • Fixed std::bad_alloc
  • Builds on Humble, Jazzy, Kilted, Lyrical and Rolling
  • Contributors: Francisco Martín Rico

0.4.2 (2026-07-26)

  • Complete deps
  • Navstate key among filters are always map, not an arbitrary key
  • Update calls to deprecated get_package_share_directory
  • Adaptations to #94
  • Update plugins to new sensors API
  • GPLv3 -> Apache 2.0
  • Improve navstate print including the time
  • Remove C++20/C++23 features and update to new MethodBase interface
  • Merge branch 'set_robot_frame' into frames-fix-pr-40
  • TFInfo in RTTFBuffer
  • Final adjustements
  • Refactor to use TFInfo
  • Merge branch 'rolling' into improve_astar_costmap
  • linting docs
  • Optimize execution Cleanup unused headers
  • Dependencies were fixed
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Update sheets
  • First functional version of Inflation filter
  • Update to Occ constants
  • Add obstacle layer
  • Optimized function
  • First functional verison, but expensive
  • Add params to navmap building map
  • Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Juan S. Cely, Juan S. Cely G., Miguel, migueldm

0.0.2 (2025-10-12)

  • Reorganization initial
  • Contributors: Francisco Martín Rico

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged easynav_navmap_maps_manager at Robotics Stack Exchange