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 @@ xmDriver  xmNavigation  xmMessaging  -xmViewer +xmViewer  +xmSimulator @@ -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 xmFirmware xmBoard xmMessaging + xmSimulator xmBase
Σ @@ -30,6 +31,7 @@ A cohesive icon set for the XMotion family. Each icon shares one visual language xmFirmware
ζ xmBoard
κ xmMessaging
π + xmSimulator
Ψ @@ -43,6 +45,7 @@ A cohesive icon set for the XMotion family. Each icon shares one visual language | **xmFirmware** | `#46B358` green | ζ | a UART decode — logic-analyzer waveform + the decoded byte `0x5A` — firmware (Zephyr) | | **xmBoard** | `#E5604D` coral | κ | a PCB fan-out — a quad IC footprint, a structured 45° trace fan onto a via column, and short top/bottom escapes — electronics (KiCAD) | | **xmMessaging** | `#2E90FA` signal blue | π | a brokerless peer-to-peer mesh — nodes exchanging messages directly (the application communication layer) | +| **xmSimulator** | `#B0C918` chartreuse | Ψ | an isometric quadruped robot standing on the ground — legged locomotion / physics simulation (MuJoCo) | ## The family mark — xmMotion diff --git a/branding/icons/avatar/png/xmsimulator.png b/branding/icons/avatar/png/xmsimulator.png new file mode 100644 index 0000000..c972654 Binary files /dev/null and b/branding/icons/avatar/png/xmsimulator.png differ diff --git a/branding/icons/avatar/xmsimulator.svg b/branding/icons/avatar/xmsimulator.svg new file mode 100644 index 0000000..f08aaee --- /dev/null +++ b/branding/icons/avatar/xmsimulator.svg @@ -0,0 +1,5 @@ + + xmSimulator — Ψ (avatar) + + + diff --git a/branding/icons/xmsimulator.svg b/branding/icons/xmsimulator.svg new file mode 100644 index 0000000..9e0294c --- /dev/null +++ b/branding/icons/xmsimulator.svg @@ -0,0 +1,21 @@ + + xmSimulator — quadruped robot, isometric (legged locomotion / physics simulation) + + + + + + + + + + + + + + + + + + + diff --git a/branding/preview/index.html b/branding/preview/index.html index da187cb..0a869a2 100644 --- a/branding/preview/index.html +++ b/branding/preview/index.html @@ -83,6 +83,7 @@

family strip

{ id:"xmfirmware", name:"xmFirmware · ζ", color:"#46B358" }, { id:"xmboard", name:"xmBoard · κ", color:"#E5604D" }, { id:"xmmessaging", name:"xmMessaging · π", color:"#2E90FA" }, + { id:"xmsimulator", name:"xmSimulator · Ψ", color:"#B0C918" }, { id:"xmmotion", name:"xmMotion · robot", color:"#EAEFF7" }, { id:"xmmotion-mark",name:"xmMotion · Ξ", color:"#EAEFF7" }, ]; diff --git a/components/simulator b/components/simulator new file mode 160000 index 0000000..65b6d83 --- /dev/null +++ b/components/simulator @@ -0,0 +1 @@ +Subproject commit 65b6d83883fc66cde40d82b678b708b2f31feb6f