协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
playback【开发与工程】Prepare, locate, and safely route interactive Isaac Gym playback of trained AgiBot X1 locomotion checkpoints, including viewer and Logitech F710 control diagnostics.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this route to inspect and then interactively run a training checkpoint
for the registered x1_dh_stand task in Isaac Gym. Do not use it to train,
export JIT/ONNX, or run MuJoCo sim2sim.
humanoid/scripts/play.py requires NVIDIA CUDA plus Isaac Gym Preview 4.
It is an interactive GPU/viewer workflow, not a CPU workflow. Preview 4 was
unavailable during skill construction, so native playback is
BLOCKED_REQUIRED_BACKEND and was not claimed as executed. A modern PyTorch
or CUDA installation alone does not prove compatibility.
Before playback, require all of the following:
import humanoid resolves;pygame, cv2, wandb, and tensorboard available;See workflows.md for the installation and import contract. Never substitute a fake simulator backend.
| Intent | Route |
|---|---|
| Select a trained run/checkpoint and open Isaac Gym viewer | Stay here |
| Diagnose axes, F710 directions, or policy input history | joystick-and-observation.md |
| Diagnose imports, model lookup, CUDA, viewer, or shutdown | troubleshooting.md |
| Produce or resume a checkpoint | Hand off to the training sub-skill |
| Turn a runner checkpoint into JIT or ONNX | Hand off to the export sub-skill after validating the checkpoint here |
| Run an exported policy in MuJoCo | Hand off to the sim2sim sub-skill; do not pass a runner checkpoint as an exported model |
Stay at repository root. Confirm the package and robot resources are installed and the trained run is present. Playback reads a full runner checkpoint, not an exported actor file.
Select explicitly. The default experiment is x1_dh_stand. Use the run
directory name with --load_run; use the integer suffix from
model_<iteration>.pt with --checkpoint.
Preflight without launching. From this sub-skill directory, run:
python scripts/playback_preflight.py \
--repo-root /path/to/agibot_x1_train \
--load-run '<date_time><run_name>' \
--checkpoint 1000 \
--require-joystick
The helper performs only filesystem, module-spec, CUDA metadata, display,
and joystick-device checks. It never imports Isaac Gym, deserializes the
checkpoint, opens a viewer, starts pygame, or launches playback. Read its
CLI help with --help.
Inspect the emitted command. A normal interactive command is:
python humanoid/scripts/play.py \
--task=x1_dh_stand \
--load_run='<date_time><run_name>' \
--checkpoint=1000 \
--num_envs=1 \
--rl_device=cuda:0 \
--sim_device=cuda:0
Do not add --headless for viewer playback. Do not add --resume:
play.py forces the runner's resume setting before policy creation.
Center the controller before launch. The implementation has no deadzone, no command clamping, and no implemented button-4 gate. Begin with one environment and small stick motion. Use the exact mapping in joystick-and-observation.md.
Operate the viewer. Esc requests quit. V toggles synchronized drawing.
The environment updates graphics from env.step; optional video rendering
is disabled by the script constant RENDER = False.
Record provenance. Capture experiment, run directory, checkpoint number, task, devices, and any local code changes. Treat behavior as unverified if the backend, viewer, or controller checks were skipped.
--task=x1_dh_stand is the only registered X1 playback task in this graph.--load_run=NAME selects a directory below
logs/<experiment>/exported_data/. --run_name does not select it.--load_run. Do not pass literal
--load_run=-1: the parser stores it as a string while model discovery
compares against integer -1, causing lookup of a directory literally named
-1.--checkpoint=-1 validly selects the latest model candidate. Omit it for the
same configured default. A nonnegative N selects exactly model_N.pt.--experiment_name=NAME changes the log root used for loading. It must match
where the run was trained.--num_envs is applied after the script's min(..., 10) override, so an
explicit value can exceed 10. Use 1 initially and never assume the script
will clamp the CLI value.--run_name only affects the newly constructed playback log/video name; it
does not replace --load_run.--headless suppresses the viewer, conflicts with this interactive route,
and still reaches an unconditional camera-setting call. Do not use it as a
workaround for a broken display.The complete project/custom argument table and exact discovery behavior are in workflows.md.
Reject or stop the run if any invariant fails:
model_<integer>.pt file;model_state_dict, not
a JIT/ONNX policy;[num_envs, 3102] = 66 history frames × 47 values;Use joystick-and-observation.md for input/action details and troubleshooting.md for fail-closed recovery.