fix(pybot): 录制 spk.F 列恒 0——与模型 FIXED_OUTPUT 对齐

F2 方案下推理端 spk.F 固定输出 0(bins.FIXED_OUTPUT),而脚本真值
可达 1000Hz,保留真值产生"模型 0 vs 数据 1000"的评估伪影(14.5K)。
录制时写常量 0 消除伪影;spk.delay 微步录制下恒 10.0 已与模型一致。
data_v3(296MB 可复现录制产物)加入 .gitignore。
This commit is contained in:
qing committed 2026-08-15 19:48:09 +08:00
1 parent 37feb09185
commit 286e632288
2 files changed
+11

No files matched your search

+3
View File
@@ -25,3 +25,6 @@ waf/certs/
# 运行时日志(HailoRT 等)
hailort.log
# 录制产物(可复现:mtc DSL → 编译 → pybot --record)
actpred/data_v3
+8
View File
@@ -17,6 +17,12 @@ from pathlib import Path
log = logging.getLogger("pybot.recorder")
# spk.F 列(动作契约列 10)与模型固定输出对齐:F2 方案下推理端该列恒为
# 常量 0(actpred/bins.py FIXED_OUTPUT),而脚本真实值可达 1000Hz——
# 保留真值会产生"模型 0 vs 数据 1000"的评估伪影。v3 起录制时写常量 0。
# spk.delay(列 11)无需处理:微步录制下恒为 10.0,与 FIXED_OUTPUT 一致。
SPK_F_COL = 10
class EpisodeRecorder:
"""录制 actpred 格式的 episode(images/*.jpg + actions.npy [+ imu.npy])
@@ -80,6 +86,8 @@ class EpisodeRecorder:
src = np.asarray(action_vec, dtype=np.float32).ravel()
n = min(len(src), self.action_dim)
vec[:n] = src[:n]
if self.action_dim > SPK_F_COL:
vec[SPK_F_COL] = 0.0
self._actions.append(vec)
if imu_vec is None: