审查重点:§0 定位、§2 差异与优化、§5 输出表示、§7 后训练(APG)、§8
@@ -606,7 +609,8 @@ APG(可微胶囊碰撞),挖错循环保留但不再需要老师
| 预训练 + APG 微调 |
用户的 GPU 机器 |
-沙箱无 GPU、无 PyTorch。建议 ≥ 8 GB 显存(RTX 3060 级别) |
+沙箱无 GPU、无 PyTorch。已定:RTX 3090 24
+GB(显存对 3–4 M 参数模型绰绰有余,可用 batch 1024–2048) |
| 部署推理 |
@@ -830,7 +834,8 @@ K×16 个可学习动作 token ──▶ 4 层 Transformer decoder(非自回
│
├─ 动作头:每 token 输出 6 维 Δq
├─ 模式分类头:K=4
- └─ 剩余时间头:1
+ ├─ 价值头(剩余时间/代价):1 ← v2.1,§8.5
+ └─ 子目标头:2 个关节空间途经点 + 是否需要(仅冷启动用)← v2.1,§8.5
| batch |
-512 |
+1024(3090 24 GB) |
| 精度 |
@@ -895,7 +900,9 @@ epoch),验证集闭环成功率不再上升即停
| 预计耗时 |
-RTX 3060 约 3–5 小时(估算,跑完首轮校正) |
+RTX 3090 约 1.5–3 小时(估算;DRP 4.67 M 参数在 4090 上预训练 100
+万步用 3 天,我们的样本少、无点云编码,步数约其
+1/5,跑完首轮再校正) |
@@ -905,8 +912,9 @@ epoch),验证集闭环成功率不再上升即停
批量版(可微,§7 要用),先与 JS
collideFree 对拍 10 万个位形,判定 0 误差。
验证用闭环仿真而不是单步误差:从 1000 个验证任务的
-q0 出发,每 20 ms 推理一次、执行前 3 步、直到到达或 6 s
-超时,统计到达率、碰撞步数(安全层关闭时)、行程比。
+q0 出发,每 20 ms 推理一次、提交前 3 步,直到到达或超时(超时 =
+老师同任务路径动画时长 × 2,最少 3
+s),统计到达率、碰撞步数(安全层关闭时)、行程比。
7. 第四步:后训练(无老师为主)
@@ -972,7 +980,9 @@ Hz)
2. 推理一次:得到 K=4 条 16 步动作块 + 模式概率 ≈ 2–5 ms(估算)
3. 按"模式概率 − 切换代价"排序(§8.2)
4. 安全层依次检查候选的前 n=3 步(60 ms 的运动)+ 刹停段(§8.3)
- 第一个通过的 → 送插补器执行这 3 步;记下 k_prev
+ 第一个通过的 → 把这 3 步"提交"给插补器;记下 k_prev
+ (实际上 20 ms 后只走完第 1 步,第 2、3 步是已验证的"缓冲":
+ 下一周期的新结果会覆盖它们;若下一周期推理超时或全部不安全,就沿缓冲 + 刹停段安全停下)
5. 全部不通过 → 进入刹停:按已验证的刹停轨迹减速停下,保持;下一周期继续推理
6. 到达判据:TCP 误差 < 1 mm(pose 另需 < 0.5°)且速度≈0 → 结束;
接近目标(< 5 mm)时可选做 1–3 次局部牛顿精修(solveTo 单步,不是全量 IK)
@@ -1032,6 +1042,188 @@ Worker 与推理流水线并行)。
collide.json
指纹写进模型;不一致时前端拒绝运行并提示重训(不再回落旧规划器)。
+8.5
+为什么会"超时",以及无老师怎样做到 30/30
+超时不是算得慢。
+模型每周期只要几毫秒,比原规划器快得多;"超时"指的是机械臂在规定时间内没走到目标,是决策错了,不是计算慢了。无老师闭环下有三种典型情形:
+
+
+
+
+
+
+| 局部极小 / 活锁 |
+目标在立柱背后,策略每周期都想"直着过去",安全层每周期都刹停,原地抖动 |
+每周期都做同样的错误决定,算得再快也只是更快地重复 |
+
+
+| 模式摇摆 |
+这一周期选左绕、下一周期选右绕,来回切换,进度为零 |
+同上 |
+
+
+| 绕远 |
+选了一条可行但很长的路,在时限内走不完 |
+方向对了但路线差 |
+
+
+
+原规划器不会这样,是因为它做全局搜索(PRM +
+A*)。去掉老师后,全局"想清楚往哪绕"这件事必须由模型自己承担。v2.1
+用五个手段(全部在运行时不需要老师)把 near_column 要求提到
+30/30:
+
+- 全局子目标头(分层):模型在冷启动(新目标到达的第一个周期)额外输出
+1–2
+个途经点(关节空间),作为"绕柱方向"的锚点;之后每周期的动作块以"当前子目标"为条件,到达子目标后切到下一个。训练标签直接取自老师路径的拐点(离线已有)。这相当于把老师的全局搜索结果蒸馏成一次前向。
+- 价值头(剩余代价估计):模型额外预测"从这个状态到目标还要多少时间"。APG
+展开时有真实值可监督,不需要老师。部署时用它给 K
+个模式打分,并作为"有没有进展"的判据。
+- 短前瞻选模式:每周期对 K=4
+个模式各自再往前推一块(共 2 次批量前向 ≈ 2 × 2–5 ms),用 胶囊碰撞 +
+价值头 给 32
+步后的终态打分,选最好的。比只看第一块的概率更能避开"走两步就撞墙"的分支。
+- 卡死检测 + 强制换向:0.3 s 内价值头没有下降、或连续
+2 个周期刹停 →
+判定卡死,强制切到另一个绕行方向(另一个子目标/模式)并锁定 1
+s(防止又切回来)。规则很简单、确定性、可测试。
+- 训练侧针对性加强:贴柱类任务在 APG 采样里占
+40%;APG 展开长度覆盖整段绕行(约 3 s = 150
+个周期,分段截断反传);对贴柱任务做拒绝采样自蒸馏(§7.3),模型自己成功的路线成为新标签。
+
+验收相应改为(§9.2):near pos / near rt 都必须
+30/30,且到达用时 ≤ 老师路径动画时长 × 1.3。
+8.6 控制周期:业界案例与评估
+工业臂 / 研究臂的外部实时接口(伺服层)
+
+
+
+
+
+
+| Franka FCI(libfranka) |
+1 ms(1 kHz) |
+关节位置/速度/力矩、笛卡尔位姿;每周期往返 + 计算必须 < 1 ms |
+
+
+| Universal Robots e-Series RTDE |
+2 ms(500 Hz) |
+servoj 默认 t = 0.002 |
+
+
+| Universal Robots CB3 RTDE |
+8 ms(125 Hz) |
+servoj 默认 t = 0.008 |
+
+
+| ABB EGM |
+4 ms(250 Hz),可设为 4 ms 的整数倍 |
+控制滞后 10–20 ms(随机型) |
+
+
+| KUKA RSI |
+4 ms(Fast)或 12
+ms(Normal) |
+ |
+
+
+| FANUC DPM |
+约 8 ms |
+R-30iB 无 1–2 ms 通道 |
+
+
+| MoveIt Servo(ROS 2) |
+默认 10 ms(新版);旧版示例 34 ms |
+常设为 ros2_control 更新频率的倒数(如 50 Hz → 20 ms) |
+
+
+| 舵机(RC PWM) |
+20 ms(50 Hz) 帧周期 |
+数字舵机可到更高帧率 |
+
+
+
+学习型策略的推理周期(策略层)
+
+
+
+
+
+
+| MπNets |
+9 Hz |
+单步 |
+线性插值,1 kHz PD 跟踪 |
+
+
+| Diffusion Policy |
+10 Hz |
+16 步 |
+线性插值到 125 Hz 交给 UR5 |
+
+
+| ELMP |
+30 Hz(真机) |
+单步 Δq |
+每步 3 个航点线性插值给 Franka 位置控制器 |
+
+
+| π0 |
+50 Hz 动作,约每 0.5 s 推理一次 |
+50 步(1 s) |
+执行 25 步后重算 |
+
+
+| ACT |
+50 Hz |
+100 步 |
+时间集成 |
+
+
+| DRP / IMPACT |
+可跑 300 Hz(4090) |
+10 步 |
+闭环 |
+
+
+
+结论:业界一律是"两层"结构——策略层 10–50 Hz(少数到
+300 Hz)给出关节目标,伺服/插补层 125 Hz–1 kHz
+负责平滑跟踪。没有人让神经网络直接跑 1 kHz 伺服环。
+对本方案的评估:
+
+- 策略层 50 Hz(20 ms)合适:与 π0、ACT 同档,高于
+ELMP 的 30 Hz 和 MπNets 的 9 Hz;我们模型小(3–4 M)、无点云,单次前向 +
+安全检查预计 < 10 ms,留有一倍余量。浏览器里
+
requestAnimationFrame 是 60 Hz,50 Hz 也能稳定跑。
+- "提交 3 步(60
+ms)"合适,且应按刹停距离定:它的作用是给推理抖动和通信滞后留缓冲。ABB
+EGM 自身就有 10–20 ms 滞后;60 ms 足以覆盖一次推理超时 +
+一次滞后。真机上应改成规则:提交步数 n ≥ ⌈(通信滞后 + 1 次推理最坏耗时)
+/ 20 ms⌉ + 1,且刹停段另行验证。
+- 伺服层不归本方案管,但要匹配:策略输出 50 Hz
+关节目标,由插补器升采样到电机控制器的频率(舵机 50 Hz
+直接用;总线舵机/步进/FOC 驱动通常 ≥ 250 Hz–1
+kHz,做三次样条插值)。
+- 做成可配置:
dt(默认 20 ms)、提交步数
+n(默认 3)、动作块长度 S(默认 16 = 320 ms)。训练数据按 dt = 20 ms
+生成;若真机必须改到 10 ms(100 Hz),只需把动作块重采样,或用 dt = 10
+ms 重造数据(约 5 小时)。
+- 你的电机/驱动型号确定后,按第 2、3 条把 n 和插补频率定下来。
+
9. 第六步:评估与验收
9.1 测试集合
@@ -1082,46 +1274,51 @@ rt)
rt_drag_bench 0 |
-| 到达率(6 s 内) |
-route ≥ 60/60,near pos ≥ 29/30,near rt ≥ 29/30,held-out ≥
-97% |
+到达率 |
+route 60/60,near pos 30/30,near
+rt 30/30,held-out ≥ 98% |
60/60、30/30、30/30 |
+| 到达用时 |
+≤ 老师同任务路径动画时长 × 1.3 |
+— |
+
+
| 关节行程 |
≤ 现有规划器 × 1.10 |
route 平均 467° |
-
+
| 冷启动(新目标→第一个动作) |
< 10 ms |
首次全量 IK 最差约 2 s |
-
+
| 每周期耗时(推理+安全层)P99 |
< 15 ms |
拖拽重规划 P99 约 321 ms |
-
+
| 刹停发生率 |
< 2% 的周期 |
— |
-
+
| 模式摇摆(≥3 次切换) |
< 1% 的任务 |
— |
-
+
| 策略单独(关安全层)碰撞率 |
< 3%(参考:ELMP-APG 8.9%,DRP 10.16%) |
— |
-说明:允许 near_column 少 1
-例,因为无老师时最难的贴柱案例可能要靠多次刹停-重算才能到达,6 s
-超时内可能失败;这一条请审查时确认能否接受。
+说明:v2 曾提议 near_column 允许
+29/30,用户否决(2026-10-17)。为保证
+30/30,部署侧加入子目标头、价值头、短前瞻和卡死换向(§8.5)。
10. 风险与维护
@@ -1237,17 +1434,28 @@ MπFormer)