From f42d3d756f6517033f86da93710a1b89e8483eec Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Tue, 20 Oct 2026 21:57:02 +0800 Subject: [PATCH] =?UTF-8?q?exp:=20=E8=BD=AE=E6=AC=A138(=E8=A1=A5)=E2=80=94?= =?UTF-8?q?=E2=80=94steps=3D4=20=E6=9C=AB=E6=80=81=E8=AF=AF=E5=B7=AE0.135m?= =?UTF-8?q?m=E6=9C=80=E4=BC=98=E4=BD=86=E4=BB=8D=E8=A2=AB=E6=8B=9280?= =?UTF-8?q?=E6=AC=A1/=E9=A2=98=EF=BC=9B=E5=A4=B1=E8=B4=A5=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E8=AF=81=E6=98=8E=E7=BC=BA=E5=8F=A3=E6=98=AF=E8=B5=B0?= =?UTF-8?q?=E4=B8=80=E5=8D=8A=E8=A2=AB=E5=86=BB=E4=BD=8F(63/109)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/experiment_round36_steps4_cap1.json | 73 ++++++++++++++++++++++ docs/experiment_round38_fail_taxonomy.json | 19 ++++++ docs/探索日志.md | 17 ++++- 3 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 docs/experiment_round36_steps4_cap1.json create mode 100644 docs/experiment_round38_fail_taxonomy.json diff --git a/docs/experiment_round36_steps4_cap1.json b/docs/experiment_round36_steps4_cap1.json new file mode 100644 index 0000000..7f82067 --- /dev/null +++ b/docs/experiment_round36_steps4_cap1.json @@ -0,0 +1,73 @@ +{ + "config": { + "ckpt": "ml/runs/base_dag2_dag1/best.pt", + "samples": "ml/data/samples", + "tasks": null, + "split": "val", + "n": 256, + "K": 8, + "commit": 2, + "fb": 2.2, + "ki": 0.0, + "fb_scale": 0.0, + "fb_near": 0.2, + "fb_fallback": 0.0, + "kdecay": 0.9, + "kimax": 0.5, + "fb_every": 1, + "safety_try": 0, + "sel_w": 0.1, + "dls_safety": 1, + "fb_clear": 0.0, + "fb_cmin": 0.3, + "sub_refresh": 0, + "fb_block_gain": 0.5, + "dump": "ml/runs/round36_steps4_cap1_rows.json", + "out": "docs/experiment_round36_steps4_cap1.json", + "trace": null, + "select": "endpoint", + "replan": "empty", + "safety": 1, + "partial": 1, + "inc_cap": 1, + "gap_margin": 0.0, + "cert_batch": 0, + "steps": 4, + "backoff": 0, + "max_sec": null, + "seed": 0, + "dls": "analytic", + "device": "cuda" + }, + "batch_size": 256, + "batch_seed_rule": "same seed per batch", + "checkpoint_sha256": "f7f686fd8ee92fb6948fbcc4ee954636065ad87bb54f661c4f8f575bc16c2ce1", + "tasks_sha256": "249bd93457825cda98c59e64d9a096d3473c69aeb3553de1dea6d9e56be71772", + "kin_fp": "2ebcbf17", + "act_scale": 1.0, + "metrics": { + "n": 256, + "n_ref": 256, + "success": 0.40625, + "collision_free_success": 0.40625, + "time_ok_1p3": 0.3046875, + "collision_rate": 0.0, + "collision_steps_mean": 0.0, + "travel_ratio_median": 1.8817013502120972, + "time_mean_s": 1.9080770015716553, + "brakes_mean": 79.65234375, + "start_fail": 0.0, + "goal_ratio_2s": 0.3844277262687683, + "err_fail_med": 342.1692810058594, + "err_success_med": 0.1346309632062912, + "dls_share": 0.4609375, + "time_budget": "teacher×2(≥3 s)", + "speed_ratio_p50": 1.0000016689300537, + "speed_ratio_p95": 1.0000053644180298, + "speed_ratio_max": 1.0000101327896118, + "over_vmax_rate": 0.0, + "accel_ratio_p95": 0.914295494556427, + "accel_ratio_max": 1.0000005960464478 + }, + "simulation_wall_s": 347.79689209999924 +} diff --git a/docs/experiment_round38_fail_taxonomy.json b/docs/experiment_round38_fail_taxonomy.json new file mode 100644 index 0000000..d158e93 --- /dev/null +++ b/docs/experiment_round38_fail_taxonomy.json @@ -0,0 +1,19 @@ +[ + { + "label": "steps=1 cap=0", + "n": 256, + "arrived": 147, + "failed": 109, + "buckets": { + "姿态没到位(位置<5mm)": 3, + "位置 5~20mm": 5, + "位置 20~100mm": 15, + "位置 >100mm 且刹车>30(被挡)": 63, + "位置 >100mm 且刹车<=30(方向/绕圈)": 23, + "起步失败": 0 + }, + "failed_e_p50": 255.333598802122, + "failed_oe_p50": 11.016554443385107, + "failed_still_share_p50": 0.3722222149372101 + } +] \ No newline at end of file diff --git a/docs/探索日志.md b/docs/探索日志.md index c3337e6..7df016b 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -34,8 +34,23 @@ | steps=2 cap=0 | 0.4258 | 0.3555 | **86.31** | 1.67 s | **1.571** | 0.243 mm | 0.453 | | steps=1 cap=1(=轮次33 cap) | 0.5234 | 0.2656 | 19.55 | 2.49 s | 2.616 | 0.218 mm | 0.613 | | steps=2 cap=1 | 0.3945 | 0.2969 | 86.16 | 1.93 s | 1.844 | 0.293 mm | 0.445 | + | steps=4 cap=1 | 0.4062 | 0.3047 | 79.65 | 1.91 s | 1.882 | **0.135 mm** | 0.461 | - (`docs/experiment_round36_steps2_cap{0,1}.json`;steps=4/8 同批续跑) + (`docs/experiment_round36_steps2_cap{0,1}.json`、`docs/experiment_round36_steps4_cap1.json`;steps=8 同批续跑) + 段数再多并不是越差:steps=4 比 steps=2 到达与时限都略升,成功题末态误差 0.293 → **0.135 mm**(比一步口径的 0.218 还好)——但刹车仍近 80/题,到达率被同一道门卡住。 +- **失败分类**(不占卡:读轮次 33 base 的 256 题轨迹转储,CPU 重算末态位姿误差,`docs/experiment_round38_fail_taxonomy.json`)。147 到达 / 109 未到,未到题按"末态离目标多远 + 被拒多少次"分桶: + + | 桶 | 题数 | + |---|---| + | 位置 >100 mm 且刹车 >30 次(走一半被冻住) | **63** | + | 位置 >100 mm 但刹车 ≤30 次(方向错 / 绕圈) | 23 | + | 位置 20~100 mm | 15 | + | 位置 5~20 mm | 5 | + | 位置 <5 mm 但姿态没到位 | 3 | + | 起步失败 | 0 | + + 未到组中位数:位置误差 255 mm、姿态误差 11.0°、**活动窗内 37% 的步是零运动**。 + ⇒ 到达率的缺口不在精度或姿态判据(这两类合计只有 8 题),而在**走一半被冻住**:76% 的失败离目标还 >100 mm,其中多数是安全层反复全拒。这正是 `backoff`(全拒时缩步顶上)对着的那块;也说明 #15(候选数与安全档位)比"往打分里加剩余时限"更值钱。 - **反直觉但自洽的一组数**:两段推理**开环更贴老师**(E1-b:0.43 vs 4.33)、**行程比更接近 1**(1.571 vs 2.445)、**到了的题还更快**(1.67 vs 2.31 s),但闭环到达掉 14.8 个百分点。逐题对照:108 题两者都到、**39 题只有 1 步能到、只有 1 题是 2 步独有** ⇒ 不是"换了一批题",是同一批题里 1 步原本能做对的那部分被卡住了。 - **卡点在安全层不在策略**:刹车从 19.25 → 86.3/题(4.5 倍),未到达组的刹车中位数从 45 → 176(几乎每步都被拒 ⇒ 原地冻结,末态误差 p50 也从 230 → 406 mm)。也就是说**发布的那 57.4% 是与"一步那套偏置且被削弱过的动作"共同标定出来的**:策略、反馈增益、认证口径、DAgger 采集分布四者都围着它。 - **两种解释必须分开,否则下一步会走错**: