docs: 方案 v2.3 逐项可行性核查(§0A、4 处硬伤修正、证据附录、2D 双模态对照实验)

This commit is contained in:
Hark
2026-10-17 13:21:41 +00:00
parent 2462c66a6b
commit 34c98e0371
5 changed files with 4866 additions and 64 deletions
+584 -45
View File
@@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Transformer 避障运动策略:无老师闭环部署方案(v2.2)</title>
<title>Transformer轨迹拟合训练方案</title>
<style>
html {
color: #1a1a1a;
@@ -251,35 +251,130 @@
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title">Transformer轨迹拟合训练方案</h1>
</header>
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#transformer-避障运动策略无老师闭环部署方案审查稿-v22"
id="toc-transformer-避障运动策略无老师闭环部署方案审查稿-v22">Transformer
避障运动策略:无老师闭环部署方案(审查稿 v2.2)</a>
<li><a href="#transformer-避障运动策略无老师闭环部署方案审查稿-v23"
id="toc-transformer-避障运动策略无老师闭环部署方案审查稿-v23">Transformer
避障运动策略:无老师闭环部署方案(审查稿 v2.3)</a>
<ul>
<li><a href="#0-定位与边界" id="toc-0-定位与边界">0. 定位与边界</a></li>
<li><a href="#0a-v23-逐项可行性核查结论必读"
id="toc-0a-v23-逐项可行性核查结论必读">0A. v2.3
逐项可行性核查结论(必读)</a>
<ul>
<li><a href="#0a1-四处硬伤已在正文修正"
id="toc-0a1-四处硬伤已在正文修正">0A.1 四处硬伤(已在正文修正)</a></li>
<li><a href="#0a2-逐项核查表" id="toc-0a2-逐项核查表">0A.2
逐项核查表</a></li>
<li><a href="#0a3-沙箱对照实验2d-绕柱双模态cpu"
id="toc-0a3-沙箱对照实验2d-绕柱双模态cpu">0A.3 沙箱对照实验(2D
绕柱双模态,CPU)</a></li>
<li><a href="#0a4-仍需用户确认--实测才能消除的风险"
id="toc-0a4-仍需用户确认--实测才能消除的风险">0A.4 仍需用户确认 /
实测才能消除的风险</a></li>
</ul></li>
<li><a href="#1-业界调研具身智能里的神经运动规划"
id="toc-1-业界调研具身智能里的神经运动规划">1.
业界调研:具身智能里的神经运动规划</a></li>
<li><a href="#2-我们的方案和主流的差异以及据此做的优化"
id="toc-2-我们的方案和主流的差异以及据此做的优化">2.
我们的方案和主流的差异,以及据此做的优化</a></li>
我们的方案和主流的差异,以及据此做的优化</a>
<ul>
<li><a href="#21-我们的独特条件" id="toc-21-我们的独特条件">2.1
我们的独特条件</a></li>
<li><a href="#22-v1-方案与主流的差异--v2-的调整"
id="toc-22-v1-方案与主流的差异--v2-的调整">2.2 v1 方案与主流的差异 → v2
的调整</a></li>
<li><a href="#23-v2-相对主流的额外优化点"
id="toc-23-v2-相对主流的额外优化点">2.3 v2 相对主流的额外优化点</a></li>
<li><a href="#24-20242026-前沿生成式策略逐项评估v22"
id="toc-24-20242026-前沿生成式策略逐项评估v22">2.4 2024–2026
前沿生成式策略逐项评估(v2.2)</a></li>
</ul></li>
<li><a href="#3-训练环境" id="toc-3-训练环境">3. 训练环境</a></li>
<li><a href="#4-第一步离线造预训练数据老师只在这里出现"
id="toc-4-第一步离线造预训练数据老师只在这里出现">4.
第一步:离线造预训练数据(老师只在这里出现)</a></li>
第一步:离线造预训练数据(老师只在这里出现)</a>
<ul>
<li><a href="#41-新增文件" id="toc-41-新增文件">4.1 新增文件</a></li>
<li><a href="#42-一条原始样本" id="toc-42-一条原始样本">4.2
一条原始样本</a></li>
<li><a href="#43-采样分布5-万条任务" id="toc-43-采样分布5-万条任务">4.3
采样分布(5 万条任务)</a></li>
<li><a href="#44-过滤" id="toc-44-过滤">4.4 过滤</a></li>
<li><a href="#45-时间参数化--闭环训练样本v2-新增关键"
id="toc-45-时间参数化--闭环训练样本v2-新增关键">4.5 时间参数化 →
闭环训练样本(v2 新增,关键)</a></li>
<li><a href="#46-耗时与存储" id="toc-46-耗时与存储">4.6
耗时与存储</a></li>
<li><a href="#47-检查点" id="toc-47-检查点">4.7 检查点</a></li>
</ul></li>
<li><a href="#5-第二步表示与预处理" id="toc-5-第二步表示与预处理">5.
第二步:表示与预处理</a></li>
第二步:表示与预处理</a>
<ul>
<li><a href="#51-输入条件" id="toc-51-输入条件">5.1
输入(条件)</a></li>
<li><a href="#52-输出动作块" id="toc-52-输出动作块">5.2
输出(动作块)</a></li>
<li><a href="#53-连续轴" id="toc-53-连续轴">5.3 连续轴</a></li>
</ul></li>
<li><a href="#6-第三步模型与预训练行为克隆"
id="toc-6-第三步模型与预训练行为克隆">6.
第三步:模型与预训练(行为克隆)</a></li>
第三步:模型与预训练(行为克隆)</a>
<ul>
<li><a href="#61-结构参考-impact去掉点云部分"
id="toc-61-结构参考-impact去掉点云部分">6.1 结构(参考
IMPACT,去掉点云部分)</a></li>
<li><a href="#61a-v22-动作头升级一步流匹配默认与-wta基线"
id="toc-61a-v22-动作头升级一步流匹配默认与-wta基线">6.1A v2.2
动作头升级:一步流匹配(默认)与 WTA(基线)</a></li>
<li><a href="#62-预训练损失" id="toc-62-预训练损失">6.2
预训练损失</a></li>
<li><a href="#63-训练配置" id="toc-63-训练配置">6.3 训练配置</a></li>
<li><a href="#64-对拍与验证每-epoch" id="toc-64-对拍与验证每-epoch">6.4
对拍与验证(每 epoch)</a></li>
</ul></li>
<li><a href="#7-第四步后训练无老师为主"
id="toc-7-第四步后训练无老师为主">7.
第四步:后训练(无老师为主)</a></li>
id="toc-7-第四步后训练无老师为主">7. 第四步:后训练(无老师为主)</a>
<ul>
<li><a href="#71-主力apg-可微微调借鉴-elmp"
id="toc-71-主力apg-可微微调借鉴-elmp">7.1 主力:APG 可微微调(借鉴
ELMP)</a></li>
<li><a href="#72-辅助闭环挖错--门禁v11-循环的无老师版"
id="toc-72-辅助闭环挖错--门禁v11-循环的无老师版">7.2 辅助:闭环挖错 +
门禁(v1.1 循环的无老师版)</a></li>
<li><a href="#73-可选拒绝采样自蒸馏" id="toc-73-可选拒绝采样自蒸馏">7.3
可选:拒绝采样自蒸馏</a></li>
</ul></li>
<li><a href="#8-第五步无老师闭环部署" id="toc-8-第五步无老师闭环部署">8.
第五步:无老师闭环部署</a></li>
第五步:无老师闭环部署</a>
<ul>
<li><a href="#81-每个控制周期做什么默认-50-hz"
id="toc-81-每个控制周期做什么默认-50-hz">8.1 每个控制周期做什么(默认 50
Hz)</a></li>
<li><a href="#82-模式粘滞防左右摇摆" id="toc-82-模式粘滞防左右摇摆">8.2
模式粘滞(防左右摇摆)</a></li>
<li><a href="#83-安全层唯一的硬保证" id="toc-83-安全层唯一的硬保证">8.3
安全层(唯一的硬保证)</a></li>
<li><a href="#84-部署包里有什么没有什么"
id="toc-84-部署包里有什么没有什么">8.4 部署包里有什么、没有什么</a></li>
<li><a href="#85-为什么会超时以及无老师怎样做到-3030"
id="toc-85-为什么会超时以及无老师怎样做到-3030">8.5
为什么会"超时",以及无老师怎样做到 30/30</a></li>
<li><a href="#86-控制周期业界案例与评估"
id="toc-86-控制周期业界案例与评估">8.6 控制周期:业界案例与评估</a></li>
</ul></li>
<li><a href="#9-第六步评估与验收" id="toc-9-第六步评估与验收">9.
第六步:评估与验收</a></li>
第六步:评估与验收</a>
<ul>
<li><a href="#91-测试集合" id="toc-91-测试集合">9.1 测试集合</a></li>
<li><a href="#92-验收标准部署形态--策略--安全层"
id="toc-92-验收标准部署形态--策略--安全层">9.2 验收标准(部署形态 = 策略
+ 安全层)</a></li>
</ul></li>
<li><a href="#10-风险与维护" id="toc-10-风险与维护">10.
风险与维护</a></li>
<li><a href="#11-目录规划" id="toc-11-目录规划">11. 目录规划</a></li>
@@ -291,8 +386,8 @@ id="toc-7-第四步后训练无老师为主">7.
</ul>
</nav>
<h1
id="transformer-避障运动策略无老师闭环部署方案审查稿-v22">Transformer
避障运动策略:无老师闭环部署方案(审查稿 v2.2)</h1>
id="transformer-避障运动策略无老师闭环部署方案审查稿-v23">Transformer
避障运动策略:无老师闭环部署方案(审查稿 v2.3)</h1>
<blockquote>
<ul>
<li>v1(2026-10-17 20:06,<code>40af3b4</code>):模型一次生成整条 32
@@ -310,6 +405,13 @@ RTC、代价引导扩散规划、流策略强化学习微调、π0.5/FAST
等),逐项判断是否适用,新增
§2.4,并据此把动作头升级为<strong>一步流匹配头 + 碰撞代价引导 +
前缀条件</strong>(§6.1A)。</li>
<li><strong>v2.3(2026-10-17 21:30):逐项可行性核查。</strong> 4
路全文精读(约 40 篇论文)+ 沙箱 2D
双模态绕柱对照实验,对每一项方案给出证据等级、残余风险、门禁测试和回退;发现并修正
4 处硬伤(安全层离散检查漏检、<code>animTo</code>
时间律不可学、交叉淡入绕过安全层、训练/部署节奏不一致)和 24
处内部不一致。核查结论见新增 <strong>§0A</strong>,全部证据见
<code>docs/方案逐项核查报告.md</code>。</li>
<li>基于
<code>main@3c7c814</code>(贴立柱修复后的规划器)。本文只是方案,代码尚未编写。</li>
<li>审查重点:§0 定位、§2 差异与优化、§5 输出表示、§7 后训练(APG)、§8
@@ -368,6 +470,415 @@ ms)读当前关节角和目标,重新推理一段短动作块,只执行最
的轨迹发生碰撞(§1 DRP 附录表 6、ELMP 表 I)。
我们的环境几何完全已知、检查只要几毫秒,保留它代价极小,却把"偶尔撞一下"变成"偶尔停一下"。</p>
<hr />
<h2 id="0a-v23-逐项可行性核查结论必读">0A. v2.3
逐项可行性核查结论(必读)</h2>
<p><strong>先说清楚一件事:没有任何方案能在实测前被"证明完全没有风险"。</strong>
论文证据只能说明"别人在相近条件下做成过";我们的条件(低维状态、单根固定立柱、5M
参数、浏览器推理、30/30)没有一篇论文完全一样。所以 v2.3
的做法是:每一项都给出①证据等级 ②残余风险
③在本仓库可测的<strong>门禁</strong>(通不过就不进下一步)④通不过时的<strong>回退</strong>。唯一做成"硬保证"的是安全层(改为距离认证后,碰撞与否不依赖模型好坏)。</p>
<p>证据等级:<strong>A</strong> 有充分证据(直接先例 + 数字) ·
<strong>B</strong> 部分证据(相近先例,需本仓库验证) ·
<strong>C</strong> 仅推断 · <strong>✗</strong> 有反证(已修改)</p>
<h3 id="0a1-四处硬伤已在正文修正">0A.1 四处硬伤(已在正文修正)</h3>
<table>
<thead>
<tr class="header">
<th>#</th>
<th>原方案</th>
<th>反证</th>
<th>v2.3 修正</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>H1</td>
<td>§8.3 安全层用 1°+半格离散采样"保证不撞"</td>
<td>本臂杠杆实测:关节转 1°,TCP/胶囊最多移动 24.3 mm;0.5°
间距下两采样点之间可偏出约 6 mm,远大于 0.3 mm
余量。仓库自己的规划报告也记过 0.28 mm 残余侵入。Schwarzer 2005、LARC
均证明离散检查会漏检</td>
<td>臂×立柱/台架改为<strong>距离下界认证</strong>:d(q_a)+d(q_b) &gt; Σ
r_j·</td>
</tr>
<tr class="even">
<td>H2</td>
<td>§4.5 沿用 <code>animTo</code>(全局 smoothstep +
总时长夹取)做时间参数化</td>
<td>同一状态的标签速度取决于输入看不到的"整条路径长度/进度" →
非马尔可夫;起步段 Δq≈0 → 闭环可能起不了步。MπNets
为此把老师路径重定时为匀速;Diffusion Policy
报告单步策略会卡在停顿动作</td>
<td>改为<strong>局部可观测时间律</strong>:匀速巡航 +
只按"剩余路程"决定的梯形加减速,并把当前速度 q_t−q_{t−1} 加入输入</td>
</tr>
<tr class="odd">
<td>H3</td>
<td>§8.1 插补器对新旧动作块做时间集成/交叉淡入</td>
<td>实际执行的是两块的混合,没被安全层检查;左绕块与右绕块平均可能正好穿柱。π0
试过时间集成后放弃,BID 报告多模态下掉性能</td>
<td><strong>删除交叉淡入</strong>,执行的就是被认证过的那一块;块间连续性靠前缀条件(§6.1A)</td>
</tr>
<tr class="even">
<td>H4</td>
<td>部署每 20 ms 推理、只走 1 步;APG 每 3
步推理一次;"周期"三种定义</td>
<td>BID(2408.17355)证明动作时域 = 1
会破坏块内一致性、导致来回摆动</td>
<td>统一为:<strong>50 Hz 执行,每 3 步(60 ms)推理一次、提交 3
步</strong>;APG 展开节奏与部署完全一致。"每步重推理"留作 A/B 对照</td>
</tr>
</tbody>
</table>
<h3 id="0a2-逐项核查表">0A.2 逐项核查表</h3>
<table>
<thead>
<tr class="header">
<th>§</th>
<th>方案</th>
<th>等级</th>
<th>关键证据</th>
<th>残余风险</th>
<th>门禁(本仓库)</th>
<th>回退</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>§0</td>
<td>不用 VLA 大模型,3–5M 参数专用策略</td>
<td>A</td>
<td>IMPACT 4.67M 参数、300 Hz;π0 3B 单次预填充 46 ms(4090)</td>
<td>—</td>
<td>—</td>
<td>—</td>
</tr>
<tr class="even">
<td>§4.1–4.3</td>
<td>采样式老师离线造 5 万条任务</td>
<td>B</td>
<td>MπNets、DRP、ELMP 均用规划器老师;MπNets:老师不一致时碰撞率
13.78%,一致老师 0.94%</td>
<td>我们的老师是随机采样式,同类任务可能左右绕不一致</td>
<td>同任务 5 个种子:同伦类一致率 ≥ 90%,行程 CV &lt; 10%</td>
<td>固定种子 + "最短同伦类优先",或用 PRM 路网 A*(确定)作老师</td>
</tr>
<tr class="odd">
<td>§4.3 D 类</td>
<td>不可达目标 → 停在最近安全位形</td>
<td>B</td>
<td>DRP 有同类数据</td>
<td>停靠点随目标跳变</td>
<td>目标扫过立柱时相邻 20 ms 停靠点跳变 &lt; 5 mm</td>
<td>停靠标签加连续性约束</td>
</tr>
<tr class="even">
<td>§4.5</td>
<td>时间参数化</td>
<td>✗→改</td>
<td>见 H2</td>
<td>—</td>
<td>近邻标签方差 &lt; 10% 步长;起步失败率 = 0</td>
<td>输入当前速度</td>
</tr>
<tr class="odd">
<td>§4.5-④</td>
<td>"路径后缀 = 免费 DAgger"</td>
<td>✗→删</td>
<td>DAgger 要求学生自己偏离后的状态;后缀仍是老师状态</td>
<td>协变量偏移</td>
<td>闭环到达率与单步准确率差距</td>
<td>关节噪声增广(σ 0.5–1°,DART +62%)+ 离线老师重标 + §7</td>
</tr>
<tr class="even">
<td>§5.1</td>
<td>输入:sin/cos、TCP、6D 姿态、胶囊距离</td>
<td>B</td>
<td>6D 旋转连续(Zhou 2019);ELMP、MπNets 同类输入</td>
<td>位姿目标多 IK 分支 → 额外多峰;缺子目标/前缀/速度字段(已补)</td>
<td>去胶囊特征消融差 ≥ 3 pp 才保留</td>
<td>加目标分支标志</td>
</tr>
<tr class="odd">
<td>§5.2</td>
<td>16 步 Δq 动作块</td>
<td>A</td>
<td>DRP、Diffusion Policy(位置式优于速度式)</td>
<td>补零样本过多 → 早停</td>
<td>补零占比 &gt; 30% 则降权</td>
<td>—</td>
</tr>
<tr class="even">
<td>§6.1</td>
<td>IMPACT 式编码器-解码器去点云</td>
<td>A(结构)/C(够不够)</td>
<td>IMPACT 原文表 7</td>
<td>实算约 4.1M</td>
<td>1000 样本过拟合 → 0;held-out ≥ 95%(APG 前)</td>
<td>加宽</td>
</tr>
<tr class="odd">
<td>§6.1A</td>
<td><strong>动作头:一步生成</strong></td>
<td>B</td>
<td>沙箱实验见 0A.3;COT 有双峰实证;K-MF 表 1 原生 MeanFlow 会失败;OFP
自引导 λ=0.5 出现模态塌缩</td>
<td>小模型能否学出陡峭模态边界未知;训练不稳</td>
<td>M5 A/B:一步头 vs WTA,看穿柱率、到达率、摇摆率</td>
<td><strong>WTA K=4</strong>(沙箱中同样全部通过)</td>
</tr>
<tr class="even">
<td>§6.1A</td>
<td>一步头选型</td>
<td>B</td>
<td>首选 MeanFlow(沙箱验证)或 Shortcut+COT 配对(无需
JVP);<strong>否决</strong> Consistency
Policy(原文承认偏向一侧)、OneDP(故意取单模态)、朴素 1 步
FM(数学上等于条件均值)</td>
<td>组合未见论文</td>
<td>同上</td>
<td>WTA</td>
</tr>
<tr class="odd">
<td>§6.1A</td>
<td>生成时碰撞代价引导</td>
<td>✗→改</td>
<td>无论文在 1–2 步下测过;DiffusionSeeder 5 步引导仅 80.6%→81.1%;RTC
附录:引导权重过大发散</td>
<td>—</td>
<td>—</td>
<td>改为<strong>事后投影</strong>:对输出块做 1–2
步解析胶囊距离梯度,只在 d &lt; 余量时启用;修不了"绕错侧",靠多候选 +
安全层</td>
</tr>
<tr class="even">
<td>§6.1A</td>
<td>前缀条件(RTC)</td>
<td>B</td>
<td>RTC 原文只验证 n=5
步去噪、需反向传播;<strong>训练时前缀条件化</strong>(2512.05964)推理零开销,d≥2
时优于 RTC,天然适用 1 步生成器</td>
<td>我们 d≈0–1 时略差</td>
<td>块边界加速度跳变 vs 无前缀</td>
<td>无前缀 + 一致性打分</td>
</tr>
<tr class="odd">
<td>§6.1A</td>
<td>B 样条输出</td>
<td>C</td>
<td>仅 FAST/频域表示的间接证据</td>
<td>可能损失贴柱精度</td>
<td>near_column 与 16 步 Δq 对比</td>
<td><strong>默认改回 16 步 Δq</strong>,B 样条降为可选</td>
</tr>
<tr class="even">
<td>§6.2</td>
<td>损失:WTA-L1/CE、FK 胶囊端点、平滑</td>
<td>B</td>
<td>ELMP 式 FK 损失(§III-B 式 2)</td>
<td>流头损失原缺(已补:流匹配损失 + FK 损失加在一步输出上)</td>
<td>FK 消融:C 类碰撞率降 ≥ 20% 才保留</td>
<td>—</td>
</tr>
<tr class="odd">
<td>§6.3</td>
<td>训练配置与耗时</td>
<td>C</td>
<td>DRP:4090 上 100 万步 3 天(含点云)</td>
<td>原文"20 万步≈30 epoch"算错,实为约 68 epoch</td>
<td>先跑 2000 步测吞吐再定步数</td>
<td>30 epoch ≈ 8.8 万步</td>
</tr>
<tr class="even">
<td>§6.4</td>
<td>胶囊距离 PyTorch/JS 对拍</td>
<td>A(工程)</td>
<td>仓库已有 0 差异对拍惯例</td>
<td>浮点不可能"0 误差"</td>
<td>布尔判定 0 差异 + 距离误差 &lt; 1e-4 mm + 梯度对有限差分 &lt;
1e-3</td>
<td>—</td>
</tr>
<tr class="odd">
<td>§7.1</td>
<td>APG 可微微调(ELMP)</td>
<td>A</td>
<td>ELMP:碰撞率 31.3%→8.9%;1 万示范+APG 72.0% &gt; 60 万纯 BC
57.9%;H=69 步仅用梯度裁剪 ≤1</td>
<td>铰链损失只能侧推,不能从"撞柱"换到另一侧;可能压缩多模态;ELMP
中路径长度 +23%</td>
<td>每轮左右比例监控;行程门禁</td>
<td>保留 BC 锚定损失</td>
</tr>
<tr class="even">
<td>§7.2</td>
<td>无老师挖错 + 门禁</td>
<td>B</td>
<td>DRP 迭代师生微调 +45%(5 轮 10 h)</td>
<td>门禁集与验收集重叠 → 选择偏差(已拆分)</td>
<td>遗忘门禁:A 类每轮降幅 ≤ 0.5 pp</td>
<td>回滚</td>
</tr>
<tr class="odd">
<td>§7.3</td>
<td>拒绝采样自蒸馏</td>
<td>B</td>
<td>ReST</td>
<td>选"最短" → 贴柱,余量变小、多样性塌缩</td>
<td>C 类间隙中位数 ≥ 原 80%</td>
<td>改为"间隙 ≥ 阈值中最短"</td>
</tr>
<tr class="even">
<td>§7 可选</td>
<td>ReinFlow/DPPO</td>
<td>B</td>
<td>ReinFlow +40%,1–4 步可调,比 DPPO 省 62.8% 墙钟;DPPO 16
步块稳定</td>
<td>RL 会重塑模式分布(DPPO D3IL)</td>
<td>按左右分组平衡奖励</td>
<td>不做</td>
</tr>
<tr class="odd">
<td>§8.2</td>
<td>模式/噪声粘滞</td>
<td>✗→改</td>
<td>BID:沿用上次噪声 7 个任务中 3 个变差;后向一致性打分 + N=16 相对
+32%</td>
<td>—</td>
<td>E5 摇摆 &lt; 1%</td>
<td><strong>改为 BID 式一致性打分</strong>(与已提交块重叠步加权
L2)</td>
</tr>
<tr class="even">
<td>§8.3</td>
<td>安全层 + 可刹停不变式</td>
<td>不变式 A;离散实现 ✗→改</td>
<td>Thumm &amp; Althoff 2022 failsafe 盾</td>
<td>刹停"最大减速度"原未定义(已补加速度上限)</td>
<td>见 H1</td>
<td>训练余量提到 3–6 mm</td>
</tr>
<tr class="odd">
<td>§8.3</td>
<td>安全层耗时 &lt; 5 ms</td>
<td>C</td>
<td>仓库 collideFree 1.25 ms/次</td>
<td>贴柱时预筛失效;每步 4–13°</td>
<td>near_column 全程 P99 &lt; 5 ms</td>
<td>距离认证一次查询覆盖整段;提交步数降到 2</td>
</tr>
<tr class="even">
<td>§8.5</td>
<td>子目标头、价值头、短前瞻、卡死换向</td>
<td>B / C</td>
<td>AWE(航点 +25%)、SHAC、BID</td>
<td>卡死换向可能活锁</td>
<td>50 个对抗用例 3 s 内恢复 ≥ 95%,活锁 = 0</td>
<td>子目标改为离散绕行锚点分类</td>
</tr>
<tr class="odd">
<td>§8.6</td>
<td>50 Hz 策略层</td>
<td>B</td>
<td>π0 50 Hz、Diffusion Policy 10 Hz 预测 16 执行 8 最优</td>
<td>rAF 60 Hz 与 20 ms 不整除;后台标签页节流</td>
<td>P99 周期误差 &lt; 2 ms</td>
<td>Worker + 自有时钟</td>
</tr>
<tr class="even">
<td>§8/§9</td>
<td>浏览器推理 2–5 ms</td>
<td>C(偏乐观)</td>
<td>WebGPU 每次 dispatch 33–67 μs、同步 2–3 ms(2604.02344 表 6)</td>
<td>8 层 Transformer 约 150–300 次 dispatch → 调度开销 5–20 ms</td>
<td><strong>M4 后立刻</strong>导出 ONNX 实测 batch=8 P99</td>
<td>wasm-SIMD 多线程;每 3 步推理一次(预算 60 ms)</td>
</tr>
<tr class="odd">
<td>§9</td>
<td>验收 30/30</td>
<td>✗→改</td>
<td>30/30 时失败率 95% 上界仍约 9.5%</td>
<td>30 例被反复用于挑模型</td>
<td><strong>新造 ≥1000 例 near_column 一次性验收集</strong>(0 失败 ⇒
上界约 0.3%);到达率分母只算可达任务</td>
<td>—</td>
</tr>
</tbody>
</table>
<h3 id="0a3-沙箱对照实验2d-绕柱双模态cpu">0A.3 沙箱对照实验(2D
绕柱双模态,CPU)</h3>
<p>为验证"一步生成会不会把左右平均成穿柱",在沙箱做了一个最小实验:2D
点从柱左侧到右侧,示教一半从上绕一半从下绕,16 步动作块、每 3
步重推理,与本方案同构。代码 <code>ml/toy/toy_bimodal.py</code>,150
个"起终点都贴近中轴"的难例:</p>
<table>
<thead>
<tr class="header">
<th>动作头</th>
<th>单样本、无安全层:到达 / 穿柱回合</th>
<th>8 候选 + 安全层:到达 / 穿柱 / 平均刹停</th>
<th>推理(CPU,8 候选)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>MSE 回归</td>
<td>100% / 0%</td>
<td>100% / 0% / 0</td>
<td>0.13 ms</td>
</tr>
<tr class="even">
<td>WTA K=4</td>
<td>100% / 0%</td>
<td>100% / 0% / 0</td>
<td>0.19 ms</td>
</tr>
<tr class="odd">
<td>流匹配 10 步</td>
<td>100% / 4.0%</td>
<td>99.3% / 0% / 3.7</td>
<td>2.13 ms</td>
</tr>
<tr class="even">
<td><strong>朴素流匹配 1 步</strong></td>
<td>87.3% / <strong>23.3%</strong></td>
<td>81.3% / 0% / 14.0</td>
<td>0.25 ms</td>
</tr>
<tr class="odd">
<td><strong>MeanFlow 1 步</strong></td>
<td>100% / 2.7%</td>
<td>100% / 0% / 0.3</td>
<td>0.25 ms</td>
</tr>
</tbody>
</table>
<p>结论与局限:</p>
<ul>
<li><strong>证实</strong>:朴素 1 步流匹配会把模态平均到柱子里(23%
穿柱),必须用 MeanFlow/Shortcut 一类;MeanFlow 1 步达到 10
步流匹配的质量,推理快约 8 倍。</li>
<li><strong>证实</strong>:安全层在所有方法上都把穿柱降为
0,代价是刹停次数。</li>
<li><strong>没能区分</strong>:闭环里状态一偏离中轴,MSE/WTA
也能自然打破对称,所以这个玩具任务太容易,<strong>分不出一步头和 WTA
谁更好</strong>。真实 6 轴、位姿目标下的多峰更复杂,必须在 M5 用真实数据
A/B,不能凭论文或玩具定结论。</li>
<li>早期 300 步训练的 MSE 在同一难例上 100% 穿柱、加安全层后 0%
到达(卡死),说明"欠拟合时平均模态"的风险真实存在。</li>
</ul>
<h3 id="0a4-仍需用户确认--实测才能消除的风险">0A.4 仍需用户确认 /
实测才能消除的风险</h3>
<ol type="1">
<li>浏览器端推理延迟(最大不确定项,M4 后第一时间测)。</li>
<li>真机电机/驱动/通信方式(决定插补频率与刹停加速度上限)。</li>
<li>老师一致性(M1 第一项门禁)。</li>
<li>Neural MP
式"运行时采样多条、用解析距离挑选"是否算违反"无运行时老师"——v2.3
的理解是<strong>不算</strong>(不做搜索,只对模型自己的候选打分),请确认。</li>
</ol>
<hr />
<h2 id="1-业界调研具身智能里的神经运动规划">1.
业界调研:具身智能里的神经运动规划</h2>
<p>以下数据均来自论文原文(链接见 §13)。</p>
@@ -683,6 +1194,14 @@ ReinFlow。仿真就是我们的 GPU 批量 FK + 胶囊检测,3090 上可跑</
</tr>
</tbody>
</table>
<blockquote>
<p><strong>v2.3 核查修正(见
§0A)</strong>:①碰撞代价引导改为输出后的事后投影(1–2
步生成下无引导证据);②RTC
改为训练时前缀条件化(2512.05964,推理零开销);③一步头首选
MeanFlow(沙箱验证)或 Shortcut+COT,否决 Consistency Policy/OneDP/朴素
1 步 FM;④B 样条降为可选;⑤OFP 未找到公开代码,不作首选。</p>
</blockquote>
<p><strong>结论:v2.2 采纳"一步流匹配头 + 碰撞代价引导 + 前缀条件 + B
样条表示 + 可选 ReinFlow"。</strong> 这正是 π0.5、MP1/OFP、MPD、RTC
这几条前沿线在"低维状态、精确几何、实时控制"场景下的组合,规模仍然是几百万参数。</p>
@@ -816,10 +1335,12 @@ class="sourceCode json"><code class="sourceCode json"><span id="cb2-1"><a href="
<p>闭环策略学的是"在某个状态下,接下来 16
步怎么走",所以要把整条路径切成很多个"状态 → 动作块"样本:</p>
<ol type="1">
<li>按现有 <code>animTo</code> 的轴速比
<li><strong>(v2.3 修正,见 H2)</strong> 不再沿用 <code>animTo</code>
的全局 smoothstep + 总时长夹取。改为局部可观测时间律:按轴速比
<code>VREL = [0.6, 0.6, 0.9, 0.9, 1.2, 1.8]</code>
做时间参数化(与查看器动画同口径),控制周期 <strong>dt = 20
ms</strong>。</li>
匀速巡航,加减速为梯形,且只取决于"当前速度 +
剩余路程"(加速度上限另设),控制周期 <strong>dt = 20
ms</strong>;当前速度 q_t − q_{t−1} 作为输入。</li>
<li>得到状态序列 q_0, q_1, …, q_N。对每个 t(每隔 3 步取 1
个,减少冗余)生成样本:
<ul>
@@ -827,9 +1348,11 @@ ms</strong>。</li>
<li>标签:未来 S = 16 步的增量 Δq_{t+1..t+16} = q_{t+k} −
q_t(到终点后补零,即"停住")</li>
</ul></li>
<li>每条路径平均约 50–150 个样本 → 5 万条任务约 300 万个训练样本。</li>
<li><strong>路径后缀天然覆盖"从半路出发"</strong>,等于免费的 DAgger
种子数据。</li>
<li>每条路径约 40–50 个样本(route_bench 平均执行约 2.5 s)→ 5
万条任务约 200 万个训练样本(以 M1 的 stats.json 为准)。</li>
<li><del>路径后缀等于免费 DAgger</del>(v2.3
删除:后缀仍是老师状态)。改为关节噪声增广(σ 0.5–1°)+
离线老师重标,偏离状态的覆盖靠 §7。</li>
</ol>
<h3 id="46-耗时与存储">4.6 耗时与存储</h3>
<ul>
@@ -977,24 +1500,28 @@ K×16 个可学习动作 token ──▶ 4 层 Transformer decoder(非自回
<tr class="even">
<td>训练</td>
<td>WTA-L1 + 模式 CE</td>
<td>OFP 自蒸馏(或 MeanFlow),从零训练,无需预训练老师模型</td>
<td><strong>MeanFlow</strong>(沙箱已验证 1 步可用)或 Shortcut + COT
条件配对(无需 JVP);损失 = 流匹配损失 + FK
胶囊端点损失(加在一步输出上)。不采用 Consistency Policy / OneDP / 朴素
1 步 FM</td>
</tr>
<tr class="odd">
<td>输出</td>
<td>16 步 Δq</td>
<td><strong>B 样条</strong>:6 个控制点 × 6 关节,再采样成 16
步;自带平滑</td>
<td><strong>16 步 Δq</strong>(v2.3:B 样条 6 控制点降为可选,需
near_column 消融不掉点才启用)</td>
</tr>
<tr class="even">
<td>前缀条件</td>
<td>无,靠时间集成</td>
<td>输入"已提交前 3 步",新块从前缀接着走(RTC 思路)</td>
<td>无</td>
<td><strong>训练时前缀条件化</strong>(2512.05964):输入已提交且未执行的步,训练时随机遮盖前缀长度
0–3;推理零额外开销</td>
</tr>
<tr class="odd">
<td>碰撞引导</td>
<td>碰撞修正</td>
<td>无</td>
<td>最后一步加一次可微胶囊距离梯度修正:a ← a + η·∇d_capsule(d &lt;
安全距离时)</td>
<td><strong>事后投影</strong>:对输出块做 1–2 步解析胶囊距离梯度,仅 d
&lt; 余量时启用(v2.3:生成中引导在 1–2 步下无证据)</td>
</tr>
<tr class="even">
<td>推理成本</td>
@@ -1008,9 +1535,10 @@ K×16 个可学习动作 token ──▶ 4 层 Transformer decoder(非自回
</tr>
</tbody>
</table>
<p>模式粘滞改为"噪声粘滞":上一周期选中候选的噪声向量保留下来,本周期作为
8
个噪声之一,相邻周期自然延续同一绕行方向。子目标头、价值头(§8.5)保持不变。</p>
<p>候选排序(v2.3 修正):不用"噪声粘滞"(BID 中 7 个任务有 3
个变差),改为 BID 式一致性打分:分数 =
−‖候选与上一已提交块重叠步之差‖²(加权)−
λ·价值头剩余代价。子目标头、价值头(§8.5)保持不变。</p>
<p>M4 同时实现两种头,M5 预训练后在 near_column + held-out 上
A/B;若一步流匹配不优于 WTA,回退 WTA(风险可控)。</p>
<h3 id="62-预训练损失">6.2 预训练损失</h3>
@@ -1046,7 +1574,8 @@ A/B;若一步流匹配不优于 WTA,回退 WTA(风险可控)。</p>
</tr>
<tr class="odd">
<td>步数</td>
<td>约 20 万步(300 万样本约 30
<td>先跑 2000 步测吞吐再定;参考:200 万样本 × 30 epoch ÷ bs 1024 ≈ 6
万步(v2.3 更正:原"20 万步≈30 epoch"实为约 68
epoch),验证集闭环成功率不再上升即停</td>
</tr>
<tr class="even">
@@ -1126,9 +1655,9 @@ APG 收敛后进一步缩短行程。</p>
<h2 id="8-第五步无老师闭环部署">8. 第五步:无老师闭环部署</h2>
<h3 id="81-每个控制周期做什么默认-50-hz">8.1 每个控制周期做什么(默认 50
Hz)</h3>
<pre><code>每 20 ms:
<pre><code>每 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. 按&quot;模式概率 − 切换代价&quot;排序(§8.2)
4. 安全层依次检查候选的前 n=3 步(60 ms 的运动)+ 刹停段(§8.3)
第一个通过的 → 把这 3 步&quot;提交&quot;给插补器;记下 k_prev
@@ -1137,21 +1666,28 @@ Hz)</h3>
5. 全部不通过 → 进入刹停:按已验证的刹停轨迹减速停下,保持;下一周期继续推理
6. 到达判据:TCP 误差 &lt; 1 mm(pose 另需 &lt; 0.5°)且速度≈0 → 结束;
接近目标(&lt; 5 mm)时可选做 1–3 次局部牛顿精修(solveTo 单步,不是全量 IK)</code></pre>
<p>插补器在两个周期之间做平滑过渡(下一块与正在执行的块做时间集成/交叉淡入,ACT
的 temporal ensembling 思路),避免每 20 ms 一顿。</p>
<p>v2.3:<strong>删除插补器交叉淡入/时间集成</strong>(见
H3)。执行的必须就是安全层认证过的那一块;块间连续性由前缀条件和一致性打分保证。"每
20 ms 重推理只执行 1 步"仅作 A/B 对照。</p>
<h3 id="82-模式粘滞防左右摇摆">8.2 模式粘滞(防左右摇摆)</h3>
<ul>
<li>排序分数 = log p(k) − c·[k ≠ k_prev],c 初值 2.0(在 §7.2 的 E5
统计上调)。</li>
<li>训练时 k_prev
作为输入(§5.1),模型自己也学会"保持当前绕行方向"。</li>
<li>WTA 基线:排序分数 = log p(k) − c·[k ≠ k_prev],c 初值 2.0;k_prev
仅对 WTA 头作为输入。</li>
<li>一步头:BID 式一致性打分(见 §6.1A),不使用 k_prev / log
p(k)。</li>
</ul>
<h3 id="83-安全层唯一的硬保证">8.3 安全层(唯一的硬保证)</h3>
<ul>
<li>检查内容:候选前 3 步的连续运动做 1° 细验 + 半格复验(与现有
<code>pathFine</code> 同口径),外加关节限位。</li>
<li>检查内容(v2.3 修正,见
H1):臂×立柱/台架用<strong>距离下界认证</strong>——段两端最小距离之和
&gt; Σ_j r_j·|Δθ_j|(r_j 为每轴实测杠杆上界,J1 约 9.0
mm/°)即判整段安全,否则二分到通过或判不安全;自碰撞对复用 pair2d
杠杆界;外加关节限位。离散
1°+半格检查只作快速预筛,不再作为保证。现有代码口径实为
1.5°+半格,文档原写法有误。</li>
<li><strong>可刹停不变式</strong>:执行前还要检查"从第 3
步末状态按最大减速度停下"的刹停段也无干涉。于是任何时候系统都处在"有一条已验证的停车路线"的状态,下一周期就算模型完全失效,也只会停下、不会撞。</li>
步末状态按最大减速度(v2.3
新增每轴加速度上限,待真机参数)停下"的刹停段也无干涉。于是任何时候系统都处在"有一条已验证的停车路线"的状态,下一周期就算模型完全失效,也只会停下、不会撞。</li>
<li>耗时:3 步 × 4 候选,最坏约 4 × 10 个采样位形 × 约 1.8 ms ≈ 70
ms(太慢)→ 实际做法:
<ul>
@@ -1421,13 +1957,16 @@ rt)</td>
<tbody>
<tr class="odd">
<td>实际执行的碰撞帧</td>
<td><strong>= 0</strong></td>
<td><strong>= 0</strong>(以距离认证或 0.01° 审计测量,不用离散 1°
检查)</td>
<td>rt_drag_bench 0</td>
</tr>
<tr class="even">
<td>到达率</td>
<td>route <strong>60/60</strong>,near pos <strong>30/30</strong>,near
rt <strong>30/30</strong>,held-out ≥ 98%</td>
rt <strong>30/30</strong>,<strong>另造 ≥1000 例 near_column
一次性验收集 0 失败</strong>;held-out(分母只算可达任务)≥ 98%,D
类另考停靠距离 ≤ 老师 + 5 mm</td>
<td>60/60、30/30、30/30</td>
</tr>
<tr class="odd">