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.