From bdc611efa00ed35d67a6953bc43b0931529a30c3 Mon Sep 17 00:00:00 2001 From: KraHsu Date: Sat, 20 Jun 2026 12:02:36 +0800 Subject: [PATCH] docs(wuji): use `uv run` in deploy README run commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GeneLab is a uv project; the deploy README's Run section used bare `python -m ...` / `genelab export ...`, which only work inside an already-activated venv. Prefix them with `uv run` to match the rest of the project's workflow. (The `.pixi/...` paths in the reorient mjlab-bridge scripts are left as-is on purpose — those run inside the separate wuji-mjlab pixi environment.) Co-Authored-By: Claude Opus 4.8 (1M context) --- examples/wuji/src/genelab_wuji/deploy/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/wuji/src/genelab_wuji/deploy/README.md b/examples/wuji/src/genelab_wuji/deploy/README.md index 038614d..08028bb 100644 --- a/examples/wuji/src/genelab_wuji/deploy/README.md +++ b/examples/wuji/src/genelab_wuji/deploy/README.md @@ -72,27 +72,27 @@ export LD_LIBRARY_PATH=/opt/MVS/lib/64:/opt/MVS/lib/32:$LD_LIBRARY_PATH ```bash # 0) export a trained policy to ONNX -genelab export Genelab-Reorient-Wuji-Hand-v0 PATH/model.pt --format onnx --out policy.onnx +uv run genelab export Genelab-Reorient-Wuji-Hand-v0 PATH/model.pt --format onnx --out policy.onnx # 1) smoke-test the control loop, no hardware, no ZMQ, no viewer -python -m genelab_wuji.deploy.scripts.play_real --ckpt policy.onnx --mock --no-zmq --no-viewer --steps 100 +uv run python -m genelab_wuji.deploy.scripts.play_real --ckpt policy.onnx --mock --no-zmq --no-viewer --steps 100 # 1.5) bring up the real hand bridge (needs wujihandpy): check first, then home -python -m genelab_wuji.deploy.scripts.hand_utils check # READ-ONLY: connection + encoder sanity -python -m genelab_wuji.deploy.scripts.hand_utils home # 3s ease-in-out ramp to the grasp pose +uv run python -m genelab_wuji.deploy.scripts.hand_utils check # READ-ONLY: connection + encoder sanity +uv run python -m genelab_wuji.deploy.scripts.hand_utils home # 3s ease-in-out ramp to the grasp pose # 2) vision: detect the cube and publish its tag-frame pose on ZMQ:5555 (needs MVS env) -python -m genelab_wuji.deploy.scripts.cube_world_observer --preview # terminal A -python -m genelab_wuji.deploy.scripts.toreal_viewer # terminal B (real2sim mirror) +uv run python -m genelab_wuji.deploy.scripts.cube_world_observer --preview # terminal A +uv run python -m genelab_wuji.deploy.scripts.toreal_viewer # terminal B (real2sim mirror) # 2.5) calibration check: home the hand, render live hand + observed cube in the twin -python -m genelab_wuji.deploy.scripts.calib_check # (needs the observer running) +uv run python -m genelab_wuji.deploy.scripts.calib_check # (needs the observer running) # 3) drive the real hand from the live observer feed (Genesis mirror viewer on by default, # showing the live hand + observed cube + goal; pass --no-viewer for headless). # goal modes: --goal-mode random (uniform-SO3, resampled on success) | # fixed --goal-quat w,x,y,z | external (goal from toreal_viewer ZMQ) -python -m genelab_wuji.deploy.scripts.play_real --ckpt policy.onnx --real --goal-mode random +uv run python -m genelab_wuji.deploy.scripts.play_real --ckpt policy.onnx --real --goal-mode random ``` `play_real` mirrors the live hand (encoders) + observed cube + goal in a Genesis viewer