箱庭エコシステムへの入口
ROSユーザー・MuJoCoユーザーへ
- MuJoCoの物理精度は最高だけど、ビジュアライズが弱い
- GazeboはUbuntu前提で重い。セットアップだけで一日終わる
- UnityはライセンスコストがかかりUnrealは重い。Godotを使いたいけどROSとの繋ぎ方がわからない
- ROSのメッセージ型の資産は使いたいけど、ROS環境を毎回構築したくない
- MuJoCoにアクチュエータやLiDAR・IMUのセンサーモデルを自分で実装するのはつらい
- 複数のシミュレータを繋げたとき、時刻がずれて再現性が取れない
これらは全て、箱庭で解決できます。
箱庭は「シミュレータ」ではありません。
シミュレータを作るためのプラットフォームです。
MuJoCo、Godot、Python、C++——それぞれが得意な世界で動きながら、箱庭を介して一つのシミュレーション世界に繋がります。あなたが持っているROS資産(URDF・IDL)をそのまま活かしながら、ROSのインストールは不要です。
あなたのURDF / ROS IDL
↓
箱庭エコシステム
↓
MuJoCo(物理)+ Godot(可視化)+ Python(制御)
↑ 全員が同じ時刻で動いている
複数のプロセスやシミュレータを接続すると、普通は「誰の時刻を正とするか」が問題になります。
ROSのclockは便利ですが、複数シミュレータ間の時刻差を常に一定範囲内に収めることまでは保証しません。
箱庭は、この問題をプラットフォーム側で扱います。
どんな箱庭アセットのペア (i, j) を選んでも、シミュレーション時刻差は常に最大許容遅延時間 d_max 以内に収まります。
|T_i(t) - T_j(t)| ≤ d_max (任意の時刻 t において)
この性質により、MuJoCo、Godot、Python制御プロセスなどが別々に動いていても、同じ箱庭時刻の上で再現性のあるシミュレーションを構成できます。
このチュートリアルのゴールは、TurtleBot3をゲームパッドで操作するです。
ゲームパッド(Python)
↓ Twist コマンド(PDU)
MuJoCo(物理演算 / LiDAR)
↓
Godot(3D可視化)
↑ 全て箱庭時刻で同期
このたった一つの体験の中に、箱庭の真骨頂が全て詰まっています。
ここで学べること:
- ROS資産(URDF・IDL)を、ROSなしで使う方法
- MuJoCoとGodotを設定ファイルだけで繋ぐ方法
- 時刻同期が「勝手についてくる」体験
- センサーモデル(LiDAR)がすでに用意されている安心感
- 「つなげることが、意外に簡単だ」という気づき
| OS | 対応状況 |
|---|---|
| macOS (arm64) | ✅ |
| Linux (x86_64) | ✅ |
| Windows (x86_64 native) | ✅ |
| Windows (WSL2) | ✅ |
必要なもの:PythonとC++バイナリのみ。ROSのインストール不要。
┌──────────────────────────────────────────────┐
│ Registry(アセット鋳造) │
│ xacro/URDF → URDF / MJCF / GLB / Godotプロファイル │
│ hakoniwa-mbody-registry │
└─────────────────┬────────────────────────────┘
│
┌────────────▼────────────┐
│ Core & PDU │
│ 共有メモリ(時刻/PDU) │
│ hakoniwa-core-pro │
└──────┬──────────┬───────┘
│ │
┌─────────▼──┐ ┌───▼────────────────┐
│ 可視化 │ │ 物理 │
│ hakoniwa- │ │ hakoniwa- │
│ godot │ │ mujoco-robots │
│ Godotで │ │ アクチュエータ・ │
│ 3D描画 │ │ センサーモデル付き │
└────────────┘ └────────────────────┘
| レイヤー | リポジトリ | 役割 |
|---|---|---|
| Registry | hakoniwa-mbody-registry | URDF→MJCF/GLB変換、Godotプロファイル生成 |
| Core & PDU | hakoniwa-core-pro | 時刻同期エンジン |
| PDU定義 | hakoniwa-pdu-registry | ROS IDLベースのデータ型定義 |
| PDU通信 | hakoniwa-pdu-endpoint | SHM / Zenoh / MQTT / Storage |
| 可視化 | hakoniwa-godot | GodotをPDUノードとして動かすaddon |
| 物理 | hakoniwa-mujoco-robots | MuJoCo + アクチュエータ・センサーモデル |
この Getting Started では、まず hakoniwa-mujoco-robots と hakoniwa-godot を使い、TurtleBot3 を動かすところから始めます。各リポジトリの詳細は、動かした後で理解すれば十分です。
MuJoCo で物理演算しているTurtleBot3 が、Godot の画面にリアルタイムで現れる。ゲームパッドを動かすと、Godot の中のロボットが動く。LiDAR のスキャンも可視化される。
この「繋がった!」という瞬間が、箱庭の真骨頂です。
デモ動画:
tb3-demo.bashで起動した TurtleBot3 を、Godot 上で描画している様子
| 知りたいこと | リンク |
|---|---|
| 箱庭の時刻同期の仕組み | hakoniwa-core-pro |
| PDUシステムを理解したい | hakoniwa-pdu-registry |
| ロボットモデルを追加したい | hakoniwa-mbody-registry |
| GodotとROSを繋げたい | hakoniwa-godot |
| ドローンシミュレーションをやりたい | 箱庭ドローン |
箱庭はオープンソースで開発されています。ビジネス利用・導入相談はお気軽にご連絡ください。
