Skip to content

epic:Base for next-gen RMF - #26

Merged
mxgrey merged 14 commits into
mainfrom
epic/next-gen-base
Jul 24, 2026
Merged

epic:Base for next-gen RMF#26
mxgrey merged 14 commits into
mainfrom
epic/next-gen-base

Conversation

@arjo129

@arjo129 arjo129 commented Jul 1, 2026

Copy link
Copy Markdown
Member

Note: DO NOT SQUASH MERGE THIS PR, we want to keep history

This PR consists of a set of commits by myself, @xiyuoh and @SamuelFoo that should form the base of the next-gen-rmf.

It implements most of Pass 1 of #8. It consists of a minimal CI, plan executor and plan server along with a simple destination server. There are also some temporary demos that have been vibed-out so that people can start hacking.

Testing

I would start with the repository's main readme:

Then I would work through the demos here:

Finally I would try the Nav 2 demos out:

arjo129 and others added 5 commits June 22, 2026 14:56
Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>
Adds a simple path visualizer for RViz to view plans generated by the planner over the topic `~/path_markers`.

### GenAI Use
We follow [OSRA's policy on GenAI tools](https://github.com/openrobotics/osrf-policies-and-procedures/blob/main/OSRF%20Policy%20on%20the%20Use%20of%20Generative%20Tools%20(%E2%80%9CGenerative%20AI%E2%80%9D)%20in%20Contributions.md)

- [x] I used a GenAI tool in this PR.
- [ ] I did not use GenAI

Generated-by: Gemini 3.1 Pro


---------

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Adds a CI for the next-gen prototype.

### Implementation description

We create a base container consisting of `ros2_rust`, `nav2` and generated rust messages. We then Perform the building against this base container.

### GenAI Use
We follow [OSRA's policy on GenAI tools](https://github.com/openrobotics/osrf-policies-and-procedures/blob/main/OSRF%20Policy%20on%20the%20Use%20of%20Generative%20Tools%20(%E2%80%9CGenerative%20AI%E2%80%9D)%20in%20Contributions.md)

- [x] I used a GenAI tool in this PR.
- [ ] I did not use GenAI

Generated-by: Gemini Pro 3.1

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

* Update CI workflow branch to epic/next-gen-base

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

* Add branch to CI workflow for additional feature

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

* Remove nav2 stuff

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Rosdep new code as well

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Rosdep new code as well

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Update CI

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Update readme

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* try not using repos file

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Fix typo

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Update README.md

Co-authored-by: Xiyu <ohxiyu@gmail.com>
Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

* remove broken source path

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* remove broken source path

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* add rosdep init

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* to rosdepinit or not that is the question

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* rosdep binary

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* fix instructions

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Remove repos file

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Remove repos reference

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Update dockerfile to use colcon cargo from apt

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Update readme instructions

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Fix apt command

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Update README for clarity on workspace dependencies

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

* Use rosenv

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Re-add colcon-ros-cargo

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* update readme since vcs is no longer needed

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Dockerfile base

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Force upgrade

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Add break-system package line

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Limit to only epic branch

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

---------

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>
Co-authored-by: Xiyu <ohxiyu@gmail.com>
Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
## New feature implementation

### Implemented feature

I added a reservation-aware destination server package, in addition to the stateless simple destination server. The user can switch between both implementations in the demo at launch time.

### Implementation description

This PR is a combination of:

- arjo129#4: E2E visualization for reservation queuing
- arjo129#7: negative-coordinate reservation fixes
- arjo129#8: RMF Site Editor config parsing

and the splitting of the destination server package into stateless and reservation-aware packages.

### GenAI Use
We follow [OSRA's policy on GenAI tools](https://github.com/openrobotics/osrf-policies-and-procedures/blob/main/OSRF%20Policy%20on%20the%20Use%20of%20Generative%20Tools%20(%E2%80%9CGenerative%20AI%E2%80%9D)%20in%20Contributions.md)

- [x] I used a GenAI tool in this PR.
- [ ] I did not use GenAI

---------

Generated-by: GPT-5.5

Signed-off-by: SamuelFoo <fooenzesamuel@gmail.com>
@mxgrey mxgrey added this to PMC Board Jul 1, 2026
@github-project-automation github-project-automation Bot moved this to Inbox in PMC Board Jul 1, 2026
@arjo129
arjo129 marked this pull request as ready for review July 1, 2026 05:08
arjo129 and others added 2 commits July 3, 2026 06:43
Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
* Fix QoS durability mismatches in integration tests

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* CI: Run tests sequentially to avoid DDS interference

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

---------

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
@xiyuoh
xiyuoh force-pushed the epic/next-gen-base branch from 512b83e to 34b2d6a Compare July 3, 2026 06:47
* Introduce nav2 traffic for next gen

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Bring in spatio temporal stuff

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Remove sp from repos file

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Remove .repos file

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Persistent cancelllation

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* More robust inner nav request handling

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Add clearer description

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Review comments

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Add visualizer launch

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Move bevy ros2 stuff to its own crate + cleanup

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Compare destination session

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Adjust log level

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Add more deps instructions to readme

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Some readme stuff, some ci stuff, some logging stuff

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* See if CI will fetch the right things

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>

* Add deps

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

* Forgot the 2

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>

---------

Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
Co-authored-by: Arjo Chakravarty <arjoc@intrinsic.ai>
@arjo129
arjo129 requested review from mxgrey and xiyuoh July 6, 2026 02:45
xiyuoh and others added 3 commits July 6, 2026 14:39
Some cleanup follow-up from Nav2 traffic PR outlined in #21:
- Replace `DefaultPlugins` with `MinimalPlugins` + `LogPlugin`
- Use `rmf_participant_discovery` for the visualizer
- Add `nav2_traffic` node to `demo_viz` launch file

### GenAI Use
We follow [OSRA's policy on GenAI tools](https://github.com/openrobotics/osrf-policies-and-procedures/blob/main/OSRF%20Policy%20on%20the%20Use%20of%20Generative%20Tools%20(%E2%80%9CGenerative%20AI%E2%80%9D)%20in%20Contributions.md)

- [x] I used a GenAI tool in this PR.
- [ ] I did not use GenAI

Generated-by: Gemini 3.1 Pro
Signed-off-by: Xiyu Oh <xiyu@openrobotics.org>
Related to #12

### Implemented feature

Adds a very rudimentary way of loading environment maps. This is by no means a final approach to loading maps, but it provides a high level way of representing them for the time being.

### Implementation description

We subscribe to the `/map` topic to listen for OccupancyGrids. It gets converted internally to a `Map` struct

### Test it

Use the launch file provided by `demo_map.launch.py` . It spins up a ROS 2 `map_server` loaded with a custom 20x20 grid map (`demo_grid.png`) and activates it. The dashboard subscribes to `/map` and visualizes it as a background layer.

Run the launch file:
```bash
ros2 launch rmf_path_server_demo demo_map.launch.py
```
- Open `http://localhost:8080` in your web browser.
- The canvas will automatically fit to the 20x20 grid map.
- You can add robots and set goals as in the default mode, and see the map obstacles (a box in the center) drawn on the canvas.

### GenAI Use
We follow [OSRA's policy on GenAI tools](https://github.com/openrobotics/osrf-policies-and-procedures/blob/main/OSRF%20Policy%20on%20the%20Use%20of%20Generative%20Tools%20(%E2%80%9CGenerative%20AI%E2%80%9D)%20in%20Contributions.md)

- [x] I used a GenAI tool in this PR.
- [ ] I did not use GenAI

Generated-by: Gemini Pro 3.1

---------

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>
Co-authored-by: Xiyu <ohxiyu@gmail.com>
* Change build branch from 'epic/next-gen-base' to 'main'

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

* Change CI workflow branch from epic to main

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>

---------

Signed-off-by: Arjo Chakravarty <arjo129@gmail.com>
@mxgrey mxgrey moved this from Inbox to In Review in PMC Board Jul 14, 2026

@mxgrey mxgrey left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While testing out this PR's branch, I found some holes in the install instructions. I opened #41 to address that.

On a separate note, I built and ran the demo in a completely isolated container, but I found that it's not working correctly. I get the following printouts:

From the path server:

[rmf_path_server-1] [INFO] [1784389646.400942037] [rmf_path_server]: Need to trigger plan
[rmf_path_server-1] [INFO] [1784389646.401002155] [rmf_path_server]: Odometry for robot robot_1 is missing or stale. Skipping plan.
[rmf_path_server-1] [INFO] [1784389646.500937480] [rmf_path_server]: Need to trigger plan
[rmf_path_server-1] [INFO] [1784389646.501001628] [rmf_path_server]: Odometry for robot robot_1 is missing or stale. Skipping plan.
[rmf_path_server-1] [INFO] [1784389646.600883406] [rmf_path_server]: Need to trigger plan
[rmf_path_server-1] [INFO] [1784389646.600936313] [rmf_path_server]: Odometry for robot robot_1 is missing or stale. Skipping plan.
# ... ad infinitum ...

From the web browser (full text):

KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
[86157:86182:0718/235536.688167:ERROR:dbus/bus.cc:405] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[86157:86182:0718/235536.688213:ERROR:dbus/bus.cc:405] Failed to connect to the bus: Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory
[86157:86157:0718/235536.688299:ERROR:dbus/object_proxy.cc:572] Failed to call method: org.freedesktop.systemd1.Manager.StartTransientUnit: object_path= /org/freedesktop/systemd1: org.freedesktop.DBus.Error.UnixProcessIdUnknown: Process with ID 86157 does not exist.
[86157:86157:0718/235536.701217:ERROR:dbus/object_proxy.cc:572] Failed to call method: org.freedesktop.DBus.Properties.GetAll: object_path= /org/freedesktop/UPower/devices/DisplayDevice: unknown error type:
Created TensorFlow Lite XNNPACK delegate for CPU.
[86157:86184:0718/235538.853755:ERROR:google_apis/gcm/engine/registration_request.cc:291] Registration response error message: DEPRECATED_ENDPOINT

The web app is able to load, and I can add a robot. The problem is that when I click Send Scenario it freezes like this:

Image

That's when the Odometry ... missing or stale error starts happening.

I'm not sure if this is a problem specific to running the demo in a container, but currently I don't have any bare installations of Ubuntu 24.04 to test with.

While reviewing #26 I found that there were gaps in the README's install instructions. This PR fills in some parts and does some reformatting. Now there should be enough explicit instructions for users to build it correctly from scratch.
---------

Signed-off-by: Michael X. Grey <mxgrey@intrinsic.ai>
@arjo129

arjo129 commented Jul 19, 2026

Copy link
Copy Markdown
Member Author

I dont think thats a container error. That error suggests the mock simulator has failed failed to spin up or zenoh/dds communication has not been established. The web app will launch the desired number of robots. If you have the complete ros2 logs from that run perhaps I can debug it better.

FWIW Ive been using containers as well. Im sure the others whove tested it so far have been too.

arjo129 added 2 commits July 22, 2026 16:19
…oss nodes (#43)

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
Based on user testing it was found that:
1. The reset button is flaky. For now, this is not a high priority thing
   to fix so we are disabling it.
2. A tooltip hinting to click on a robot was added.

Signed-off-by: Arjo Chakravarty <arjoc@intrinsic.ai>
@mxgrey
mxgrey merged commit 96f6376 into main Jul 24, 2026
6 of 7 checks passed
@github-project-automation github-project-automation Bot moved this from In Review to Done in PMC Board Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants