Part of #1239
依赖:建议在 #1240、#1241 之后执行(动同一批入口文件,先完成小收敛可减少冲突面)。
问题
play/推理实现共 8 处:train_rsl_rl.play_rsl_rl、train_offpolicy.play_offpolicy、train_appo.play_appo、train_him_ppo.play_him_ppo、train_hora_distill 内 play、play_interactive.py、play_viser.py、manip_loco/play_go2_arm_ik_only.py。而 src/unilab/visualization/interactive_playback.py 已提供 4 个 create_*_playback_session 工厂,训练入口却一个都不用,各写各的 actor 构造 + checkpoint 加载 + playback。另外:
scripts/play_viser.py:87-94 import play_interactive.py 的私有函数(_backend_adapter、_infer_checkpoint_actor_input_dim 等);
scripts/play_interactive.py:349-362 自实现四元数→旋转矩阵,src/unilab/utils/rotation.py 已有 np_matrix_from_quat;
play_interactive.py:148-163 的 checkpoint 维度猜测与 training/sim2sim.py:226 的 policy_load_dim_guard 职责重叠。
做什么
- 四个训练入口的
play_* 改为复用对应 create_*_playback_session 工厂,脚本只保留 CLI 解析与参数组装;
play_interactive.py 中被复用的私有函数提升为 visualization/playback.py(或新公共模块)的公开函数;
- 四元数函数替换为
utils/rotation.py 现有实现;checkpoint 维度推断统一走 policy_load_dim_guard。
不做什么
manip_loco/play_go2_arm_ik_only.py 与 train_hora_distill 内 play 不在本期(前者是任务专属诊断工具,后者随 hora 流程);
- 不改 play 的行为、渲染效果与 ONNX/JIT 导出产物。
预计规模
约 10 个文件,净 +250/-500 行。若评审认为超 800 行上限,拆为"先提公共函数、再逐个入口切换"两个 PR。
验收
- sim2sim 契约校验路径不变;
- 四个入口的 play 冒烟通过;
play_viser.py 不再 import 任何下划线函数;
make test-all 通过。
Part of #1239
依赖:建议在 #1240、#1241 之后执行(动同一批入口文件,先完成小收敛可减少冲突面)。
问题
play/推理实现共 8 处:
train_rsl_rl.play_rsl_rl、train_offpolicy.play_offpolicy、train_appo.play_appo、train_him_ppo.play_him_ppo、train_hora_distill内 play、play_interactive.py、play_viser.py、manip_loco/play_go2_arm_ik_only.py。而src/unilab/visualization/interactive_playback.py已提供 4 个create_*_playback_session工厂,训练入口却一个都不用,各写各的 actor 构造 + checkpoint 加载 + playback。另外:scripts/play_viser.py:87-94importplay_interactive.py的私有函数(_backend_adapter、_infer_checkpoint_actor_input_dim等);scripts/play_interactive.py:349-362自实现四元数→旋转矩阵,src/unilab/utils/rotation.py已有np_matrix_from_quat;play_interactive.py:148-163的 checkpoint 维度猜测与training/sim2sim.py:226的policy_load_dim_guard职责重叠。做什么
play_*改为复用对应create_*_playback_session工厂,脚本只保留 CLI 解析与参数组装;play_interactive.py中被复用的私有函数提升为visualization/playback.py(或新公共模块)的公开函数;utils/rotation.py现有实现;checkpoint 维度推断统一走policy_load_dim_guard。不做什么
manip_loco/play_go2_arm_ik_only.py与train_hora_distill内 play 不在本期(前者是任务专属诊断工具,后者随 hora 流程);预计规模
约 10 个文件,净 +250/-500 行。若评审认为超 800 行上限,拆为"先提公共函数、再逐个入口切换"两个 PR。
验收
play_viser.py不再 import 任何下划线函数;make test-all通过。