Skip to main content

Browser-based MuJoCo simulation with real-time policy control

Project description

mjswan

Real-time Interactive RL Simulation in Your Browser

deploy test docs pypi version npm version

mjswan is a powerful framework for creating interactive MuJoCo simulations with real-time policy control, running entirely in the browser. Built on top of mujoco wasm, onnxruntime, and three.js, it enables easy sharing of RL simulation demos as static sites, perfect for GitHub Pages hosting.

Check out the demo ― ttktjmt.github.io/mjswan

mjlab Demo   Robot Descriptions Demo   MuJoCo Playground Demo   MyoSuite Demo


Features

  • Real-time: Run mujoco simulations and policy control in real time.
  • Interactive: Change the state of objects by applying forces.
  • Cross-platform: Works seamlessly on desktop and mobile devices.
  • VR Support: Native VR viewer support with WebXR.
  • Client-only: All computation runs in the browser. No server for simulation is required.
  • Easy Sharing: Host as a static site for effortless demo distribution (e.g., GitHub Pages).
  • Portable: Embed the simulation in a web page or Google Colab notebook.
  • Customizable: Visualize your mujoco models and onnx policies quickly.

Quick Start

mjswan can be installed with pip:

pip install mjswan  # or 'mjswan[dev]', 'mjswan[examples]'

or with npm:

npm install mjswan

You can run the demo using the uv command with the python package mjswan[examples]:

uv run main

The minimum python script for a sanity check:

import os, mujoco, mjswan

model_path = os.path.join(os.path.dirname(mujoco.__file__), "testdata", "model.xml")
mjspec = mujoco.MjSpec.from_file(model_path)

builder = mjswan.Builder()
builder.add_project(name="Sanity Check").add_scene(name="Test Model", spec=mjspec)
app = builder.build()
app.launch()

For detailed instructions, visit the documentation.

Third-Party Assets

mjswan incorporates mujoco models from the external sources in its demo. See the respective submodule for full details, including individual model licenses and copyrights. All models are used under their respective licenses. Please review and comply with those terms for any use or redistribution.

Robot Descriptions LicenseMuJoCo Playground LicenseMyoSuite License

Acknowledgments

This project was greatly inspired by the Facet project demo from the research group at Tsinghua University.
It is also built upon the excellent work of zalo/mujoco_wasm, one of the earliest efforts to run MuJoCo simulations in a browser.

License

This project is licensed under the Apache-2.0 License. When using mjswan, please retain attribution notices in the app to help other users discover this project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mjswan-0.5.2.tar.gz (9.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mjswan-0.5.2-py3-none-any.whl (9.8 MB view details)

Uploaded Python 3

File details

Details for the file mjswan-0.5.2.tar.gz.

File metadata

  • Download URL: mjswan-0.5.2.tar.gz
  • Upload date:
  • Size: 9.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mjswan-0.5.2.tar.gz
Algorithm Hash digest
SHA256 42caa21a3e1501652faa8a2d3beae7ccdc46f1147d24d260a65b0b03ded90dfd
MD5 e0389e4d18c31b86afd24b3052892cc4
BLAKE2b-256 82735d9789b03e12a761adb2e23efdeeca1b80d71c384d7829ec266389b09e1e

See more details on using hashes here.

File details

Details for the file mjswan-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: mjswan-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mjswan-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e9ce9bb3fdffa7363c8f0f14ed55cd8aec8f7194bb30d5fdae7483a556f28c26
MD5 f729ca5eb780e7d2595f7f8f568fef55
BLAKE2b-256 96a966a00a372af3cd507f59029f1faebc0dcdd2e2f257b103f64de8da6aaa5d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page