The RMF Site Editor is an experimental approach to visualizing and editing large RMF deployment sites. It is built in Rust using Bevy, an open-source Rust-based game engine.
Rust and Bevy allow The RMF Site Editor to target both desktop (Windows/Linux/Mac) and web (WebAssembly+WebGL/WebGPU) using the same codebase:
- Web build: the browser application provides maximum convenience, since there is nothing to build or install.
- Desktop build: maximum performance, thanks to multithreading and lower-level GPU integration.
Click here to use the web build in your browser.
To use the Site Editor in an Open-RMF project to configure a simulation or deployment,
follow the instructions at rmf_site_ros2.
There you will find rmf_site_cmake which you can use to generate simulations and
navigation graphs from a Site Editor project, and rmf_site_demos which shows how to
set up a cmake project to build and launch your sites.
We need a newer Rust than what comes with Ubuntu 20.04.
First make sure you don't have any distro-installed Rust stuff on your machine:
$ sudo apt remove rustc cargoIf you don't have it already, install rustup from the Rust website: https://www.rust-lang.org/tools/install
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shJust select the normal defaults (option 1). A bunch of stuff will happen. Be sure to close and re-open your terminal afterwards, so that it gets all the new stuff.
Alternatively, if you already have a Rust installation managed by rustup, you can just do this to bring it up-to-date: rustup update
Finally, we need some library packages:
$ sudo apt install libgtk-3-dev libasound2-dev libudev-devMake sure you install rust from the main rust website. Cargo should take care of the rest of the magic for you.
These are only needed if you're going to build a WebAssembly binary:
$ cargo install -f wasm-bindgen-cli --version 0.2.100
$ cargo install basic-http-server
$ rustup target add wasm32-unknown-unknown
# binaryen version >= 110 required for a bug fix for wasm-opt
# Refer to https://github.com/emilk/egui/pull/6848
$ wget -P ~/ https://github.com/WebAssembly/binaryen/releases/download/version_123/binaryen-version_123-x86_64-linux.tar.gz
$ tar xf ~/binaryen-version_123-x86_64-linux.tar.gz -C ~/
$ export PATH=$PATH:~/binaryen-version_123/binCurrently tested on Ubuntu 20.04.4 LTS and windows 11.
From the root directory:
$ cargo runUse the --features bevy/dynamic_linking flag to improve compile time through dynamic linking.
Use the --release flag for better runtime performance.
TODO: The web assembly version is highly experimental, currently it lacks important features like saving/loading of map files.
$ scripts/build-web.sh
$ scripts/serve-web.shThen use your favorite web browser to visit http://localhost:1234
