Meta-Ticket for Next-Generation Prototype Traffic Management

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

Maintainers usually reply within 15 days

@arjo129 is already working on this.

Since Jul 17, 2026.

Assessment

This issue has not been assessed yet.

Description

enhancement
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.
Dominant language
Python
Stars
10
Forks
9
Avg merge
3h 21m
Merged PRs (30d)
1

Getting set up

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.

More from open-rmf/next_gen_prototype

All issues in open-rmf/next_gen_prototype

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.