fix(pybot×actpred): v3 审计 P2 清零——验收链 fixed_range + 导出断言 + overrun 节流

- v3-P2-1: _npu_test/_onnx_validate 按 normalize_mode 分支(fixed_range 免 stats,
  HailoPredictor 透传模式,torch 参考同口径反归一化)
- v3-P2-2: export_deploy/export_onnx 一致性 diff 超 1e-4 即 sys.exit(P2-f 闭环)
- v3-P2-3: run_loop overrun 告警节流(第1次+每100次),降 hz 建议仅 >10% 输出
- P2-a1: default_column_weights 扩展列(action_dim>18)默认 1.0
- P2-c: 补 predictor 异常清理路径测试(异常传播 + finally 落盘)
- P2-d/P2-e: Resize 口径与 resume scheduler T_max 语义文档化
- R2-4: _set.sh 安装后断言 CPU 版 torch,误装 CUDA 即拦截
测试: pybot 89 passed (+1)、actpred 148 passed/18 skipped
This commit is contained in:
qing committed 2026-08-14 23:01:56 +08:00
1 parent ad3a624b4c
commit 9179281420
13 files changed
+161 -54

No files matched your search

+15 -6
View File
@@ -308,9 +308,13 @@ class RobotStruct:
time.sleep(remain)
else:
overrun += 1
log.warning("loop overrun: step %d took %.1fms > %.1fms "
"(推理+执行超过周期,实际频率已低于 %.1fHz)",
step, (dt - remain) * 1000, dt * 1000, hz)
# 告警节流:第 1 次及每 100 次汇总一次,避免持续 overrun
# 刷屏(50% overrun @10Hz 时原实现每秒 5 条告警)
if overrun == 1 or overrun % 100 == 0:
log.warning("loop overrun ×%d: step %d took %.1fms > "
"%.1fms(推理+执行超过周期)",
overrun, step, (dt - remain) * 1000,
dt * 1000)
finally:
# max_steps 正常退出与 Ctrl-C(KeyboardInterrupt)都要落盘,
# 否则闭环录制的 actions.npy/imu.npy 全部丢失
@@ -318,9 +322,14 @@ class RobotStruct:
path = recorder.flush()
log.info("episode saved: %s", path)
if overrun:
log.warning("closed loop overrun %d/%d steps (%.0f%%),"
"建议降低 --hz 或检查推理后端延迟",
overrun, step, 100.0 * overrun / max(step, 1))
ratio = overrun / max(step, 1)
if ratio > 0.10: # 工程约束:overrun 比例 >10% 才建议降 hz
log.warning("closed loop overrun %d/%d steps (%.0f%%),"
"建议降低 --hz 或检查推理后端延迟",
overrun, step, 100.0 * ratio)
else:
log.info("closed loop overrun %d/%d steps (%.1f%%)",
overrun, step, 100.0 * ratio)
log.info("closed loop stop after %d steps", step)
def _loop_recent_frames(self, camera_var, F):