open-rmf / open-rmf/next_gen_prototype

Meta-Ticket for Next-Generation Prototype Traffic Management

Open
#8 0 comments 1 reaction 1 assignee View on GitHub

@arjo129 is already working on this.

Since Jul 17, 2026.

enhancement
Dominant language
Python
Stars
10
Forks
9
Avg merge
3d 8h
Merged PRs (30d)
2

Description

Before proceeding, is there an existing issue or discussion for this?
Description

As part of our initiative to transition towards a more “horizontal” architecture in open-rmf, @mxgrey has proposed a six-stage roadmap:
https://discourse.openrobotics.org/t/next-generation-open-rmf-roadmap/53820

Implementation Considerations

This ticket specifically addresses the first phase of this development cycle.

A comprehensive specification for the next-generation prototype is detailed in the following posts:

  1. https://discourse.openrobotics.org/t/taxonomy-of-interfaces-for-the-next-generation/44310
  2. https://discourse.openrobotics.org/t/traffic-management-interfaces-for-the-next-generation/44414

These posts provide a rigorous specification for next-generation interfaces, sufficient to serve as a baseline for implementing an instance of open-rmf.

Furthermore, several technology demonstrations are available across various repositories:

The objective of this ticket is to establish a concrete action plan for a reference implementation of the open-rmf message specification and Nav2 integration. The next-generation traffic interfaces comprise three primary components:

  • Destination Server: Functionally equivalent to RMF’s reservation_node.
  • Plan Server: Functionally equivalent to RMF’s rmf_traffic.
  • Plan Executor: Previously integrated within rmf_fleet_adapter.

A Minimum Viable Product (MVP) will implement these three layers. For clarity, I have decomposed each component into discrete milestones.

Pass 1

This initial phase prioritizes establishing the core software components; fault tolerance and session_refresh components will be excluded from this scope.

Destination Server
  • Implement a basic ROS 2 Rust node that validates incoming destinations and returns an error if occupied. This will utilize the Region message option (graph-based options will be supported in future iterations). See #25
  • Establish launch testing infrastructure to validate MS1 results. See #25
  • #9
  • #10
Plan Server
  • Develop a generalized path planning server that processes destination requests and generates map plans, focusing on the Plan.msg message format (See #17).
  • Integrate a MAPF algorithm within the new interface structure. (See #17).
  • Deploy basic launch testing infrastructure. (See #17 ).
  • #11
  • #12
Plan Executor
  • Implement PlanRelease.msg support. (See #17)
  • Implement SafeZone.msg support. (See #17)
  • Develop a mock Python-based agent to simulate ideal behavior. (See #17)
Visualization
  • Develop a simple visualization for robots by streaming over http
  • launch file with simple end-to-end demo in an open space
Developer Infrastructure
  • Develop a docker container pipeline to build core experiences (see #20)
  • Add CI (see #20)

At the end of Pass 1 we will have a simple playground with swappable algorithms for MAPF and a simple destination server. This will by no means be within parity of the old open-rmf.

Pass 2

The focus of this pass will be on handling failures and edge cases for robots within a free-space

Across All Nodes
  • ~session_refresh logic.
  • Develop participant registration/deregistration logic.
Path Server/Path Executor
  • Implement odometry Time-to-Live (TTL).
  • Implement the fleet stalling framework.
  • Crossflow integration (figure out what plugins will look like)
  • Nav2 integration
    • #21
    • #27
    • #37
Visualization
  • Develop a simple visualization for robots by streaming over http with rmf_site.

Pass 3

The focus of this pass will be to build out more complex logic

Destination Server
  • Develop Graph based approach. Figure out mapping between graph and free-space.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.