Hi all, your friendly neighborhood navigator here!
I wanted to gather some feedback / requirements / use-cases / needs on a project I intend to start working on early in 2023.
Project: Nav2 Route Server
This server will complement the Planner Server to generate global routes through the environment. Rather than using free-space planning, this will take in a pre-generated Navigation Graph to plan within to enable reduced-planning times and repeatable navigation behaviors. Some common applications of this are to (1) create directional lanes or robot lanes in spaces so that a robot is routed through only appropriate zones (2) route outdoors or in non-trivially non-planar environments where a occupancy grid isn’t a reasonable representation to plan within globally and accurate global height maps are not available (e.g. most outdoor applications), (3) plan within excessively large environments where free-space planning from the current pose to a goal isn’t reasonable by any current methods within a reasonable timeframe, requiring a reduced-representation to plan within.
- Enable directional and non-directional edges in the navigation graph
- Allow the navigation graph to be independent of generation method (e.g. PRM, hand-assembled, from automated algorithm based on visibility, etc)
- Set weights for graph edges and/or run-time loaded plugin to score edges
- Standardized navigation graph file format
- Handle last-mile free-space planning to the goal pose from the navigation graph if the goal is not on a graph node
- BT plugin and Python3 API access
- Use optimal heuristic search algorithm and/or optionally Dijkstras / BFS (does anyone really want a plugin interface for different planners or just A*/Dijkstra’s fine?)
- Visualize navigation graph / edge weights in rviz
- The usual test coverage and documentation you’ve come to know and love about Nav2 packages
I’m interested to hear from users any additional applications they may have for this server and any additional features or important items I should take into account as I’m designing this server or evaluating existing options for adoption.