README
easynav_routes_maps_manager
Description
Maps Manager that maintains a set of navigation routes (in 2D or 3D), exposes them as
visualization markers and interactive markers in RViz, and makes the current
RoutesMap available through the NavState so that other managers and filters
can consume it (for example, costmap filters that constrain navigation to a
given corridor).
Routes are represented as a list of straight-line segments between two poses. Nothing prevents you from using non-zero Z coordinates in the poses, so routes can be fully 3D if downstream consumers support it. They are typically loaded from a YAML file stored in a ROS package and can be edited at runtime using interactive markers. A default single route segment is created automatically when no routes file is configured.
Supported ROS 2 Distributions
Distribution |
Status |
|---|---|
jazzy |
|
kilted |
|
rolling |
Plugin (pluginlib)
Plugin Name:
easynav_routes_maps_manager/RoutesMapsManagerType:
easynav::RoutesMapsManagerBase Class:
easynav::MapsManagerBaseLibrary:
easynav_routes_maps_managerDescription: Maintains an in-memory set of route segments (RoutesMap), loads/saves them from/to YAML files, exposes them through ROS markers and interactive markers, and writes the current
RoutesMapinto the NavState.
In addition, this package provides the RoutesCostmapFilter plugin, which can be used by the costmap Maps Manager to raise costs outside the defined routes, effectively constraining navigation to a configurable corridor around the segments. Other routes filters (for example, for NavMap or Octomap representations) can be implemented in the same way, each using its own NavState keys and outputs.
Parameters
Routes YAML Format
Routes are loaded from a YAML file with the following structure:
routes: [route0, route1]
route0:
start: {x: 0.0, y: 0.0, z: 0.0, qx: 0.0, qy: 0.0, qz: 0.0, qw: 1.0}
end: {x: 1.0, y: 0.0, z: 0.0, qx: 0.0, qy: 0.0, qz: 0.0, qw: 1.0}
route1:
start: {x: 1.0, y: 1.0, z: 0.0, qx: 0.0, qy: 0.0, qz: 0.0, qw: 1.0}
end: {x: 2.0, y: 1.0, z: 0.0, qx: 0.0, qy: 0.0, qz: 0.0, qw: 1.0}
routes: ordered list of route segment identifiers.Each entry under
routeXdefines the start and end poses of a segment.
When saving routes (via the save service, see below), the manager writes back a file with the same structure.
Routes Filter Plugins
Each entry in <plugin>.filters defines a sub-namespace <plugin>.<filter>
with at least the key plugin, plus any filter-specific parameters. Filters
implement the RoutesFilter interface and are executed after the RoutesMap
has been written to the NavState on each update cycle.
RoutesCostmapFilter
Plugin Name:
easynav_routes_maps_manager/RoutesCostmapFilterType:
easynav::RoutesCostmapFilterDescription: Reads the current
RoutesMapand a dynamic costmap (map.dynamic.filtered) from the NavState and raises the cost of all cells that do not lie within a corridor around any route segment. This effectively constrains path planners to stay close to the defined routes.
Parameters (namespace: /<node_fqn>/.../<plugin>.<filter>/...):
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
|
|
Minimum cost assigned to cells outside the route corridor if their current cost is lower. |
|
|
|
Corridor half-width around the route segments in meters. When set to |
NavState usage in RoutesCostmapFilter:
Key |
Type |
Access |
Description |
|---|---|---|---|
|
|
Read |
In-memory set of route segments written by |
|
|
Read/Write |
Dynamic costmap that is modified in place: cells outside the corridor are raised to at least |
In addition, the filter publishes a debug nav_msgs/msg/OccupancyGrid topic
with the filtered costmap for visualization. Other routes filters may use
different NavState keys or map representations; those should document their
own usage in their respective fichas.
Interfaces (Topics and Services)
Subscriptions and Publications
Direction |
Topic |
Type |
Purpose |
QoS |
|---|---|---|---|---|
Publisher |
|
|
Publishes line and arrow markers representing all route segments for RViz visualization. |
|
Publisher |
|
|
Publishes interactive markers for editing route endpoints (creation, removal, and dragging of segment endpoints). |
|
Publisher |
|
|
(via |
|
Services
Direction |
Service |
Type |
Purpose |
|---|---|---|---|
Service Server |
|
|
Serializes the current set of routes to the configured YAML file on disk. |
TF Frames
Routes are expressed in the navigation map frame (or in the frame configured
in other managers that consume the RoutesMap). This plugin does not broadcast
TF transforms; it relies on the rest of the navigation stack to provide the
necessary TF tree.
License
Apache-2.0