评估与回放

# 最近一次运行
uv run eval --algo ppo --task go2_joystick_flat --sim motrix --load-run -1

# 无头视频导出
uv run eval --algo ppo --task go2_joystick_flat --sim motrix \
    --load-run -1 --render-mode record

# Off-policy 回放可以跳过 ONNX 导出,但仍然录制 MP4
uv run eval --algo sac --task g1_walk_flat --sim mujoco --load-run -1 \
    --render-mode record training.export_onnx=false

# 演示(首次运行会从 HF 下载检查点)
uv run demo dance

渲染模式:

  • interactive — 打开查看器窗口(macOS Motrix 上的默认值)。

  • record — 将 MP4 写入 runs/<run>/playback/

  • none — 跳过渲染,仅计算指标。

training.export_onnx=false 目前仅适用于 off-policy 回放路径 (scripts/train_offpolicy.py 以及使用 --algo sac|td3|flashsac 的 CLI 运行)。它会跳过 policy.onnx 的导出与校验,但仍会执行回放和视频录制。

MuJoCo viewer 可视化脚本

常规评估和视频导出优先使用 uv run eval。需要直接打开 mujoco.viewer 调试策略时,可以使用低层脚本 scripts/play_interactive.py

scripts/play_interactive.py 是通用 MuJoCo viewer 入口,适合 PPO、APPO、 SAC、FlashSAC 和 HORA distill 的策略可视化。它使用 --algo / --task / --sim 选择算法和 owner config;无论 --sim 选择 MuJoCo 还是 Motrix,窗口都使用 mujoco.viewer 可视化,--sim 只决定读取哪份配置。

# 使用 owner config 中的 interactive.action_mode;全局默认是 zero action
uv run scripts/play_interactive.py --algo ppo --task go2_joystick_flat --sim mujoco

# 随机动作
uv run scripts/play_interactive.py --algo ppo --task go2_joystick_flat --sim mujoco \
    interactive.action_mode=random

# 策略动作
uv run scripts/play_interactive.py --algo ppo --task go2_joystick_flat --sim mujoco \
    algo.load_run=-1 interactive.action_mode=policy

uv run scripts/play_interactive.py --algo flashsac --task g1_walk_flat --sim motrix \
    algo.load_run=-1 interactive.action_mode=policy

uv run scripts/play_interactive.py --algo ppo --task go2_joystick_flat --sim mujoco \
    interactive.action_mode=policy interactive.keyboard=true

动作模式通过 interactive.action_mode=zero|random|policy 选择;不传时使用 owner config 中的设置(全局默认是 zero,部分任务 YAML 会覆盖为 policy)。 键盘控制通过 Hydra override 开启:interactive.action_mode=policy interactive.keyboard=true。开启键盘控制时会检查 policy obs 是否包含 velocity command,不满足时退出。处于 policy 模式、且 locomotion 速度指令任务的 policy obs 中包含 velocity command 时,窗口会自动显示绿色目标速度和蓝色当前速度箭头; zerorandom 模式不显示速度箭头。

底层 API 请参阅 unilab.visualization.playback