Load and Run MuJoCo 2.3.1 Models using JavaScript and WebAssembly.
This repo is a fork of @stillonearth 's starter repository, adding tons of functionality and a comprehensive example scene.
1. Install emscripten
2. Build the mujoco_wasm Binary
On Linux, use:
mkdir build
cd build
emcmake cmake ..
make
On Windows, run build_windows.bat
.
3. (Optional) Update MuJoCo libs
Build MuJoCo libs with wasm target and place to lib. Currently v2.3.1 included.
import load_mujoco from "./mujoco_wasm.js";
// Load the MuJoCo Module
const mujoco = await load_mujoco();
// Set up Emscripten's Virtual File System
mujoco.FS.mkdir('/working');
mujoco.FS.mount(mujoco.MEMFS, { root: '.' }, '/working');
mujoco.FS.writeFile("/working/humanoid.xml", await (await fetch("./examples/scenes/humanoid.xml")).text());
// Load in the state from XML
let model = new mujoco.Model("/working/humanoid.xml");
let state = new mujoco.State(model);
let simulation = new mujoco.Simulation(model, state);
Typescript definitions are available.
So far, most mjModel and mjData state variables and functions (that do not require custom structs) are exposed.
At some point, I'd like to de-opinionate the binding and make it match the original MuJoCo API better.