Skip to content

hakoniwalab/hakoniwa-getting-started

Repository files navigation

Ask DeepWiki

箱庭 (Hakoniwa) — はじめよう

箱庭エコシステムへの入口


あなたはこんな悩みを抱えていませんか?

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可視化)
      ↑ 全て箱庭時刻で同期

このたった一つの体験の中に、箱庭の真骨頂が全て詰まっています。

ここで学べること:

  1. ROS資産(URDF・IDL)を、ROSなしで使う方法
  2. MuJoCoとGodotを設定ファイルだけで繋ぐ方法
  3. 時刻同期が「勝手についてくる」体験
  4. センサーモデル(LiDAR)がすでに用意されている安心感
  5. 「つなげることが、意外に簡単だ」という気づき

対応プラットフォーム

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-robotshakoniwa-godot を使い、TurtleBot3 を動かすところから始めます。各リポジトリの詳細は、動かした後で理解すれば十分です。

MuJoCo で物理演算しているTurtleBot3 が、Godot の画面にリアルタイムで現れる。ゲームパッドを動かすと、Godot の中のロボットが動く。LiDAR のスキャンも可視化される。

この「繋がった!」という瞬間が、箱庭の真骨頂です。

TurtleBot3 demo video

デモ動画: tb3-demo.bash で起動した TurtleBot3 を、Godot 上で描画している様子

クイックスタート(Windows / WSL2)


もっと深く知りたい方へ

知りたいこと リンク
箱庭の時刻同期の仕組み hakoniwa-core-pro
PDUシステムを理解したい hakoniwa-pdu-registry
ロボットモデルを追加したい hakoniwa-mbody-registry
GodotとROSを繋げたい hakoniwa-godot
ドローンシミュレーションをやりたい 箱庭ドローン

開発・提供元

合同会社 箱庭ラボ

箱庭はオープンソースで開発されています。ビジネス利用・導入相談はお気軽にご連絡ください。

About

The entry point to the Hakoniwa simulation ecosystem.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors