ttktjmt/mjswan

MuJoco Simulation on WebAssembly with Neural networks

mjswan – ブラウザでのリアルタイムインタラクティブ MuJoCo

概要

mjswan は、完全にウェブブラウザ内で MuJoCo 物理シミュレーションを実行できる Python/JavaScript ライブラリです。MuJoCo‑WASM エンジン、ニューラルネットワークポリシー用の ONNX ランタイム、3‑D レンダリング用の Three.js をバンドルしているため、強化学習(RL)デモをサーバーサイドの計算なしで静的ウェブページ(例:GitHub Pages)として共有できます。

主な機能

機能 意味
リアルタイムシミュレーションとポリシー制御 MuJoCo モデルを読み込み、ONNX ポリシーをアタッチし、ブラウザでエージェントの動作をフレームごとに確認できます。
インタラクティブ操作 マウス、タッチ、VR コントローラーでオブジェクトに力を加え、「もしも」のシナリオをライブで探索できます。
クロスプラットフォーム(デスクトップ、モバイル、WebXR) 通常のブラウザと WebXR 経由の VR/AR ヘッドセットで動作し、ハンドトラッキングに対応。
クライアントのみ 物理、レンダリング、推論はすべてローカルで行われます。バックエンドサーバーは不要です。
静的サイト対応 デモ全体が静的アセットにコンパイルされ、GitHub Pages やノートブックへの埋め込みに最適です。
mjlab‑ネイティブ 組み込みスキル(mjlab-to-mjswan)により、mjlab ベンチマークスイートの任意のタスクをウェブデモに変換できます。
カスタマイズ可能な可視化 独自の Three.js シェーダーをプラグインしたり、カメラコントロールを変更したり、追加の UI ウィジェットをオーバーレイできます。

始め方

  1. インストール – pip(pip install mjswan)または npm(npm install mjswan)でインストールします。
  2. デモを実行 – リポジトリをクローンした後、サンプルの追加パッケージをインストールし、CLI でデモを起動します:
    mjswan demo simple
    
  3. 独自アプリを作成 – 最小限のスクリプトは次のようになります:
    import os, mujoco, mjswan
    model_path = os.path.join(os.path.dirname(mujoco.__file__), "testdata", "model.xml")
    spec = mujoco.MjSpec.from_file(model_path)
    
    builder = mjswan.Builder()
    builder.add_project(name="Sanity Check")\n          .add_scene(name="Test Model", spec=spec)
    app = builder.build()
    app.launch()   # シミュレーションを含むブラウザウィンドウが開きます
    
    モデルを置き換え、必要に応じて ONNX ポリシーをアタッチすると、RL エージェントの動作を確認できます。

活用シーン

  • 教育とデモ – 重いネイティブバイナリのインストールを求めずに、学生に RL の概念を紹介できます。
  • 研究の再現性 – 論文の MuJoCo 実験を単一の URL として公開し、誰でも実行できます。
  • 迅速なプロトタイピング – ポリシーや環境の調整を反復し、ブラウザで即座に効果を確認できます。

エコシステムと拡張

  • mjswan Cloud – ホスト型サービス(ベータ版)。静的サイトを自分で構築せずにデモをアップロードして共有できます。
  • mjswan_playground – 単純な振り子から人型ロコモーションまで、すぐ使えるデモのキュレーションコレクション。
  • mjlab‑to‑mjswan スキル – mjlab ベンチマークスイートのタスクをウェブ対応シミュレーションに変換します。

ドキュメントとコミュニティ

ライセンス

Apache‑2.0 – 帰属表示を保持する限り、コードの使用、変更、再配布が可能です。


要点: ブラウザで MuJoCo ベースの RL 環境を紹介する軽量な方法が必要な場合(教育、研究デモの共有、インタラクティブなウェブアプリの構築など)、mjswan は物理、推論、3‑D レンダリングをサーバーコンポーネントなしで処理する既製のスタックを提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト