diff --git a/.gitmodules b/.gitmodules
index 6dff014..774cb47 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -22,3 +22,7 @@
path = components/messaging
url = https://github.com/rxdu/xmMessaging.git
branch = main
+[submodule "components/simulator"]
+ path = components/simulator
+ url = https://github.com/rxdu/xmSimulator.git
+ branch = main
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd00c66..f325e5d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,6 +40,7 @@ option(XMOTION_WITH_DRIVER "Build xmDriver (host hardware drivers)" ON)
option(XMOTION_WITH_NAVIGATION "Build xmNavigation (motion algorithms)" ON)
option(XMOTION_WITH_VIEWER "Build xmViewer (visualization)" OFF)
option(XMOTION_WITH_MESSAGING "Build xmMessaging (communication layer)" OFF)
+option(XMOTION_WITH_SIMULATOR "Build xmSimulator (physics simulation)" OFF)
option(BUILD_TESTING "Build component tests" OFF)
# -- Helper: add a component submodule if it is present ---------------------
@@ -78,7 +79,13 @@ if(XMOTION_WITH_MESSAGING)
xmotion_add_component(xmMessaging components/messaging)
endif()
+# xmSimulator: MuJoCo-backed physics simulation (world · sensors · dynamics).
+# Default OFF — it pulls the MuJoCo dependency; opt-in for apps that simulate.
+if(XMOTION_WITH_SIMULATOR)
+ xmotion_add_component(xmSimulator components/simulator)
+endif()
+
message(STATUS "xMotion ${PROJECT_VERSION}: configured "
"(TELEMETRY=${XMOTION_WITH_TELEMETRY} DRIVER=${XMOTION_WITH_DRIVER} "
"NAVIGATION=${XMOTION_WITH_NAVIGATION} VIEWER=${XMOTION_WITH_VIEWER} "
- "MESSAGING=${XMOTION_WITH_MESSAGING})")
+ "MESSAGING=${XMOTION_WITH_MESSAGING} SIMULATOR=${XMOTION_WITH_SIMULATOR})")
diff --git a/README.md b/README.md
index f3a98e7..adee1c6 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,8 @@
-
+
+
@@ -33,10 +34,11 @@ This repository is the **umbrella**: a thin CMake superbuild that assembles the
| **∇** | xmNavigation | motion algorithms — planning · control · estimation · mapping · *centerpiece* | [rxdu/xmNavigation](https://github.com/rxdu/xmNavigation) |
| **π** | xmMessaging | application communication — typed pub/sub · request/response · zero-copy transport | [rxdu/xmMessaging](https://github.com/rxdu/xmMessaging) |
| **γ** | xmViewer | visualization | [rxdu/quickviz](https://github.com/rxdu/quickviz) |
+| **Ψ** | xmSimulator | physics simulation — MuJoCo world · sensors · dynamics | [rxdu/xmSimulator](https://github.com/rxdu/xmSimulator) |
1 *xmTelemetry — the production observability SDK and tooling — is privately maintained; available for production integrations.*
-Component names follow [ADR 0003](docs/adr/0003-naming-and-branding.md); the Greek letters (κ ζ Σ τ μ ∇ γ π) are retained as logos only — every repo, submodule path, and icon file now carries its functional name. Everything builds on **xmBase**; dependencies point downward only. Two pairs span the boundary: **xmBase/xmDriver** on the host, **xmFirmware/xmBoard** on the embedded target — with **xmNavigation** the motion-algorithms core.
+Component names follow [ADR 0003](docs/adr/0003-naming-and-branding.md); the Greek letters (κ ζ Σ τ μ ∇ γ π Ψ) are retained as logos only — every repo, submodule path, and icon file now carries its functional name. Everything builds on **xmBase**; dependencies point downward only. Two pairs span the boundary: **xmBase/xmDriver** on the host, **xmFirmware/xmBoard** on the embedded target — with **xmNavigation** the motion-algorithms core.
## Applications
diff --git a/branding/README.md b/branding/README.md
index a02c13b..6e1355d 100644
--- a/branding/README.md
+++ b/branding/README.md
@@ -20,6 +20,7 @@ A cohesive icon set for the XMotion family. Each icon shares one visual language