feat(pybot): 进程内实时预测闭环(--loop)与帧源/节拍修复

- 新增 run_loop 闭环:F 帧+H 步历史双滑窗,冷启动重复同帧+零动作,
  每步 采样→推理→执行→回写,hz 节拍控制,可选同步录制
- --loop CKPT/--hz/--loop-steps 参数,按 .hef 后缀选 Hailo/PyTorch 后端,
  actpred 软依赖(仅 --loop 时 import),保持 pybot 零依赖
- P1-2 帧源修复:闭环改从 camera 守护线程队列取最近 F 帧(低延迟),
  替代 capture() 同步曝光阻塞,framerate/capacity 配置真正生效
- P1-1 overrun 告警:超时步记录实际耗时,汇总 overrun 比例并给降频建议
- 剔除 Speaker.delay 发声阻塞,speaker 补 delay=0 非阻塞
- 新增 tests/test_loop.py 11 用例(冷启动/历史滑动/索引映射/帧源等)
This commit is contained in:
qing committed 2026-08-14 07:52:07 +08:00
1 parent 5af863a2c5
commit fe12dd7b33
4 files changed
+477 -2

No files matched your search

+19 -1
View File
@@ -28,9 +28,27 @@ cat scripts/std.mt | ./_run.sh # 与 bot4cj 相同的管道用法
./_run.sh --dry-run scripts/std.mt # Mock 总线,动作序列到 stdout
./_run.sh --test roundtrip in.mt out.mt # 解析↔序列化往返自检
./_run.sh --verbose scripts/std.mt # DEBUG 日志(stderr)
./_run.sh --record data/ep scripts/std.mt # 录制 actpred 格式 episode
```
`-i` / `-o` 参数位保留(reserved),未来对接 [actpred](../actpred/) 动作预测。
`-i` / `-o` 参数位保留(reserved),未来对接跨进程 FIFO。
### 实时预测闭环(`--loop`)
`--loop CKPT` 进入进程内闭环:采样 → actpred 推理 → 执行 → 回写历史。
脚本提供硬件配置与 `@Action` 表头(动作向量索引映射),不执行脚本动作行。
```bash
./_run.sh --loop ../actpred/checkpoints/best_inference.pt --hz 10 scripts/std.mt
./_run.sh --loop actpred_pretrain.hef --hz 20 --loop-steps 100 scripts/std.mt # NPU 后端
```
- checkpoint 后缀 `.hef` → Hailo NPU 后端,否则 → PyTorch 后端
- `hz` 须 ≥ 推理 + 执行耗时(ONNX ~11ms / Hailo ~12ms,hz ≤ 50 安全)
- `@Action` 表头列数须 ≤ `action_dim`(默认 18),闭环中跳过 `spk.delay` 阻塞
- **帧源**:闭环从 camera 守护线程队列取最近 F 帧(无阻塞),`@Camera` 的
`framerate` 建议 ≥ 2×`hz` 以保证帧新鲜度;`capacity` 应 ≥ F(帧窗长度)。
部署时若日志出现 `loop overrun` 告警,说明 `hz` 超过推理+执行能力,应降低 `hz`
## 目录