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
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_costmap_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 | humble |
| Last Updated | 2026-10-09 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
Authors
easynav_costmap_maps_manager
Description
Maps Manager that maintains 2D costmaps (base and dynamic), supports filter plugins (such as inflation and obstacle filters), and exposes maps through ROS topics and NavState integration.
At the core of this stack lies the Costmap2D data structure. Costmap2D extends the binary occupancy grid into a graded cost representation with values in the range [0–255]:
- 0: Free space, no cost to traverse.
- 1–252: Gradual cost values, representing increasing difficulty or proximity to obstacles.
- 253: “Near obstacle” (inscribed obstacle) cost, traversal strongly discouraged.
- 254: Lethal obstacle, occupied cell.
- 255: Unknown space.
Authors and Maintainers
- Authors: Intelligent Robotics Lab
- Maintainers: Francisco Martín Rico fmrico@gmail.com
Supported ROS 2 Distributions
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| lyrical | |
| rolling |
Plugin (pluginlib)
-
Plugin Name:
easynav_costmap_maps_manager/CostmapMapsManager -
Type:
easynav::CostmapMapsManager -
Base Class:
easynav::MapsManagerBase -
Library:
easynav_costmap_maps_manager - Description: Maintains a Costmap2D instance and manages map loading, updates, and filtering operations.
Parameters
Plugin Parameters (namespace: /<node_fqn>/easynav_costmap_maps_manager/CostmapMapsManager/...)
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.package |
string |
"" |
Package name used to resolve relative map paths via ament_index. |
<plugin>.map_path_file |
string |
"" |
Relative path (inside the package) to a ROS 1–style YAML map (with image, resolution, origin, etc.). |
<plugin>.filters |
string[] |
[] |
List of filter identifiers to be instantiated (see section below). |
<plugin>.<filter>.plugin |
string |
"" |
Type of filter plugin (e.g., easynav_costmap_maps_manager/InflationFilter). |
Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter> with at least the key plugin, plus any filter-specific parameters.
ObstacleFilter
-
Plugin Name:
easynav_costmap_maps_manager/ObstacleFilter -
Type:
easynav::ObstacleFilter -
Description:
Detects occupied cells from input point clouds (pointskey inNavState) and marks them asLETHAL_OBSTACLEin the dynamic costmap.
The filter fuses incoming 3D points into the map frame, downsamples them to the costmap resolution, filters out ground-level points (z belowmin_height, in the map frame), and sets corresponding cells to lethal cost. Additionally, it computes and stores bounding box (ObstacleBounds) of updated obstacles to enable efficient incremental inflation.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.<filter>.min_height |
double |
0.1 |
Points lower than this (m, map frame) are the floor, not obstacles. Lower it for sensors mounted lower (e.g. a laser 0.095 m high). |
Downsampling resolution and frame fusion use the costmap’s own resolution and map frame.
NavState Keys:
| Key | Type | Access | Description |
|---|---|---|---|
points |
sensor_msgs::msg::PointCloud2 |
Read | Input point clouds to detect obstacles. |
map |
Costmap2D |
Write | Marks cells as LETHAL_OBSTACLE (254). |
map.obstacle_bounds |
ObstacleBounds |
Write | Bounding box of updated obstacles for incremental inflation. |
InflationFilter
-
Plugin Name:
easynav_costmap_maps_manager/InflationFilter -
Type:
easynav::InflationFilter -
Description:
Expands obstacle information in the costmap by assigning graded costs aroundLETHAL_OBSTACLEcells based on distance. Uses a breadth-first wavefront propagation algorithm (distance bins) to efficiently inflate obstacles up toinflation_radius.
The filter reads both the base map and the dynamic filtered map, applies inflation to each, and merges results. IfObstacleBoundsis available inNavState, inflation is restricted to the updated region for performance.
Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
<plugin>.inflation_radius |
double |
0.3 |
Maximum inflation distance (m) from obstacles. Cells farther than this receive no inflation cost. |
<plugin>.inscribed_radius |
double |
— |
Deprecated: the robot’s system_node.robot_geometry.inscribed_radius, used unless only this one is configured (with a warning). Radius of the inscribed zone (m). Cells within this distance of an obstacle are marked with high constant cost (INSCRIBED_INFLATED_OBSTACLE, value 253) before exponential decay begins. |
<plugin>.cost_scaling_factor |
double |
3.0 |
Exponential decay rate controlling how quickly cost decreases with distance beyond the inscribed radius. Higher values produce steeper cost gradients. |
NavState Keys:
| Key | Type | Access | Description | |—|—|—|—|
File truncated at 100 lines see the full file
Changelog for package easynav_costmap_maps_manager
0.5.0 (2026-10-08)
- Runtime reconfiguration
- Robot geometry from system_node
- Configurable min_height in the ObstacleFilter (was a fixed 0.1 m)
- 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
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Update calls to deprecated get_package_share_directory
- Update dynamic_map_ with map key at navstate
- Avoid rewrite map with dynamic_map
- Navstate key among filters are always map, not an arbitrary key
- Merge fix
- Any change in the costmap set it as modified
- Publish changes in base map and be ready to save updated map
- Costamp base map sincronized with nav_state
- Change map static to base
- Adaptations to #94
- Update plugins to new sensors API
- GPLv3 -> Apache 2.0
- Get timestamp from perception for stamping
- Improve navstate print including the time
- Use last available TF for obstacle filter
- Adjust output time in costamp stack
- Remove C++20/C++23 features and update to new MethodBase interface
- TFInfo in RTTFBuffer
- Refactor to use TFInfo
- linting docs
- fix: Prevent A* planner from traversing through obstacles
- Final optimization
- First UpdateCosts optimization
- Update perception bound
- Cleanup unused headers
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno, Jose Miguel, Juan S. Cely, Juan S. Cely G., Miguel, migueldm
0.0.2 (2025-10-12)
- Reorganization initial
- Contributors: Francisco Martín Rico
Package Dependencies
System Dependencies
| Name |
|---|
| eigen |
| graphicsmagick |