fix(closed_loop): 一致性打分错位一步(对齐 last[3]→last[4],原来每次重规划奖励比上一计划慢一步的候选;Python 闭环与 ik-policy.js 同步修正);rollout 加 select;diag_cl 删 F 段、加 G 段(1/4 段采样 × consist/value/first、4 段+安全层);本机执行清单更新

This commit is contained in:
Hark
2026-10-19 03:42:46 +00:00
parent 0a19b29fd3
commit 0f5b84b919
4 changed files with 50 additions and 80 deletions
+7 -42
View File
@@ -3,32 +3,31 @@
本文件是 Hark 对本机计算的唯一要求清单。按顺序执行,每一步把「回传」里的文件或输出原样交给用户,不要跳步,不要自行改代码。
所有命令在仓库根目录(G:\Robot_v2\机器人手臂)的 Git Bash 里运行。完成的条目由 Hark 在下一次提交里删掉。
## 已知结论(截至 2026-10-19 03:07 回传)
## 已知结论(截至 2026-10-19 03:37 回传)
- 特征口径 Python 与 JS 一致;子目标、抄上一帧速度、起步都已排除(老师轨迹中段带速度起步也 0% 到达、96% 碰撞)。
- gaps 显存已过:三条都 1.05 GiB,与点数无关。
- 稳定现象:策略动作幅度在开环、起点、闭环三处都是老师的 1.4–1.6 倍,开环 16 步末端却准(~6 mm)。幅度大、终点准 = 每步叠着来回抵消的抖动;闭环只执行前 3 步,抖动不抵消,表现为「动得多、走得少」。
- 现在的嫌疑:MeanFlow 一步生成没把噪声去干净。第 1 步的 F 段专门验证。
- 特征口径 Python 与 JS 一致;子目标、抄上一帧速度、起步都已排除;gaps 显存已过。
- 一步采样残留噪声真实(抖动 42×、残差-噪声相关 −0.86),2 段以上基本修掉;4 段闭环碰撞 99.6%→93%、2 s 误差比 0.815→0.610,到达仍 0%。零噪声 0%/100%(均值样本偏老师 ~4°)。
- 新发现的错误:闭环一致性打分错位一步(对齐上一计划的第 3 个点,应为第 4 个),等于每次重规划奖励「比上一计划慢一步」的候选。Python 闭环和浏览器部署已同时修正。第 1 步的 C 段和 G 段都按修正后口径跑。
## 第 0 步:同步代码
```bash
git status --short # 有未提交改动就先 commit,不要丢
git pull --rebase gitea main
git log --oneline -1 # 应是 Hark 的「diag: F 段 …」
git log --oneline -1 # 应是 Hark 的「fix(closed_loop): 一致性打分错位 …」
```
- 训练控制台若开着先点「停止」,确认没有 python 训练进程在跑。
- 不要启动训练 / DAgger / M5,等 Hark 看完第 1 步结果再定。
## 第 1 步:闭环失败定位(含新加的 F 段,约 6–10 分钟)
## 第 1 步:闭环失败定位(含新加的 G 段,约 10–15 分钟)
```bash
PYTHONUTF8=1 python -m ml.eval.diag_cl --ckpt ml/runs/base/last.pt --n 256 --out ml/runs/diag_cl.json
```
- 专用显存超过 22 GB 就 Ctrl+C 并回传终端输出。
- 新增输出:`F0_openloop_sampler`(开环 1/2/4/8 段采样与零噪声:幅度比、抖动比、残差与噪声相关、前 3 步与 16 步末关节误差);`F1_4step`、`F1_z0`(闭环用 4 段采样、零噪声:到达、碰撞、2 s 目标误差比)。E 段已删。
- 新增输出:`G_1step_consist`、`G_4step_consist`、`G_4step_value`、`G_4step_first`、`G_4step_consist_safety`,每项含到达、碰撞、2 s 目标误差比、末端误差、首次碰撞时刻、前 1 s 速度比、刹停次数。F 段已删。
- 回传:`ml/runs/diag_cl.json`。
## 回传汇总
@@ -39,37 +38,3 @@ PYTHONUTF8=1 python -m ml.eval.diag_cl --ckpt ml/runs/base/last.pt --n 256 --out
| 任一步出错 | 终端最后 30 行输出 |
---
## 执行回传(2026-10-19 04:25,本地 AI)
### 第 0 步:同步代码
pull 前无未提交 tracked 改动;两个 untracked 文件原位保留(旧 `diag_collision.py`、用户个人 html)。log 顶部 = `1bf59e7`「diag: F 段 …」✓。无训练进程。
### 第 1 步:闭环失败定位(F 段;完整 JSON 已更新到 ml/runs/diag_cl.json)
C 段复跑与基线一致:0% 到达 / 99.6% 碰撞 / 2 s 误差比 0.815。
**F0_openloop_sampler**(开环 4096 行;老师 amp 0.319、jitter 0.0084):
| 采样 | 幅度比 | 抖动比 | 残差-噪声相关 | 前 3 步误差 (°) | 16 步末端误差 (°) |
|---|---|---|---|---|---|
| 1step | 1.438 | **41.9** | **−0.861** | 2.12 | 4.97 |
| 2step | 0.987 | 4.18 | 0.284 | 0.21 | 0.92 |
| 4step | 1.011 | 1.92 | −0.034 | 0.17 | 0.86 |
| 8step | 0.998 | 1.67 | 0.108 | 0.11 | 0.56 |
| 1step z=0 | 1.161 | 1.14 | — | 0.82 | 4.01 |
- **残留噪声证实**:一步生成的动作帧间抖动是老师的 **42 倍**、残差与输入噪声相关 **−0.861**(x=z−u 中 z 没去干净)。
- **多段采样有效**:2 段就把抖动降到 4.2、16 步误差 4.97°→0.92°;4 段 1.9 / 0.86°;8 段 1.7 / 0.56°。
- **零噪声**:幅度 1.16、抖动 1.14、16 步末端 4.01°——纯「均值样本」本身离老师样本约 4°。
- 1step 的前 3 步误差(2.12°)比 16 步(4.97°)小一半——抖动误差随步数累积;1.438 幅度比即这一抖动的表现。
**F1 闭环对照**(C 基线 0% / 99.6% / 0.815):
- **F1_4step**(4 段采样):到达 **0%** / 碰撞 **93.0%** / 2 s 误差比 **0.610** / 末端误差 p50 449 mm
- **F1_z0**(零噪声):到达 **0%** / 碰撞 **100.0%** / 2 s 误差比 **0.724** / 末端误差 p50 418 mm
**结论**:一步采样残留噪声真实存在(F0 证据充分),且 4 段采样把闭环碰撞从 99.6% 降到 93.0%、2 s 误差比 0.815→0.610——方向对,但**不是闭环失败的主因**:4 段与零噪声都到不了(0% 到达),零噪声甚至 100% 碰撞(比基线还差)。
### 本轮无出错,无终端报错段。