結論
Unitree G1をブラウザ上で動かしたい場合、大きく3つの選択肢があります。
① MuJoCo WASM(最もおすすめ)
もし
- G1のMJCFをそのまま使いたい
- 本格的な物理シミュレーションをしたい
ならこれがベストです。
現在Google公式のMuJoCoにはJavaScript/WebAssembly版があります。
特徴
- MJCF対応
- URDF対応
- STL・OBJも読める
- G1公式MJCFをそのまま利用可能
- ブラウザだけで動作可能
ただし、
「アップロード画面」
などは自分で少し作る必要があります。
② Three.js + URDFLoader(最も簡単)
もし
「G1をブラウザで表示したい」
だけならこれが一番簡単です。
特徴
- URDF対応
- ドラッグ&ドロップ対応
- 関節スライダー
- Three.jsだけで動く
ただし
物理シミュレーションはありません。
つまり
- ポーズ変更
- 可視化
- GUI
向けです。
③ Three.js + Rapier
中間的な選択肢です。
特徴
- WebAssembly物理
- 軽量
- 高速
- Three.jsと相性が良い
しかし
URDFやMJCFを直接読む機能はありません。
自分で
- 関節
- 剛体
- コライダ
を作る必要があります。
クラウド型シミュレータ
ブラウザで見えていても、
実際にはサーバで動いているものがあります。
例えば
- Isaac Sim
- Gazebo
- Webots.cloud
です。
これは
ブラウザ ↓ GPUサーバ ↓ シミュレーション
という構成になります。
ONNXは動く?
結論
はい。
現在は
ONNX Runtime Web
があります。
つまり
ブラウザ ↓ ONNX Runtime ↓ 推論
ができます。
対応
- WASM
- WebGPU
- WebGL
- WebNN
G1との相性
これはかなり重要です。
Unitree公式のG1には
- URDF
- MJCF
の両方が最初から付属しています。
つまり
G1 ↓ MJCF ↓ MuJoCo WASM
という流れが非常に自然です。
比較表
| システム | 物理 | URDF | MJCF | ブラウザのみ | おすすめ度 |
|---|---|---|---|---|---|
| MuJoCo WASM | ★★★★★ | ○ | ○ | ○ | ★★★★★ |
| Three.js + URDFLoader | ☆☆☆☆☆ | ○ | × | ○ | ★★★★☆ |
| Three.js + Rapier | ★★★★☆ | △ | △ | ○ | ★★★★☆ |
| Ammo.js | ★★★★☆ | × | × | ○ | ★★★☆☆ |
| PhysX WASM | ★★★★☆ | × | × | ○ | ★★★☆☆ |
| Webots.cloud | ★★★★☆ | ○ | × | クラウド | ★★★☆☆ |
| Gazebo + GzWeb | ★★★★★ | ○ | × | クラウド | ★★☆☆☆ |
| Isaac Sim | ★★★★★ | ○ | ○ | クラウド | ★★★★☆ |
もしG1をブラウザで動かすなら
レポートでは次の順番を推奨しています。
① MuJoCo WASM
MJCFアップロード ↓ ブラウザ内FSへ保存 ↓ mj_loadXML() ↓ 物理開始 ↓ ONNX追加
もっとも自然な構成です。
② Three.js URDFLoader
URDF読込 ↓ OrbitControl ↓ スライダー ↓ ポーズ変更
完成まで数時間程度。
③ Rapier
Three.js ↓ Rapier ↓ 剛体生成 ↓ 関節生成 ↓ ONNX
物理を少し入れたいならこれ。
レポート全体の最終結論
調査では次のようにまとめられています。
本格的なG1シミュレーション
→ MuJoCo WASM
すぐ表示したい
→ Three.js + URDFLoader
軽量な物理付き
→ Three.js + Rapier