docs: 可选项全部定案(§1.1 利弊与决定):MeanFlow 头、A* 老师、wasm 后端;去掉 B 样条/自蒸馏/ReinFlow/Shortcut
This commit is contained in:
+224
-134
@@ -261,7 +261,12 @@ id="toc-transformer-避障运动策略最终方案">Transformer
|
||||
避障运动策略:最终方案</a>
|
||||
<ul>
|
||||
<li><a href="#0-定位与边界" id="toc-0-定位与边界">0. 定位与边界</a></li>
|
||||
<li><a href="#1-方案总览" id="toc-1-方案总览">1. 方案总览</a></li>
|
||||
<li><a href="#1-方案总览" id="toc-1-方案总览">1. 方案总览</a>
|
||||
<ul>
|
||||
<li><a href="#11-取舍决定每项只有一个答案"
|
||||
id="toc-11-取舍决定每项只有一个答案">1.1
|
||||
取舍决定(每项只有一个答案)</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#2-依据" id="toc-2-依据">2. 依据</a>
|
||||
<ul>
|
||||
<li><a href="#21-业界神经运动规划" id="toc-21-业界神经运动规划">2.1
|
||||
@@ -300,7 +305,9 @@ id="toc-45-时间参数化--闭环训练样本">4.5 时间参数化 →
|
||||
模型与预训练</a>
|
||||
<ul>
|
||||
<li><a href="#61-结构" id="toc-61-结构">6.1 结构</a></li>
|
||||
<li><a href="#62-动作头" id="toc-62-动作头">6.2 动作头</a></li>
|
||||
<li><a href="#62-动作头meanflow-一步生成"
|
||||
id="toc-62-动作头meanflow-一步生成">6.2 动作头:MeanFlow
|
||||
一步生成</a></li>
|
||||
<li><a href="#63-损失" id="toc-63-损失">6.3 损失</a></li>
|
||||
<li><a href="#64-训练配置" id="toc-64-训练配置">6.4 训练配置</a></li>
|
||||
<li><a href="#65-对拍与验证" id="toc-65-对拍与验证">6.5
|
||||
@@ -312,10 +319,6 @@ id="toc-45-时间参数化--闭环训练样本">4.5 时间参数化 →
|
||||
主力:APG 可微微调</a></li>
|
||||
<li><a href="#72-辅助无老师挖错循环" id="toc-72-辅助无老师挖错循环">7.2
|
||||
辅助:无老师挖错循环</a></li>
|
||||
<li><a href="#73-可选拒绝采样自蒸馏" id="toc-73-可选拒绝采样自蒸馏">7.3
|
||||
可选:拒绝采样自蒸馏</a></li>
|
||||
<li><a href="#74-可选reinflow-微调" id="toc-74-可选reinflow-微调">7.4
|
||||
可选:ReinFlow 微调</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#8-部署" id="toc-8-部署">8. 部署</a>
|
||||
<ul>
|
||||
@@ -411,7 +414,9 @@ ms;消除现有拖拽重规划 P99 约 321 ms 的长尾</td>
|
||||
<p><strong>关于"风险":</strong>
|
||||
论文证据只能说明"别人在相近条件下做成过",没有一篇论文的条件(低维状态、单根固定立柱、约
|
||||
4M
|
||||
参数、浏览器推理、30/30)与本项目完全一致。因此本方案中只有安全层是<strong>硬保证</strong>(碰撞与否不依赖模型好坏);其余每一项都配有证据等级、本仓库可测的<strong>门禁</strong>(不过不进下一步)和<strong>回退</strong>(§10)。</p>
|
||||
参数、浏览器推理、30/30)与本项目完全一致。因此本方案中只有安全层是<strong>硬保证</strong>;每个设计点都已定为唯一选择(§1.1),只有
|
||||
MeanFlow
|
||||
头带一个预先写定触发条件的回退(碰撞与否不依赖模型好坏);其余每一项都配有证据等级、本仓库可测的<strong>门禁</strong>(不过不进下一步)和<strong>回退</strong>(§10)。</p>
|
||||
<hr />
|
||||
<h2 id="1-方案总览">1. 方案总览</h2>
|
||||
<table>
|
||||
@@ -432,7 +437,7 @@ ms;消除现有拖拽重规划 P99 约 321 ms 的长尾</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>数据</td>
|
||||
<td>采样式规划器离线造 5 万条任务 → 约 200 万"状态→动作块"样本</td>
|
||||
<td>规划器离线造 5 万条任务 → 约 200 万"状态→动作块"样本</td>
|
||||
<td>B</td>
|
||||
<td>MπNets、DRP、ELMP 均用规划器老师</td>
|
||||
</tr>
|
||||
@@ -450,66 +455,179 @@ ms;消除现有拖拽重规划 P99 约 321 ms 的长尾</td>
|
||||
<td>DRP;Diffusion Policy(位置式优于速度式)</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>动作头(默认)</td>
|
||||
<td><strong>一步生成头</strong>:MeanFlow 或 Shortcut + 条件 OT
|
||||
配对,每次并行采 8 个噪声 → 8 条候选</td>
|
||||
<td>动作头</td>
|
||||
<td><strong>MeanFlow 一步生成头</strong>,每次并行采 8 个噪声 → 8
|
||||
条候选</td>
|
||||
<td>B</td>
|
||||
<td>沙箱双模态实验(§2.4);COT 双峰实证;MP1 约 6.8 ms</td>
|
||||
<td>沙箱双模态实验(§2.4);MP1 约 6.8 ms</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>动作头(基线)</td>
|
||||
<td>K=4 模式 WTA 头,与默认头 A/B,择优</td>
|
||||
<td>A</td>
|
||||
<td>多模态轨迹预测通用做法;沙箱实验同样通过</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>块间连续</td>
|
||||
<td>训练时前缀条件化:输入已提交未执行的步</td>
|
||||
<td>B</td>
|
||||
<td>2512.05964:推理零开销,d≥2 时优于推理时 RTC</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td>碰撞修正</td>
|
||||
<td>输出后 1–2 步解析胶囊距离梯度投影(仅 d < 余量时)</td>
|
||||
<td>输出后 1 步解析胶囊距离梯度投影(每轴 ≤ 0.5°,仅 d <
|
||||
余量时)</td>
|
||||
<td>B</td>
|
||||
<td>DiffusionSeeder:少步生成下在环引导收益很小;投影在已知环境下够用</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<tr class="even">
|
||||
<td>候选排序</td>
|
||||
<td>与已提交块重叠步的一致性打分 + 价值头</td>
|
||||
<td>B</td>
|
||||
<td>BID:一致性打分 + 多样本相对提升 32%</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td>预训练</td>
|
||||
<td>行为克隆 + FK 胶囊端点损失</td>
|
||||
<td>B</td>
|
||||
<td>ELMP 式 FK 损失</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<tr class="even">
|
||||
<td>后训练(主)</td>
|
||||
<td>APG:可微运动学展开 + 胶囊距离代价反传</td>
|
||||
<td>A</td>
|
||||
<td>ELMP:碰撞率 31.3%→8.9%;1 万示范 + APG 胜 60 万纯 BC</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>后训练(辅)</td>
|
||||
<td>无老师挖错循环 + 门禁;可选 ReinFlow</td>
|
||||
<td>B</td>
|
||||
<td>DRP 迭代微调 +45%;ReinFlow +40%</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>后训练(辅)</td>
|
||||
<td>无老师挖错循环 + 门禁</td>
|
||||
<td>B</td>
|
||||
<td>DRP 迭代微调 +45%</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>安全层</td>
|
||||
<td>距离下界认证 + 可刹停不变式</td>
|
||||
<td>A</td>
|
||||
<td>Schwarzer 2005 连续认证;Thumm & Althoff 2022 failsafe</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td>30/30 手段</td>
|
||||
<td>子目标头、价值头、短前瞻、卡死换向</td>
|
||||
<td>子目标头、价值头、冷启动/卡死时短前瞻、卡死换向</td>
|
||||
<td>B / C</td>
|
||||
<td>AWE、SHAC、BID</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>老师</td>
|
||||
<td>PRM 路网 A* + 捷径平滑(确定性);A* 失败才用
|
||||
<code>solveDyn</code></td>
|
||||
<td>B</td>
|
||||
<td>MπNets:老师不一致碰撞率 13.78%,一致老师 0.94%</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>推理后端</td>
|
||||
<td>onnxruntime-web wasm-SIMD 多线程</td>
|
||||
<td>C</td>
|
||||
<td>小模型下 WebGPU 调度开销占主导</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="11-取舍决定每项只有一个答案">1.1
|
||||
取舍决定(每项只有一个答案)</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th>选项</th>
|
||||
<th>利</th>
|
||||
<th>弊</th>
|
||||
<th>决定</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td>动作头:MeanFlow 一步头 vs WTA K=4</td>
|
||||
<td>MeanFlow:连续多模态,能同时表达左/右绕行与位姿目标的多个 IK
|
||||
分支;沙箱 1 步达到 10 步流匹配质量。WTA:训练稳、实现简单</td>
|
||||
<td>MeanFlow:训练需 JVP(训练慢约 1.5–2
|
||||
倍)、原生版本在部分任务失败(K-MF 表 1)。WTA:只有 4 个固定模式,左右
|
||||
× 肘/腕分支可能超过 4 个;沙箱分不出两者高下</td>
|
||||
<td><strong>上 MeanFlow</strong>。WTA 不实现;只有 M5
|
||||
门禁不过(near_column 穿柱率高于 2% 或训练发散)才换成 WTA
|
||||
K=8,二者共用骨干,切换约 1 天</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>Shortcut + 条件 OT 配对</td>
|
||||
<td>无需 JVP</td>
|
||||
<td>本项目无任何实测,组合无论文先例</td>
|
||||
<td><strong>不上</strong></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>B 样条动作表示</td>
|
||||
<td>平滑由表示保证;输出维度小</td>
|
||||
<td>贴柱时拐角被抹圆、局部精度下降;只有间接证据;平滑已由梯形时间律 +
|
||||
平滑损失保证</td>
|
||||
<td><strong>不上</strong>,固定 16 步 Δq</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>输出后梯度投影</td>
|
||||
<td>修掉 1–2 mm 的轻微侵入,成本约 0.1 ms,减少刹停</td>
|
||||
<td>推离数据分布、改变块间一致性;修不了"绕错侧"</td>
|
||||
<td><strong>上</strong>,限 1 步、每轴修正量 ≤ 0.5°,仅 d <
|
||||
余量时触发</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>短前瞻(多推一块打分)</td>
|
||||
<td>避开"走两步就撞墙"的分支</td>
|
||||
<td>推理次数翻倍,加剧最大不确定项(浏览器延迟)</td>
|
||||
<td><strong>只在冷启动和卡死换向时上</strong>,平时不做</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>拒绝采样自蒸馏</td>
|
||||
<td>进一步缩短行程</td>
|
||||
<td>偏向贴柱、余量变小、多样性塌缩;APG 行程项已覆盖同一目标</td>
|
||||
<td><strong>不上</strong></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>ReinFlow 强化学习微调</td>
|
||||
<td>能直接优化到达/卡死/刹停等离散目标</td>
|
||||
<td>RL
|
||||
会重塑左右模式比例;奖励调参与训练多出数天;这些离散目标已由卡死换向规则
|
||||
+ APG 覆盖</td>
|
||||
<td><strong>不上</strong></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>挖错循环中 E2 错题请老师补路径</td>
|
||||
<td>解决可微代价绕不出的局部极小</td>
|
||||
<td>量小、离线</td>
|
||||
<td><strong>上</strong></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>老师:PRM 路网 A* vs <code>solveDyn</code></td>
|
||||
<td>A*:确定性,同类任务左右选择一致,且是路网上的最短;<code>solveDyn</code>
|
||||
覆盖更全</td>
|
||||
<td>A*:受路网分辨率限制,个别任务失败</td>
|
||||
<td><em><em>A</em> 为主老师</em>*,失败的任务用
|
||||
<code>solveDyn</code>(固定种子)补</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>推理后端:WebGPU vs wasm</td>
|
||||
<td>WebGPU 大模型快</td>
|
||||
<td>本模型约 4M 参数,WebGPU 每次调度 33–67 μs × 150–300
|
||||
次,调度开销反而大</td>
|
||||
<td><strong>wasm-SIMD 多线程</strong>;M4 实测若 WebGPU P99
|
||||
更低再换</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>训练余量</td>
|
||||
<td>越大越不易被认证拒绝</td>
|
||||
<td>越大行程越长、贴柱越难</td>
|
||||
<td><strong>5 mm</strong></td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>关节噪声增广 σ</td>
|
||||
<td>覆盖偏离状态</td>
|
||||
<td>过大产生无意义状态</td>
|
||||
<td><strong>1°</strong></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>局部牛顿精修</td>
|
||||
<td>末端精度到 < 1 mm</td>
|
||||
<td>无</td>
|
||||
<td><strong>上</strong>,同样过安全层</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>证据等级:<strong>A</strong> 有直接先例与数字 · <strong>B</strong>
|
||||
@@ -630,9 +748,9 @@ ms;消除现有拖拽重规划 P99 约 321 ms 的长尾</td>
|
||||
<td>无图像、无语言指令;3B 参数更慢不更准</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>一步生成:MeanFlow(MP1)、Shortcut、条件 OT 配对</td>
|
||||
<td><strong>采用</strong>(默认头候选)</td>
|
||||
<td>1 次前向;COT 有双峰实证;Shortcut 无需 JVP</td>
|
||||
<td>一步生成:MeanFlow(MP1)</td>
|
||||
<td><strong>采用</strong></td>
|
||||
<td>1 次前向;沙箱双模态实验通过</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>Consistency Policy、OneDP、朴素 1 步流匹配</td>
|
||||
@@ -641,39 +759,44 @@ ms;消除现有拖拽重规划 P99 约 321 ms 的长尾</td>
|
||||
等于条件均值,会穿柱</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>OFP 自蒸馏</td>
|
||||
<td>不作首选</td>
|
||||
<td>未找到公开代码;自引导 λ=0.5 时出现模态塌缩</td>
|
||||
<td>Shortcut / 条件 OT 配对</td>
|
||||
<td>不采用</td>
|
||||
<td>见 §1.1</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>OFP 自蒸馏</td>
|
||||
<td>不采用</td>
|
||||
<td>未找到公开代码;自引导 λ=0.5 时出现模态塌缩</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>生成过程中代价引导(MPD/EDMP/GPD)</td>
|
||||
<td>不采用</td>
|
||||
<td>无论文在 1–2 步下验证;改用输出后投影</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td>推理时 RTC</td>
|
||||
<td>不采用</td>
|
||||
<td>原文只验证 5 步去噪且需反向传播;改用训练时前缀条件化</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<tr class="even">
|
||||
<td>时间集成 / 交叉淡入</td>
|
||||
<td>不采用</td>
|
||||
<td>执行的是未认证的混合块;左右两块平均可能穿柱;π0 弃用</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<tr class="odd">
|
||||
<td>FAST 动作分词</td>
|
||||
<td>不采用</td>
|
||||
<td>服务于语言骨干,自回归推理慢</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>B 样条动作表示</td>
|
||||
<td>可选</td>
|
||||
<td>仅间接证据;须 near_column 消融不掉点才启用</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>B 样条动作表示</td>
|
||||
<td>不采用</td>
|
||||
<td>见 §1.1</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>ReinFlow / DPPO</td>
|
||||
<td>可选第三阶段</td>
|
||||
<td>适合到达/卡死/刹停等离散目标;须按左右分组平衡奖励</td>
|
||||
<td>不采用</td>
|
||||
<td>见 §1.1</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -728,7 +851,8 @@ ms;消除现有拖拽重规划 P99 约 321 ms 的长尾</td>
|
||||
步流匹配的质量,推理快约 8 倍。</li>
|
||||
<li>安全层在所有方法上把穿柱降为 0,代价是刹停。</li>
|
||||
<li>该任务过于简单(闭环中状态一偏离中轴即打破对称),<strong>分不出一步头与
|
||||
WTA 谁更好</strong>,需在真实数据上 A/B(M5)。</li>
|
||||
WTA 谁更好</strong>;因此 WTA 只作为 M5
|
||||
门禁不过时的预定回退(§1.1)。</li>
|
||||
<li>训练仅 300 步的 MSE 在同一难例上 100% 穿柱、加安全层后 0%
|
||||
到达,说明欠拟合时平均模态的风险真实存在。</li>
|
||||
</ul>
|
||||
@@ -755,8 +879,7 @@ WTA 谁更好</strong>,需在真实数据上 A/B(M5)。</li>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>部署推理</td>
|
||||
<td>浏览器 onnxruntime-web(WebGPU /
|
||||
wasm-SIMD,按实测选);后续真机控制器</td>
|
||||
<td>浏览器 onnxruntime-web wasm-SIMD 多线程;后续真机控制器</td>
|
||||
<td>与现有查看器同页</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@@ -844,8 +967,9 @@ class="sourceCode json"><code class="sourceCode json"><span id="cb2-1"><a href="
|
||||
</tbody>
|
||||
</table>
|
||||
<ul>
|
||||
<li>pos / pose 各半;老师用
|
||||
<code>solveDyn</code>,固定种子;同类任务优先取行程最短的绕行同伦类,保证左右选择一致。</li>
|
||||
<li>pos / pose 各半;老师为 PRM 路网 A* + 捷径平滑(确定性;复用
|
||||
<code>routeRT</code> 的路网图搜索,放宽时间预算);A* 失败的任务用
|
||||
<code>solveDyn</code>(固定种子)补。</li>
|
||||
<li>另造三个互不重叠的集合:<strong>门禁集</strong> 2000
|
||||
条(挖错循环每轮用)、<strong>held-out 验收集</strong> 2000
|
||||
条、<strong>near_column 扩展验收集</strong> ≥1000
|
||||
@@ -873,21 +997,21 @@ a_max 为待定参数,真机型号确定后设定),dt = 20 ms。</li>
|
||||
</ul></li>
|
||||
<li>每条路径约 40–50 个样本 → 约 200 万样本(以 <code>stats.json</code>
|
||||
为准)。</li>
|
||||
<li>协变量偏移对策:关节噪声增广(σ
|
||||
0.5–1°,噪声状态由老师离线重标);偏离状态的进一步覆盖靠 §7。</li>
|
||||
<li>协变量偏移对策:关节噪声增广(σ =
|
||||
1°,噪声状态由老师离线重标);偏离状态的进一步覆盖靠 §7。</li>
|
||||
</ol>
|
||||
<h3 id="46-耗时与存储">4.6 耗时与存储</h3>
|
||||
<ul>
|
||||
<li><code>solveDyn</code> 约 0.7 s/条:沙箱 2 进程约 5 小时;8 核机器约
|
||||
1.5 小时。</li>
|
||||
<li>路网 A* 每条数十毫秒,耗时主要在过滤认证;按 <code>solveDyn</code>
|
||||
0.7 s/条上限估算,沙箱 2 进程不超过 5 小时。</li>
|
||||
<li>200 万样本原始约 1 GB;Parquet 约 200 MB。</li>
|
||||
</ul>
|
||||
<h3 id="47-检查点">4.7 检查点</h3>
|
||||
<ul class="task-list">
|
||||
<li><label><input
|
||||
type="checkbox" /><code>ml/data/stats.json</code>:类别、到达率、行程、样本数、补零样本占比</label></li>
|
||||
<li><label><input type="checkbox" />老师一致性:同任务 5
|
||||
个种子,同伦类一致率 ≥ 90%,行程变异系数 < 10%</label></li>
|
||||
<li><label><input type="checkbox" />老师一致性:起终点扰动 ±5 mm
|
||||
的邻居任务同伦类一致率 ≥ 90%</label></li>
|
||||
<li><label><input type="checkbox" />抽 20 条在查看器回放(新增
|
||||
<code>?replay=</code> 参数)</label></li>
|
||||
<li><label><input type="checkbox" />各集合与训练集无重叠</label></li>
|
||||
@@ -956,19 +1080,13 @@ type="checkbox" /><code>ml/data/stats.json</code>:类别、到达率、行程
|
||||
<td style="text-align: right;">8</td>
|
||||
<td>臂各段到立柱的胶囊距离</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>上一次所选模式 k_prev</td>
|
||||
<td style="text-align: right;">5</td>
|
||||
<td>one-hot(含"无"),仅 WTA 基线头使用</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="52-输出">5.2 输出</h3>
|
||||
<ul>
|
||||
<li>默认一步生成头:每条候选 16 步 × 6 轴
|
||||
<li>MeanFlow 一步头:每条候选 16 步 × 6 轴
|
||||
Δq(按每轴最大步长归一化)。</li>
|
||||
<li>WTA 基线头:K=4 条 16 步 Δq + 4 类模式 logits。</li>
|
||||
<li>两种头共用:价值头(剩余时间/代价)、子目标头(2 个关节途经点 +
|
||||
<li>附加头:价值头(剩余时间/代价)、子目标头(2 个关节途经点 +
|
||||
是否需要)。</li>
|
||||
</ul>
|
||||
<h3 id="53-连续轴">5.3 连续轴</h3>
|
||||
@@ -981,11 +1099,10 @@ type="checkbox" /><code>ml/data/stats.json</code>:类别、到达率、行程
|
||||
│
|
||||
4 层 Transformer encoder
|
||||
│ (memory)
|
||||
16 个动作 token(一步头:注入噪声 + 时间嵌入;WTA:K×16 个可学习 token)
|
||||
16 个动作 token(注入噪声 z + 时间嵌入 (r, t))
|
||||
▼
|
||||
4 层 Transformer decoder(非自回归,一次前向)
|
||||
├─ 动作输出:每 token 6 维 Δq
|
||||
├─ (WTA)模式分类头:4
|
||||
├─ 价值头:1
|
||||
└─ 子目标头:2 个关节途经点 + 是否需要</code></pre>
|
||||
<table>
|
||||
@@ -1012,58 +1129,49 @@ type="checkbox" /><code>ml/data/stats.json</code>:类别、到达率、行程
|
||||
</table>
|
||||
<p>子目标触发:新目标或目标跳变 > 50 mm 时输出;到达当前子目标 <
|
||||
5° 后切下一个。</p>
|
||||
<h3 id="62-动作头">6.2 动作头</h3>
|
||||
<h3 id="62-动作头meanflow-一步生成">6.2 动作头:MeanFlow 一步生成</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr class="header">
|
||||
<th></th>
|
||||
<th>一步生成头(默认)</th>
|
||||
<th>WTA 头(基线)</th>
|
||||
<th>项</th>
|
||||
<th>做法</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td>多模态</td>
|
||||
<td>连续分布;每次并行采 8 个噪声 → 8 条候选</td>
|
||||
<td>固定 4 个模式</td>
|
||||
<td>连续分布;每次推理并行采 8 个噪声 → 8 条候选</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>训练</td>
|
||||
<td>MeanFlow 损失,或 Shortcut 自一致 + FM 锚定损失(配合条件 OT
|
||||
配对)</td>
|
||||
<td>WTA-L1 + 模式 CE</td>
|
||||
<td>MeanFlow 平均速度场损失(MP1 配方:25% 样本
|
||||
r≠t,自适应损失加权),JVP 用 <code>torch.func.jvp</code></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>推理</td>
|
||||
<td>1 次批量前向</td>
|
||||
<td>1 次前向</td>
|
||||
<td>1 次批量前向(r=0, t=1)</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>后处理</td>
|
||||
<td>1–2 步解析胶囊距离梯度投影(JS 实现,仅 d < 余量时)</td>
|
||||
<td>同左</td>
|
||||
<td>1 步解析胶囊距离梯度投影,每轴修正 ≤ 0.5°,仅 d < 余量时(JS
|
||||
实现,不走 ONNX)</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>APG 兼容</td>
|
||||
<td>固定噪声后为确定性可微映射</td>
|
||||
<td>模式选择用 Gumbel-Softmax 或对 4 个模式各展开取最小代价</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>预定回退</td>
|
||||
<td>M5 门禁不过(near_column 穿柱率 > 2% 或训练发散)→ 同骨干换 WTA
|
||||
K=8 头(WTA-L1 + 模式 CE),约 1 天</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>M4 同时实现两种头,M5 预训练后在 near_column 与门禁集上
|
||||
A/B(穿柱率、到达率、摇摆率),择优部署。</p>
|
||||
<h3 id="63-损失">6.3 损失</h3>
|
||||
<p>一步生成头:</p>
|
||||
<pre><code>L = MeanFlow 损失(或 Shortcut 自一致 + FM 锚定) 1.0
|
||||
<pre><code>L = MeanFlow 损失 1.0
|
||||
+ FK 损失:一步输出(固定噪声)的各连杆胶囊端点位置差 0.5
|
||||
+ 平滑:二阶差分 0.05
|
||||
+ 价值头 L1 + 子目标头 L1 0.1 / 0.1</code></pre>
|
||||
<p>WTA 头:</p>
|
||||
<pre><code>L = WTA-L1(动作块, 最近模式) 1.0
|
||||
+ CE(模式分类) 0.5
|
||||
+ FK 损失 0.5
|
||||
+ 平滑:二阶差分 0.05
|
||||
+ 价值头 L1 + 子目标头 L1 0.1 / 0.1</code></pre>
|
||||
<h3 id="64-训练配置">6.4 训练配置</h3>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -1116,7 +1224,7 @@ s),统计到达率、用时 ≤ 老师 × 1.3
|
||||
<pre><code>for 每个 batch(随机采样 q0 和目标,不需要老师):
|
||||
q = q0
|
||||
for t in 0..H-1 (H = 60 次推理 × 3 步 = 180 步 ≈ 3.6 s;长任务分段截断反传):
|
||||
chunk = π(obs(q, 目标, 前缀)) # 一步头固定噪声;WTA 见 §6.2
|
||||
chunk = π(obs(q, 目标, 前缀), z) # 每条展开固定一个噪声 z
|
||||
Δq = chunk[0:3] # 与部署一致
|
||||
q = clamp(q + Δq)
|
||||
累计 L_col(q), L_smooth(Δq)
|
||||
@@ -1124,8 +1232,8 @@ s),统计到达率、用时 ≤ 老师 × 1.3
|
||||
反传,梯度裁剪 ≤ 1.0,lr 1e-4</code></pre>
|
||||
<ul>
|
||||
<li>碰撞项 L_col = Σ ReLU(margin − 胶囊距离),margin =
|
||||
<code>margin_mm</code> + 训练余量(3–6
|
||||
mm,覆盖安全层认证的保守量);含臂×立柱、臂×台架、臂×臂(非相邻段)。</li>
|
||||
<code>margin_mm</code> + 训练余量 5
|
||||
mm(覆盖安全层认证的保守量);含臂×立柱、臂×台架、臂×臂(非相邻段)。</li>
|
||||
<li>到达项:位置误差² + λ_rot·‖R − R*‖_F²。</li>
|
||||
<li>平滑项:速度² + 加速度²。</li>
|
||||
<li>BC 锚定项:保留预训练损失,防止多模态被压缩;每轮监控左右比例。</li>
|
||||
@@ -1145,21 +1253,14 @@ mm,覆盖安全层认证的保守量);含臂×立柱、臂×台架、臂×
|
||||
个百分点、上一轮修好的错题 95% 仍对;否则回滚。</li>
|
||||
<li>停止:连续 2 轮提升 < 0.5 个百分点,或满 6 轮。</li>
|
||||
</ol>
|
||||
<h3 id="73-可选拒绝采样自蒸馏">7.3 可选:拒绝采样自蒸馏</h3>
|
||||
<p>每个任务采样多条闭环轨迹,在"验算通过且最小间隙 ≥
|
||||
阈值"的样本中取最短的一条做行为克隆标签。门禁:C
|
||||
类间隙中位数不低于自蒸馏前的 80%,刹停率不升。</p>
|
||||
<h3 id="74-可选reinflow-微调">7.4 可选:ReinFlow 微调</h3>
|
||||
<p>奖励 = 到达 − 刹停次数 − 卡死 −
|
||||
用时,按左/右绕行分组平衡奖励,防止模式分布被重塑。</p>
|
||||
<hr />
|
||||
<h2 id="8-部署">8. 部署</h2>
|
||||
<h3 id="81-执行循环">8.1 执行循环</h3>
|
||||
<pre><code>执行:50 Hz,每步 20 ms,按已提交步走
|
||||
每 60 ms:
|
||||
1. 读当前 q、当前速度、已提交未执行前缀、最新目标
|
||||
2. 推理:一步头 8 条候选(WTA 为 4 条)16 步动作块
|
||||
3. 每条候选做 1–2 步胶囊距离梯度投影(仅 d < 余量时)
|
||||
2. 推理:8 个噪声 → 8 条 16 步动作块(冷启动或卡死换向时,再各推一块做短前瞻)
|
||||
3. 每条候选做 1 步胶囊距离梯度投影(每轴 ≤ 0.5°,仅 d < 余量时)
|
||||
4. 排序(§8.2)
|
||||
5. 安全层依次认证候选前 3 步 + 刹停段(§8.3),第一个通过的提交给执行器
|
||||
6. 全部不通过 → 沿上一次已认证的刹停段停下,下次继续推理
|
||||
@@ -1169,12 +1270,8 @@ mm,覆盖安全层认证的保守量);含臂×立柱、臂×台架、臂×
|
||||
Worker、按实际 dt 推进,避免 <code>requestAnimationFrame</code>(60
|
||||
Hz)与 20 ms 不整除及后台节流造成的抖动。</p>
|
||||
<h3 id="82-候选排序防左右摇摆">8.2 候选排序(防左右摇摆)</h3>
|
||||
<ul>
|
||||
<li>一步头:分数 = −Σ w_k‖候选第 k 步 − 已提交块第 k 步‖²(重叠步加权)−
|
||||
λ·价值头剩余代价。</li>
|
||||
<li>WTA 头:分数 = log p(k) − c·[k ≠ k_prev] − λ·价值头剩余代价,c 初值
|
||||
2.0。</li>
|
||||
</ul>
|
||||
<p>分数 = −Σ w_k‖候选第 k 步 − 已提交块第 k 步‖²(重叠步加权)−
|
||||
λ·价值头剩余代价。冷启动时无已提交块,只用价值头 + 短前瞻打分。</p>
|
||||
<h3 id="83-安全层唯一的硬保证">8.3 安全层(唯一的硬保证)</h3>
|
||||
<ul>
|
||||
<li><strong>距离下界认证</strong>:对一段运动 q_a →
|
||||
@@ -1227,12 +1324,12 @@ ms,否则放 Web Worker 与推理流水线并行。</li>
|
||||
个关节途经点作为绕柱方向锚点,标签取老师路径拐点(离线)。</li>
|
||||
<li><strong>价值头</strong>:预测剩余时间/代价,用于候选打分与进展判断;APG
|
||||
中用 TD 自举监督。</li>
|
||||
<li><strong>短前瞻</strong>:对每条候选再推一块,用胶囊认证 + 价值头给
|
||||
32 步后终态打分。</li>
|
||||
<li><strong>短前瞻</strong>(仅冷启动和卡死换向时):对每条候选再推一块,用胶囊认证
|
||||
+ 价值头给 32 步后终态打分。</li>
|
||||
<li><strong>卡死检测 + 强制换向</strong>:0.3 s 内价值不降或连续 2
|
||||
次刹停 → 切到另一绕行方向并锁定 1 s。</li>
|
||||
<li><strong>训练侧加强</strong>:贴柱类占 APG 采样
|
||||
40%;展开覆盖整段绕行;贴柱任务做拒绝采样自蒸馏。</li>
|
||||
40%;展开覆盖整段绕行。</li>
|
||||
</ol>
|
||||
<h3 id="86-控制周期">8.6 控制周期</h3>
|
||||
<p>伺服层(参考):Franka FCI 1 ms;UR e-Series 2 ms、CB3 8 ms;ABB EGM
|
||||
@@ -1372,9 +1469,9 @@ rt)</td>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td>R1</td>
|
||||
<td>老师左右绕行不一致,标签自相矛盾</td>
|
||||
<td>同任务 5 种子同伦类一致率 ≥ 90%</td>
|
||||
<td>固定"最短同伦类"偏好,或改用 PRM 路网 A* 作老师</td>
|
||||
<td>老师在相邻任务上左右绕行跳变,标签自相矛盾</td>
|
||||
<td>起终点扰动 ±5 mm 的邻居任务同伦类一致率 ≥ 90%</td>
|
||||
<td>对 A* 边代价加左右偏好项,强制同区域选同侧</td>
|
||||
<td>M1</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
@@ -1393,17 +1490,16 @@ rt)</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>R4</td>
|
||||
<td>浏览器推理延迟:WebGPU 每次调度 33–67 μs,8 层 Transformer 约
|
||||
150–300 次调度</td>
|
||||
<td>M4 后立即导出 ONNX,在目标浏览器测 batch=8(含前瞻 16)P99</td>
|
||||
<td>wasm-SIMD 多线程;去掉前瞻;减小模型</td>
|
||||
<td>浏览器推理延迟</td>
|
||||
<td>M4 后立即导出 ONNX,wasm-SIMD 多线程测 batch=8 P99 < 15 ms</td>
|
||||
<td>减小模型(d=128,约 1.8M 参数);同时测 WebGPU,更快则换</td>
|
||||
<td><strong>M4(最大不确定项)</strong></td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>R5</td>
|
||||
<td>一步生成头在 6 轴、位姿目标下不如 WTA,或训练不稳</td>
|
||||
<td>M5 A/B:穿柱率、到达率、摇摆率</td>
|
||||
<td>部署 WTA 头</td>
|
||||
<td>MeanFlow 头在 6 轴、位姿目标下穿柱或训练不稳</td>
|
||||
<td>near_column 穿柱率(关安全层)≤ 2%;损失不发散</td>
|
||||
<td>同骨干换 WTA K=8 头</td>
|
||||
<td>M5</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
@@ -1464,7 +1560,7 @@ a_max、插补频率与提交步数。</li>
|
||||
gen/ gen_dataset.cjs sampler.cjs run_parallel.sh
|
||||
data/ (不入库)shard_*.jsonl stats.json *.parquet norm.json
|
||||
prep/ build_dataset.py
|
||||
model/ policy_transformer.py # 一步生成头 + WTA 头
|
||||
model/ policy_transformer.py # MeanFlow 一步头
|
||||
sim/ closed_loop.py # 闭环仿真(验证、挖错、APG 共用)
|
||||
eval/ collide_torch.py # 可微胶囊距离,与 JS 对拍
|
||||
apg/ apg_finetune.py
|
||||
@@ -1506,15 +1602,15 @@ tests/policy_bench.cjs</code></pre>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>M4</td>
|
||||
<td>模型(两种头)+ 训练工程 + 闭环仿真;小数据过拟合;<strong>导出 ONNX
|
||||
<td>模型 + 训练工程 + 闭环仿真;小数据过拟合;<strong>导出 ONNX
|
||||
测浏览器延迟</strong></td>
|
||||
<td><code>train.py</code>、<code>closed_loop.py</code>、延迟报告</td>
|
||||
<td>沙箱 + 浏览器</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>M5</td>
|
||||
<td>预训练;一步头 vs WTA A/B</td>
|
||||
<td>checkpoint、A/B 报告</td>
|
||||
<td>预训练 + MeanFlow 头门禁</td>
|
||||
<td>checkpoint、门禁报告</td>
|
||||
<td>用户 GPU</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
@@ -1524,19 +1620,13 @@ tests/policy_bench.cjs</code></pre>
|
||||
<td>用户 GPU</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td>M6b</td>
|
||||
<td>(可选)ReinFlow 微调</td>
|
||||
<td>对比 M6</td>
|
||||
<td>用户 GPU</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td>M7</td>
|
||||
<td><code>ik-policy.js</code> 闭环部署 + 安全层实测 +
|
||||
<code>policy_bench</code> + 一次性验收</td>
|
||||
<td>对比表</td>
|
||||
<td>沙箱 + 浏览器</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<tr class="even">
|
||||
<td>M8</td>
|
||||
<td>移除查看器对
|
||||
<code>solveDyn</code>/<code>routeRT</code>/路网的运行时依赖(保留在
|
||||
|
||||
Reference in New Issue
Block a user