unitree-g1-mujoco-brainco / VALIDATION.md
davidwei79's picture
Complete reviewer documentation and retain camera helper entrypoints
8a9ca7c verified
|
Raw History Blame Contribute Delete
3.54 kB

Experimental BrainCo Validation (2026-09-24)

Tested with MuJoCo 3.12.0, Python 3.12.14, EGL and the workspace's pinned CycloneDDS build 5041f3560c088c99e5088b2b8520b69169621196.

  • 12 Hub unit/physics/render tests pass, including six independent motors per hand, coupling, contact-limited closure, reset and fork-aware asset hydration.
  • Runtime snapshot 9fc57a0c890c60d45e01d47c27f7010935f738dc of davidwei79/unitree-g1-mujoco-brainco passed the matching LeRobot acceptance test twice. The first run began with an empty Hugging Face cache. It used the normal Hub downloader, no local resolver or simulator substitution.
  • Five poses per run: both open, both partially closed, left only, right only with elbow movement, both reopen. Gravity enabled; measured hand tracking error required below 0.03 normalized units; startup and shutdown checked.
  • Four CLI-validation cases pass (immutable pins and bounded viewer options).
  • Existing live DDS body and ZMQ camera smoke tests passed separately for BrainCo, dummy, Dex1 and Dex3.
  • Visual open/closed images were inspected headlessly. No native X-window, headset, physical-hand or handshake-dataset replay acceptance is claimed.

The matching LeRobot changes are on the local work/brainco-simulation-replay branch, not yet merged upstream. These results do not imply released LeRobot supports the BrainCo option. See BRAINCO.md for contract and limitations.

Historical Gripper Update (Not BrainCo Evidence)

The following notes are retained from the original model repository and describe an earlier environment and validation scope, not the current publication status.

Validated with MuJoCo 3.3.7, Python 3.12 and EGL offscreen rendering.

  • Five regression tests passed using real MuJoCo: both variants and their body control mappings, gripper closure under external PD with a 20 N force cap, independent wrist-camera motion, rendering and shared-memory publication of all three 640 × 480 streams, and loading the portable 33-joint gripper URDF.
  • Gripper scene: nq=40, nv=39, nu=33. Hand scene: nq=50, nv=49, nu=43. Both retain the 29 body joints in the original DDS order. Both also retain global_view in addition to the three streamed cameras.
  • The closure test ran 250 physics steps (1 simulated second), reached closure on both grippers, stayed within the 20 N actuator limit and reported no MuJoCo numerical warnings.
  • Original hand/no-hand model assets are retained. The hand camera variant adds cameras to a copy of the original model.

The regression tests replace only the DDS dependency with a test double. A complete live LeRobot/Gym/DDS/ZMQ connection was not run here because Gymnasium, Unitree SDK2/CycloneDDS, ZMQ and OpenCV were unavailable in the execution environment. tests/smoke_live.py is included to run that check on a machine with the runtime dependencies installed. The ZMQ publisher and message serializer are unchanged; the configured camera list now includes the wrists.

The Gym wrapper's acceleration contribution is restricted to three values, matching its declared 97-value observation space. This fixes the original wrapper's mismatch of 100 returned values versus 97 declared values.

Prepared against Hugging Face model revision a38dc8617f0fca51b38e9354dc58ee35ad850fb5, with the LeRobot loader and camera configuration reviewed at b6ec0060779550c0a157ae34feb89e0cf86012a8. The archive is a complete local model-repository update; it has not been published to Hugging Face.