epic:Base for next-gen RMF - #26
Conversation
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>
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>
512b83e to
34b2d6a
Compare
* 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>
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>
There was a problem hiding this comment.
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:
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>
|
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. |
…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>
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: