docs: 方案 v2.3 逐项可行性核查(§0A、4 处硬伤修正、证据附录、2D 双模态对照实验)
This commit is contained in:
+96
-19
@@ -1,4 +1,4 @@
|
||||
# Transformer 避障运动策略:无老师闭环部署方案(审查稿 v2.2)
|
||||
# Transformer 避障运动策略:无老师闭环部署方案(审查稿 v2.3)
|
||||
|
||||
> - v1(2026-10-17 20:06,`40af3b4`):模型一次生成整条 32 点路径,失败回落到原规划器("有老师部署")。
|
||||
> - v1.1(20:25,`c51f8f9`):加入后训练挖错循环。
|
||||
@@ -6,6 +6,7 @@
|
||||
> 加入具身智能领域主流做法的调研与对比(§1–§2),并据此调整模型输出、后训练方法和验收标准。
|
||||
> - v2.1(2026-10-17 20:58):训练机定为 RTX 3090 24 GB;near_column 验收改为 **30/30**,新增 §8.5「为什么会超时、无老师怎样做到 30/30」;新增 §8.6 控制周期业界调研与评估。
|
||||
> - v2.2(2026-10-17 21:10):调研 2024–2026 前沿生成式策略(流匹配/MeanFlow 一步生成、实时动作块 RTC、代价引导扩散规划、流策略强化学习微调、π0.5/FAST 等),逐项判断是否适用,新增 §2.4,并据此把动作头升级为**一步流匹配头 + 碰撞代价引导 + 前缀条件**(§6.1A)。
|
||||
> - **v2.3(2026-10-17 21:30):逐项可行性核查。** 4 路全文精读(约 40 篇论文)+ 沙箱 2D 双模态绕柱对照实验,对每一项方案给出证据等级、残余风险、门禁测试和回退;发现并修正 4 处硬伤(安全层离散检查漏检、`animTo` 时间律不可学、交叉淡入绕过安全层、训练/部署节奏不一致)和 24 处内部不一致。核查结论见新增 **§0A**,全部证据见 `docs/方案逐项核查报告.md`。
|
||||
> - 基于 `main@3c7c814`(贴立柱修复后的规划器)。本文只是方案,代码尚未编写。
|
||||
> - 审查重点:§0 定位、§2 差异与优化、§5 输出表示、§7 后训练(APG)、§8 闭环部署与安全层、§9 验收。
|
||||
|
||||
@@ -28,6 +29,80 @@
|
||||
|
||||
---
|
||||
|
||||
## 0A. v2.3 逐项可行性核查结论(必读)
|
||||
|
||||
**先说清楚一件事:没有任何方案能在实测前被"证明完全没有风险"。** 论文证据只能说明"别人在相近条件下做成过";我们的条件(低维状态、单根固定立柱、5M 参数、浏览器推理、30/30)没有一篇论文完全一样。所以 v2.3 的做法是:每一项都给出①证据等级 ②残余风险 ③在本仓库可测的**门禁**(通不过就不进下一步)④通不过时的**回退**。唯一做成"硬保证"的是安全层(改为距离认证后,碰撞与否不依赖模型好坏)。
|
||||
|
||||
证据等级:**A** 有充分证据(直接先例 + 数字) · **B** 部分证据(相近先例,需本仓库验证) · **C** 仅推断 · **✗** 有反证(已修改)
|
||||
|
||||
### 0A.1 四处硬伤(已在正文修正)
|
||||
|
||||
| # | 原方案 | 反证 | v2.3 修正 |
|
||||
|---|---|---|---|
|
||||
| H1 | §8.3 安全层用 1°+半格离散采样"保证不撞" | 本臂杠杆实测:关节转 1°,TCP/胶囊最多移动 24.3 mm;0.5° 间距下两采样点之间可偏出约 6 mm,远大于 0.3 mm 余量。仓库自己的规划报告也记过 0.28 mm 残余侵入。Schwarzer 2005、LARC 均证明离散检查会漏检 | 臂×立柱/台架改为**距离下界认证**:d(q_a)+d(q_b) > Σ r_j·|Δθ_j|(r_j 为实测杠杆上界),不满足就二分;自碰撞对复用 pair2d 杠杆界。门禁:10⁵ 段离线 0.01° 审计,漏检 = 0 |
|
||||
| H2 | §4.5 沿用 `animTo`(全局 smoothstep + 总时长夹取)做时间参数化 | 同一状态的标签速度取决于输入看不到的"整条路径长度/进度" → 非马尔可夫;起步段 Δq≈0 → 闭环可能起不了步。MπNets 为此把老师路径重定时为匀速;Diffusion Policy 报告单步策略会卡在停顿动作 | 改为**局部可观测时间律**:匀速巡航 + 只按"剩余路程"决定的梯形加减速,并把当前速度 q_t−q_{t−1} 加入输入 |
|
||||
| H3 | §8.1 插补器对新旧动作块做时间集成/交叉淡入 | 实际执行的是两块的混合,没被安全层检查;左绕块与右绕块平均可能正好穿柱。π0 试过时间集成后放弃,BID 报告多模态下掉性能 | **删除交叉淡入**,执行的就是被认证过的那一块;块间连续性靠前缀条件(§6.1A) |
|
||||
| H4 | 部署每 20 ms 推理、只走 1 步;APG 每 3 步推理一次;"周期"三种定义 | BID(2408.17355)证明动作时域 = 1 会破坏块内一致性、导致来回摆动 | 统一为:**50 Hz 执行,每 3 步(60 ms)推理一次、提交 3 步**;APG 展开节奏与部署完全一致。"每步重推理"留作 A/B 对照 |
|
||||
|
||||
### 0A.2 逐项核查表
|
||||
|
||||
| § | 方案 | 等级 | 关键证据 | 残余风险 | 门禁(本仓库) | 回退 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| §0 | 不用 VLA 大模型,3–5M 参数专用策略 | A | IMPACT 4.67M 参数、300 Hz;π0 3B 单次预填充 46 ms(4090) | — | — | — |
|
||||
| §4.1–4.3 | 采样式老师离线造 5 万条任务 | B | MπNets、DRP、ELMP 均用规划器老师;MπNets:老师不一致时碰撞率 13.78%,一致老师 0.94% | 我们的老师是随机采样式,同类任务可能左右绕不一致 | 同任务 5 个种子:同伦类一致率 ≥ 90%,行程 CV < 10% | 固定种子 + "最短同伦类优先",或用 PRM 路网 A*(确定)作老师 |
|
||||
| §4.3 D 类 | 不可达目标 → 停在最近安全位形 | B | DRP 有同类数据 | 停靠点随目标跳变 | 目标扫过立柱时相邻 20 ms 停靠点跳变 < 5 mm | 停靠标签加连续性约束 |
|
||||
| §4.5 | 时间参数化 | ✗→改 | 见 H2 | — | 近邻标签方差 < 10% 步长;起步失败率 = 0 | 输入当前速度 |
|
||||
| §4.5-④ | "路径后缀 = 免费 DAgger" | ✗→删 | DAgger 要求学生自己偏离后的状态;后缀仍是老师状态 | 协变量偏移 | 闭环到达率与单步准确率差距 | 关节噪声增广(σ 0.5–1°,DART +62%)+ 离线老师重标 + §7 |
|
||||
| §5.1 | 输入:sin/cos、TCP、6D 姿态、胶囊距离 | B | 6D 旋转连续(Zhou 2019);ELMP、MπNets 同类输入 | 位姿目标多 IK 分支 → 额外多峰;缺子目标/前缀/速度字段(已补) | 去胶囊特征消融差 ≥ 3 pp 才保留 | 加目标分支标志 |
|
||||
| §5.2 | 16 步 Δq 动作块 | A | DRP、Diffusion Policy(位置式优于速度式) | 补零样本过多 → 早停 | 补零占比 > 30% 则降权 | — |
|
||||
| §6.1 | IMPACT 式编码器-解码器去点云 | A(结构)/C(够不够) | IMPACT 原文表 7 | 实算约 4.1M | 1000 样本过拟合 → 0;held-out ≥ 95%(APG 前) | 加宽 |
|
||||
| §6.1A | **动作头:一步生成** | B | 沙箱实验见 0A.3;COT 有双峰实证;K-MF 表 1 原生 MeanFlow 会失败;OFP 自引导 λ=0.5 出现模态塌缩 | 小模型能否学出陡峭模态边界未知;训练不稳 | M5 A/B:一步头 vs WTA,看穿柱率、到达率、摇摆率 | **WTA K=4**(沙箱中同样全部通过) |
|
||||
| §6.1A | 一步头选型 | B | 首选 MeanFlow(沙箱验证)或 Shortcut+COT 配对(无需 JVP);**否决** Consistency Policy(原文承认偏向一侧)、OneDP(故意取单模态)、朴素 1 步 FM(数学上等于条件均值) | 组合未见论文 | 同上 | WTA |
|
||||
| §6.1A | 生成时碰撞代价引导 | ✗→改 | 无论文在 1–2 步下测过;DiffusionSeeder 5 步引导仅 80.6%→81.1%;RTC 附录:引导权重过大发散 | — | — | 改为**事后投影**:对输出块做 1–2 步解析胶囊距离梯度,只在 d < 余量时启用;修不了"绕错侧",靠多候选 + 安全层 |
|
||||
| §6.1A | 前缀条件(RTC) | B | RTC 原文只验证 n=5 步去噪、需反向传播;**训练时前缀条件化**(2512.05964)推理零开销,d≥2 时优于 RTC,天然适用 1 步生成器 | 我们 d≈0–1 时略差 | 块边界加速度跳变 vs 无前缀 | 无前缀 + 一致性打分 |
|
||||
| §6.1A | B 样条输出 | C | 仅 FAST/频域表示的间接证据 | 可能损失贴柱精度 | near_column 与 16 步 Δq 对比 | **默认改回 16 步 Δq**,B 样条降为可选 |
|
||||
| §6.2 | 损失:WTA-L1/CE、FK 胶囊端点、平滑 | B | ELMP 式 FK 损失(§III-B 式 2) | 流头损失原缺(已补:流匹配损失 + FK 损失加在一步输出上) | FK 消融:C 类碰撞率降 ≥ 20% 才保留 | — |
|
||||
| §6.3 | 训练配置与耗时 | C | DRP:4090 上 100 万步 3 天(含点云) | 原文"20 万步≈30 epoch"算错,实为约 68 epoch | 先跑 2000 步测吞吐再定步数 | 30 epoch ≈ 8.8 万步 |
|
||||
| §6.4 | 胶囊距离 PyTorch/JS 对拍 | A(工程) | 仓库已有 0 差异对拍惯例 | 浮点不可能"0 误差" | 布尔判定 0 差异 + 距离误差 < 1e-4 mm + 梯度对有限差分 < 1e-3 | — |
|
||||
| §7.1 | APG 可微微调(ELMP) | A | ELMP:碰撞率 31.3%→8.9%;1 万示范+APG 72.0% > 60 万纯 BC 57.9%;H=69 步仅用梯度裁剪 ≤1 | 铰链损失只能侧推,不能从"撞柱"换到另一侧;可能压缩多模态;ELMP 中路径长度 +23% | 每轮左右比例监控;行程门禁 | 保留 BC 锚定损失 |
|
||||
| §7.2 | 无老师挖错 + 门禁 | B | DRP 迭代师生微调 +45%(5 轮 10 h) | 门禁集与验收集重叠 → 选择偏差(已拆分) | 遗忘门禁:A 类每轮降幅 ≤ 0.5 pp | 回滚 |
|
||||
| §7.3 | 拒绝采样自蒸馏 | B | ReST | 选"最短" → 贴柱,余量变小、多样性塌缩 | C 类间隙中位数 ≥ 原 80% | 改为"间隙 ≥ 阈值中最短" |
|
||||
| §7 可选 | ReinFlow/DPPO | B | ReinFlow +40%,1–4 步可调,比 DPPO 省 62.8% 墙钟;DPPO 16 步块稳定 | RL 会重塑模式分布(DPPO D3IL) | 按左右分组平衡奖励 | 不做 |
|
||||
| §8.2 | 模式/噪声粘滞 | ✗→改 | BID:沿用上次噪声 7 个任务中 3 个变差;后向一致性打分 + N=16 相对 +32% | — | E5 摇摆 < 1% | **改为 BID 式一致性打分**(与已提交块重叠步加权 L2) |
|
||||
| §8.3 | 安全层 + 可刹停不变式 | 不变式 A;离散实现 ✗→改 | Thumm & Althoff 2022 failsafe 盾 | 刹停"最大减速度"原未定义(已补加速度上限) | 见 H1 | 训练余量提到 3–6 mm |
|
||||
| §8.3 | 安全层耗时 < 5 ms | C | 仓库 collideFree 1.25 ms/次 | 贴柱时预筛失效;每步 4–13° | near_column 全程 P99 < 5 ms | 距离认证一次查询覆盖整段;提交步数降到 2 |
|
||||
| §8.5 | 子目标头、价值头、短前瞻、卡死换向 | B / C | AWE(航点 +25%)、SHAC、BID | 卡死换向可能活锁 | 50 个对抗用例 3 s 内恢复 ≥ 95%,活锁 = 0 | 子目标改为离散绕行锚点分类 |
|
||||
| §8.6 | 50 Hz 策略层 | B | π0 50 Hz、Diffusion Policy 10 Hz 预测 16 执行 8 最优 | rAF 60 Hz 与 20 ms 不整除;后台标签页节流 | P99 周期误差 < 2 ms | Worker + 自有时钟 |
|
||||
| §8/§9 | 浏览器推理 2–5 ms | C(偏乐观) | WebGPU 每次 dispatch 33–67 μs、同步 2–3 ms(2604.02344 表 6) | 8 层 Transformer 约 150–300 次 dispatch → 调度开销 5–20 ms | **M4 后立刻**导出 ONNX 实测 batch=8 P99 | wasm-SIMD 多线程;每 3 步推理一次(预算 60 ms) |
|
||||
| §9 | 验收 30/30 | ✗→改 | 30/30 时失败率 95% 上界仍约 9.5% | 30 例被反复用于挑模型 | **新造 ≥1000 例 near_column 一次性验收集**(0 失败 ⇒ 上界约 0.3%);到达率分母只算可达任务 | — |
|
||||
|
||||
### 0A.3 沙箱对照实验(2D 绕柱双模态,CPU)
|
||||
|
||||
为验证"一步生成会不会把左右平均成穿柱",在沙箱做了一个最小实验:2D 点从柱左侧到右侧,示教一半从上绕一半从下绕,16 步动作块、每 3 步重推理,与本方案同构。代码 `ml/toy/toy_bimodal.py`,150 个"起终点都贴近中轴"的难例:
|
||||
|
||||
| 动作头 | 单样本、无安全层:到达 / 穿柱回合 | 8 候选 + 安全层:到达 / 穿柱 / 平均刹停 | 推理(CPU,8 候选) |
|
||||
|---|---|---|---|
|
||||
| MSE 回归 | 100% / 0% | 100% / 0% / 0 | 0.13 ms |
|
||||
| WTA K=4 | 100% / 0% | 100% / 0% / 0 | 0.19 ms |
|
||||
| 流匹配 10 步 | 100% / 4.0% | 99.3% / 0% / 3.7 | 2.13 ms |
|
||||
| **朴素流匹配 1 步** | 87.3% / **23.3%** | 81.3% / 0% / 14.0 | 0.25 ms |
|
||||
| **MeanFlow 1 步** | 100% / 2.7% | 100% / 0% / 0.3 | 0.25 ms |
|
||||
|
||||
结论与局限:
|
||||
- **证实**:朴素 1 步流匹配会把模态平均到柱子里(23% 穿柱),必须用 MeanFlow/Shortcut 一类;MeanFlow 1 步达到 10 步流匹配的质量,推理快约 8 倍。
|
||||
- **证实**:安全层在所有方法上都把穿柱降为 0,代价是刹停次数。
|
||||
- **没能区分**:闭环里状态一偏离中轴,MSE/WTA 也能自然打破对称,所以这个玩具任务太容易,**分不出一步头和 WTA 谁更好**。真实 6 轴、位姿目标下的多峰更复杂,必须在 M5 用真实数据 A/B,不能凭论文或玩具定结论。
|
||||
- 早期 300 步训练的 MSE 在同一难例上 100% 穿柱、加安全层后 0% 到达(卡死),说明"欠拟合时平均模态"的风险真实存在。
|
||||
|
||||
### 0A.4 仍需用户确认 / 实测才能消除的风险
|
||||
|
||||
1. 浏览器端推理延迟(最大不确定项,M4 后第一时间测)。
|
||||
2. 真机电机/驱动/通信方式(决定插补频率与刹停加速度上限)。
|
||||
3. 老师一致性(M1 第一项门禁)。
|
||||
4. Neural MP 式"运行时采样多条、用解析距离挑选"是否算违反"无运行时老师"——v2.3 的理解是**不算**(不做搜索,只对模型自己的候选打分),请确认。
|
||||
|
||||
---
|
||||
|
||||
## 1. 业界调研:具身智能里的神经运动规划
|
||||
|
||||
以下数据均来自论文原文(链接见 §13)。
|
||||
@@ -103,6 +178,8 @@
|
||||
| **FAST 动作分词 / π0.5 知识隔离**(2025) | DCT 压缩动作块成离散 token,供大语言模型骨干学习 | FAST 训练提速最多 5 倍 | ❌ 分词本身不采纳(为语言大模型服务,自回归推理慢);⚠️ 借鉴"频域/样条表示":动作块改用 **B 样条控制点**输出,平滑性由表示保证 |
|
||||
| **VLA 大模型**(π0/π0.5、GR00T、OpenVLA) | 视觉语言骨干 + 动作专家 | 3B 模型单次预填充 46 ms(4090) | ❌ 不采纳:我们没有图像、没有语言指令,环境固定精确;30 亿参数只会更慢,不会更准 |
|
||||
|
||||
> **v2.3 核查修正(见 §0A)**:①碰撞代价引导改为输出后的事后投影(1–2 步生成下无引导证据);②RTC 改为训练时前缀条件化(2512.05964,推理零开销);③一步头首选 MeanFlow(沙箱验证)或 Shortcut+COT,否决 Consistency Policy/OneDP/朴素 1 步 FM;④B 样条降为可选;⑤OFP 未找到公开代码,不作首选。
|
||||
|
||||
**结论:v2.2 采纳"一步流匹配头 + 碰撞代价引导 + 前缀条件 + B 样条表示 + 可选 ReinFlow"。** 这正是 π0.5、MP1/OFP、MPD、RTC 这几条前沿线在"低维状态、精确几何、实时控制"场景下的组合,规模仍然是几百万参数。
|
||||
|
||||
---
|
||||
@@ -173,12 +250,12 @@ pip install numpy pyarrow tqdm tensorboard onnx onnxruntime
|
||||
|
||||
闭环策略学的是"在某个状态下,接下来 16 步怎么走",所以要把整条路径切成很多个"状态 → 动作块"样本:
|
||||
|
||||
1. 按现有 `animTo` 的轴速比 `VREL = [0.6, 0.6, 0.9, 0.9, 1.2, 1.8]` 做时间参数化(与查看器动画同口径),控制周期 **dt = 20 ms**。
|
||||
1. **(v2.3 修正,见 H2)** 不再沿用 `animTo` 的全局 smoothstep + 总时长夹取。改为局部可观测时间律:按轴速比 `VREL = [0.6, 0.6, 0.9, 0.9, 1.2, 1.8]` 匀速巡航,加减速为梯形,且只取决于"当前速度 + 剩余路程"(加速度上限另设),控制周期 **dt = 20 ms**;当前速度 q_t − q_{t−1} 作为输入。
|
||||
2. 得到状态序列 q_0, q_1, …, q_N。对每个 t(每隔 3 步取 1 个,减少冗余)生成样本:
|
||||
- 输入:当前 q_t、目标 (T, R, mode)
|
||||
- 标签:未来 S = 16 步的增量 Δq_{t+1..t+16} = q_{t+k} − q_t(到终点后补零,即"停住")
|
||||
3. 每条路径平均约 50–150 个样本 → 5 万条任务约 300 万个训练样本。
|
||||
4. **路径后缀天然覆盖"从半路出发"**,等于免费的 DAgger 种子数据。
|
||||
3. 每条路径约 40–50 个样本(route_bench 平均执行约 2.5 s)→ 5 万条任务约 200 万个训练样本(以 M1 的 stats.json 为准)。
|
||||
4. ~~路径后缀等于免费 DAgger~~(v2.3 删除:后缀仍是老师状态)。改为关节噪声增广(σ 0.5–1°)+ 离线老师重标,偏离状态的覆盖靠 §7。
|
||||
|
||||
### 4.6 耗时与存储
|
||||
|
||||
@@ -253,14 +330,14 @@ K×16 个可学习动作 token ──▶ 4 层 Transformer decoder(非自回
|
||||
| | v2 WTA 头(保留为基线) | **v2.2 一步流匹配头(默认)** |
|
||||
|---|---|---|
|
||||
| 多模态 | 固定 K=4 个模式 | 连续分布;每周期并行采 K=8 个噪声 → 8 条候选 |
|
||||
| 训练 | WTA-L1 + 模式 CE | OFP 自蒸馏(或 MeanFlow),从零训练,无需预训练老师模型 |
|
||||
| 输出 | 16 步 Δq | **B 样条**:6 个控制点 × 6 关节,再采样成 16 步;自带平滑 |
|
||||
| 前缀条件 | 无,靠时间集成 | 输入"已提交前 3 步",新块从前缀接着走(RTC 思路) |
|
||||
| 碰撞引导 | 无 | 最后一步加一次可微胶囊距离梯度修正:a ← a + η·∇d_capsule(d < 安全距离时) |
|
||||
| 训练 | WTA-L1 + 模式 CE | **MeanFlow**(沙箱已验证 1 步可用)或 Shortcut + COT 条件配对(无需 JVP);损失 = 流匹配损失 + FK 胶囊端点损失(加在一步输出上)。不采用 Consistency Policy / OneDP / 朴素 1 步 FM |
|
||||
| 输出 | 16 步 Δq | **16 步 Δq**(v2.3:B 样条 6 控制点降为可选,需 near_column 消融不掉点才启用) |
|
||||
| 前缀条件 | 无 | **训练时前缀条件化**(2512.05964):输入已提交且未执行的步,训练时随机遮盖前缀长度 0–3;推理零额外开销 |
|
||||
| 碰撞修正 | 无 | **事后投影**:对输出块做 1–2 步解析胶囊距离梯度,仅 d < 余量时启用(v2.3:生成中引导在 1–2 步下无证据) |
|
||||
| 推理成本 | 1 次前向 | 1–2 次前向 + 1 次解析梯度(JS 实现,不走 ONNX) |
|
||||
| APG 兼容 | ✅ | ✅(固定噪声后生成器是确定性可微映射) |
|
||||
|
||||
模式粘滞改为"噪声粘滞":上一周期选中候选的噪声向量保留下来,本周期作为 8 个噪声之一,相邻周期自然延续同一绕行方向。子目标头、价值头(§8.5)保持不变。
|
||||
候选排序(v2.3 修正):不用"噪声粘滞"(BID 中 7 个任务有 3 个变差),改为 BID 式一致性打分:分数 = −‖候选与上一已提交块重叠步之差‖²(加权)− λ·价值头剩余代价。子目标头、价值头(§8.5)保持不变。
|
||||
|
||||
M4 同时实现两种头,M5 预训练后在 near_column + held-out 上 A/B;若一步流匹配不优于 WTA,回退 WTA(风险可控)。
|
||||
|
||||
@@ -282,7 +359,7 @@ L = WTA-L1(动作块, 最近模式) 权重 1.0
|
||||
| 学习率 | 1e-3,预热 1000 步,余弦退火(同 DRP 量级) |
|
||||
| batch | 1024(3090 24 GB) |
|
||||
| 精度 | bf16 混合精度 |
|
||||
| 步数 | 约 20 万步(300 万样本约 30 epoch),验证集闭环成功率不再上升即停 |
|
||||
| 步数 | 先跑 2000 步测吞吐再定;参考:200 万样本 × 30 epoch ÷ bs 1024 ≈ 6 万步(v2.3 更正:原"20 万步≈30 epoch"实为约 68 epoch),验证集闭环成功率不再上升即停 |
|
||||
| 预计耗时 | RTX 3090 约 1.5–3 小时(估算;DRP 4.67 M 参数在 4090 上预训练 100 万步用 3 天,我们的样本少、无点云编码,步数约其 1/5,跑完首轮再校正) |
|
||||
|
||||
### 6.4 对拍与验证(每 epoch)
|
||||
@@ -341,9 +418,9 @@ for 每个 batch(随机采样 q0 和目标,82 ms 级别的便宜采样,不
|
||||
### 8.1 每个控制周期做什么(默认 50 Hz)
|
||||
|
||||
```
|
||||
每 20 ms:
|
||||
每 60 ms 推理一次(v2.3,见 H4;执行仍是 50 Hz,每步 20 ms):
|
||||
1. 读当前 q(真机读编码器;查看器读当前插补位形)和最新目标(拖拽时每周期都在变)
|
||||
2. 推理一次:得到 K=4 条 16 步动作块 + 模式概率 ≈ 2–5 ms(估算)
|
||||
2. 推理一次:一步头 8 条候选(WTA 基线为 4 条)16 步动作块 延迟须 M4 实测
|
||||
3. 按"模式概率 − 切换代价"排序(§8.2)
|
||||
4. 安全层依次检查候选的前 n=3 步(60 ms 的运动)+ 刹停段(§8.3)
|
||||
第一个通过的 → 把这 3 步"提交"给插补器;记下 k_prev
|
||||
@@ -354,17 +431,17 @@ for 每个 batch(随机采样 q0 和目标,82 ms 级别的便宜采样,不
|
||||
接近目标(< 5 mm)时可选做 1–3 次局部牛顿精修(solveTo 单步,不是全量 IK)
|
||||
```
|
||||
|
||||
插补器在两个周期之间做平滑过渡(下一块与正在执行的块做时间集成/交叉淡入,ACT 的 temporal ensembling 思路),避免每 20 ms 一顿。
|
||||
v2.3:**删除插补器交叉淡入/时间集成**(见 H3)。执行的必须就是安全层认证过的那一块;块间连续性由前缀条件和一致性打分保证。"每 20 ms 重推理只执行 1 步"仅作 A/B 对照。
|
||||
|
||||
### 8.2 模式粘滞(防左右摇摆)
|
||||
|
||||
- 排序分数 = log p(k) − c·[k ≠ k_prev],c 初值 2.0(在 §7.2 的 E5 统计上调)。
|
||||
- 训练时 k_prev 作为输入(§5.1),模型自己也学会"保持当前绕行方向"。
|
||||
- WTA 基线:排序分数 = log p(k) − c·[k ≠ k_prev],c 初值 2.0;k_prev 仅对 WTA 头作为输入。
|
||||
- 一步头:BID 式一致性打分(见 §6.1A),不使用 k_prev / log p(k)。
|
||||
|
||||
### 8.3 安全层(唯一的硬保证)
|
||||
|
||||
- 检查内容:候选前 3 步的连续运动做 1° 细验 + 半格复验(与现有 `pathFine` 同口径),外加关节限位。
|
||||
- **可刹停不变式**:执行前还要检查"从第 3 步末状态按最大减速度停下"的刹停段也无干涉。于是任何时候系统都处在"有一条已验证的停车路线"的状态,下一周期就算模型完全失效,也只会停下、不会撞。
|
||||
- 检查内容(v2.3 修正,见 H1):臂×立柱/台架用**距离下界认证**——段两端最小距离之和 > Σ_j r_j·|Δθ_j|(r_j 为每轴实测杠杆上界,J1 约 9.0 mm/°)即判整段安全,否则二分到通过或判不安全;自碰撞对复用 pair2d 杠杆界;外加关节限位。离散 1°+半格检查只作快速预筛,不再作为保证。现有代码口径实为 1.5°+半格,文档原写法有误。
|
||||
- **可刹停不变式**:执行前还要检查"从第 3 步末状态按最大减速度(v2.3 新增每轴加速度上限,待真机参数)停下"的刹停段也无干涉。于是任何时候系统都处在"有一条已验证的停车路线"的状态,下一周期就算模型完全失效,也只会停下、不会撞。
|
||||
- 耗时:3 步 × 4 候选,最坏约 4 × 10 个采样位形 × 约 1.8 ms ≈ 70 ms(太慢)→ 实际做法:
|
||||
- 先用现有包围球预筛(大多数位形直接判安全,见 2026-10-15 记录 collideFree 2.9→1.8 ms);
|
||||
- 按排序**逐个**检查,第一个通过就停(多数周期只检查 1 条);
|
||||
@@ -456,8 +533,8 @@ for 每个 batch(随机采样 q0 和目标,82 ms 级别的便宜采样,不
|
||||
|
||||
| 指标 | 要求 | 现状参考 |
|
||||
|---|---|---|
|
||||
| 实际执行的碰撞帧 | **= 0** | rt_drag_bench 0 |
|
||||
| 到达率 | route **60/60**,near pos **30/30**,near rt **30/30**,held-out ≥ 98% | 60/60、30/30、30/30 |
|
||||
| 实际执行的碰撞帧 | **= 0**(以距离认证或 0.01° 审计测量,不用离散 1° 检查) | rt_drag_bench 0 |
|
||||
| 到达率 | route **60/60**,near pos **30/30**,near rt **30/30**,**另造 ≥1000 例 near_column 一次性验收集 0 失败**;held-out(分母只算可达任务)≥ 98%,D 类另考停靠距离 ≤ 老师 + 5 mm | 60/60、30/30、30/30 |
|
||||
| 到达用时 | ≤ 老师同任务路径动画时长 × 1.3 | — |
|
||||
| 关节行程 | ≤ 现有规划器 × 1.10 | route 平均 467° |
|
||||
| 冷启动(新目标→第一个动作) | < 10 ms | 首次全量 IK 最差约 2 s |
|
||||
|
||||
Reference in New Issue
Block a user