35 控制栈与 VLA 边界洞察
- 章节编号:35
- 所属层:A/S/R 交界(控制闭环;衔接 13/25/28)
- 关联 ADR:ADR-138(控制栈分层与频率)、ADR-139(VLA→执行器接口)、ADR-140(WBC/MPC 部署域)、ADR-141(VLA 与功能安全边界)
学习目标
- 前置知识:读过 21 章(具身模型支持:VLA/流匹配/多频率编排)、13 章(实时调度与时间确定性)、28 章(功能安全与安全岛)。知道「硬实时(hard real-time)= 错过截止期(deadline)= 系统失效」与「软实时(soft real-time)= 偶尔超时 只降体验」的区别即可。无需写过实时操作系统(RTOS)代码。
- 学完产出:① 能画出「VLA/策略层 → 轨迹规划 → 力控 → 关节伺服」四层频率-运行域分层图,并说清每层跑在哪个部署域(NPU vs 安全岛 vs 实时 CPU)、为什么;② 能推导「VLA 输出为什么绝不能直连关节力矩(torque)作为安全相关(SIL,Safety Integrity Level)唯一输入」这条功能安全红线,并用 ISO 13849 的 PL(Performance Level,性能等级)语言解释监督者(supervisor)的作用;③ 能算清 π0 的 50Hz 动作块(chunk)如何经实时块化(Real-Time Chunking, RTC)插值/跟踪到 200Hz–1kHz 控制周期,量化块边界平滑的时间预算;④ 能对比全身控制(Whole-Body Control, WBC)/模型预测控制(Model Predictive Control, MPC)三种部署域候选的最坏执行时间(Worst-Case Execution Time, WCET)与安全权衡,给出可落地的选型判据。
- 阅读姿势:盯住一条主线——「智能越强的层,越不能被信任来保命;保命的层必须简单到可被形式化验证」。整章都是在回答同一个工程矛盾:VLA 提供了灵巧的意图,但它是概率性的、不可穷举验证的黑箱;而 1kHz 关节回路必须在任何输入下都不产生伤人的力矩。边界的本质,是把「聪明但不可信」和「笨但可信」这两类计算,物理隔离到不同的部署域与时间域。
1. 范围与目标
厘清 VLA/策略层(软/准实时) 与 控制层(硬实时 1kHz) 的职责边界、数据接口与部署域(NPU vs 安全岛 vs CPU)。本章不重复 21 章的模型选型,而聚焦于「模型输出之后、电机之前」这段路 径:动作块怎样被安全地降频/插值/限幅,谁来监督越界输出,1kHz 回路凭什么可以宣称对人安全。
核心问题
- Figure Helix 的 S2/S1/S0 式分层如何 映射到我们的栈?每层的频率与部署域怎么定?
- WBC/MPC/伺服 跑在哪?与 π0 的动作块如何衔接?块边界怎样平滑到 1kHz?
- VLA 输出能否直连关节?功能安全红线 的推导链条是什么?监督者放在哪一层?
2. 控制栈分层(业界对标)
| 公司 | 控制分层 | 1kHz 实现 |
|---|---|---|
| Figure Helix 02 | S2(7–9Hz VLM)/ S1(200Hz)/ S0(1kHz 全身控制器) 三层 | S0 为独立全身控制器 @ 1kHz onboard |
| π0 / π0.7 | 单 VLA 动作块 @ 50Hz(π0.7 为 2026-04 版本) | 底层 PD / 轨迹跟踪(官方未公开细节) |
| 传统工业 | 无 VLA | EtherCAT + ros2_control(事实标准) |
| 我们(候选) | 双系统 + 岛:VLA 块 → ros2_control → 安全岛 | 见 13 章实时调度(分域) / 10 章 |
注意 Figure Helix 02 的三层已定型为 S2 / S1 / S0:S2 是 7–9Hz 的视觉语言模型(VLM)做语义与慢规划,S1 是 200Hz 的视觉运动 Transformer,S0 是 1kHz 的全身控制器。这与 21 章 §3.2 的口径一致。切勿把最底层误写成 S2——最快、最贴近电机、最需要可信的那一层是 S0。
2.1 频率-运行域四层分层(新增)
把上表展开成一张「频率随层级指数上升、可信度要求随频率上升、智能度随频率下降」的分层图。这是全章的骨架图:
逐层读这张图:频率从 VLA 的 1–50Hz 一路爬到伺服的 1kHz,而「一旦超时会发生什么」的严重度也同步上升——VLA 晚一个块(chunk)只是动作卡顿,而伺服晚一个周期可能意味着力矩失控。智能与可信在这张图上是反向的:最聪明的 VLA 恰恰是最不能被信任来保命的层,而最笨 的伺服 + 监督者却是唯一被赋予「关断权(kill authority)」的层。安全监督者是一条 独立于 VLA 数据路径 的旁路,它不产生动作,只在动作越界时限幅或触发急停——这是后文功能安全红线的物理载体。
2.2 场景化业务症状(新增)
抽象的分层容易被当成教条,下面用三个真实会在联调现场出现的症状,反推为什么边界必须这样切:
| 现场症状 | 直接现象 | 根因(边界被打破) | 归属层 |
|---|---|---|---|
| 抓杯子时手突然抽搐一下 | 关节在块切换瞬间出现速度尖峰 | 50Hz 动作块直接下发,块边界不连续,伺服插值出阶跃 | §5 块边界平滑缺失 |
| VLA 偶发输出一个越界关节角 | 机械臂朝奇异位形(singularity)猛冲 | VLA 输出未经监督者限幅就进了力控 | §4 / 思考题 1 红线 |
| 人走近时机器人反应「慢半拍」 | 急停触发延迟 200ms 以上 | 急停逻辑跑在 PREEMPT_RT Linux 上,被非实时任务抢占 | §4 候选 B 的 WCET 风险 |
判断:三个症状分别对应「块边界不平滑」「无独立监督」「保命逻辑跑错了域」——它们不是模型质量问题,而是 控制栈边界划错了 的必然结果。这也是本章把边界、监督、部署域三件事绑在一起讲的原因。
3. VLA → 执行器数据路径
| 阶段 | 内容 | 频率 | 运行域 |
|---|---|---|---|
| VLA 输出 | 动作块 action chunk H×dim | 1–50Hz | NPU + IREE |
| 轨迹 / 抓取规划 | MoveIt / 自定义 | 10–100Hz | CPU PREEMPT_RT |
| 阻抗 / 力控 | 六维力环 | 500Hz–1kHz | 安全岛或实时 CPU |
| 关节伺服 | PD / torque | 1kHz | Zephyr 安全岛 |
接口(ADR-139 候选):sensor_msgs/JointState + 自定义 ActionChunk ROS2 消息;与 LeRobot 动作格式做 manifest 映射(见 21 章 §3.8)。ActionChunk 携带块的时间戳、时域长度 H、维度 dim 与本体标识(cross-embodiment),由运行时(runtime)负责双缓冲(见 21 章 §3.4 模式 E、14 章)。
为什么不能少一层:很多人第一反应是「VLA 直接出 1kHz 力矩不就省了中间三层?」——省下来的每一层,恰恰是把「概率性意图」逐步收敛成「确定性、可限幅、可验证」的信号所必需。规划层负责几何可行性与避障,力控层负责柔顺与力的安全上限,伺服层负责单关节的确定性跟踪。每一层都在给上一层的输出「上保险」,而这些保险的总和,才构成对人安全的宣称。
3.1 接口的时间语义(新增)
ActionChunk 消息不只是「一批数」,它必须携带足够的时间元信息,否则控制层无法正确对齐:
| 字段 | 含义 | 控制层如何用 |
|---|---|---|
stamp | 块生成时刻(生成时的观测时间) | 计算块已「过期」多久,决定跳过多少已失效路点 |
horizon H | 块覆盖的路点数 | 判断预测缓冲深度,喂满双缓冲 |
dt | 路点间时间间隔(如 20ms) | 插值器据此把 50Hz 路点展开成 1kHz |
embodiment_id | 本体标识(cross-embodiment) | 选对关节映射与限幅包络 |
踩坑:若块只带数值不带 stamp,控制层无法区分「刚生成的新块」与「因推理延迟迟到的旧块」,会把过期轨迹当最新执行——这正是 RTC 要靠时间戳做延迟条件化的原因(见 §5)。
4. WBC/MPC 部署域对比
| 候选 | 延迟 / WCET | 灵活性 | 小结 |
|---|---|---|---|
| A. 1kHz 全进安全岛;VLA 仅出高层目标 | 最优 WCET,确定性最强 | 岛算力有限,WBC 规模受限 | 建议方案(协作 / 人形) |
| B. PREEMPT_RT Linux 跑 1kHz | 中,尾延迟(tail latency)不可完全消除 | 易开发,生态好 | 初判不宜作量产唯一路径 |
| C. VLA 直接输出 torque @1kHz | 无界(黑箱推理时延) | — | 需求红线:禁止作 SIL 唯一输入(见 28 章) |
三种候选的核心分歧是「谁为 1kHz 回路的最坏执行时间(WCET)负责」。候选 A 把保命 回路关进算力有限但时间确定性最强的安全岛;候选 B 图开发方便但 Linux 的尾延迟无法被证明有界;候选 C 直接让不可预测的神经网络推理占据 1kHz 时槽,是功能安全上不可接受的。详见思考题 3 的 WCET 对比。
4.1 1kHz 时间预算的构成(新增)
把「WCET 必须小于 1ms」拆开看,一个 1kHz 控制拍(每 1ms)里到底跑了什么、各占多少预算:
| 子任务 | 内容 | 典型耗时 | WCET 可界定? |
|---|---|---|---|
| 读传感器 | 编码器 / 力传感器经 EtherCAT 帧读入 | ~50–100μs | 是(总线周期固定) |
| 插值取参考 | 从双缓冲读路点 + 一次样条插值 | ~10–50μs | 是(常数级) |
| 力控 / PD | 阻抗律 + PD 计算目标力矩 | ~50–150μs | 是(定长运算) |
| 监督者限幅 | 限幅 + 一致性检查 + watchdog 喂狗 | ~10–30μs | 是(几个比较) |
| 写执行器 | 目标力矩经 EtherCAT 下发 | ~50–100μs | 是(总线周期固定) |
| 合计 | — | ~200–500μs | 是,留足余量 |
关键观察:1kHz 岛内所有子任务的耗时都由「总线周期 + 定长运算」构成,没有任何一项依赖输入数据的规模或分支深度,因此 WCET 可静态分析并证明 < 1ms(通常留 2× 以上余量)。反观 VLA 推理——耗时随图像内容、语言长度、去噪步数波动,单次常 > 20ms 且无硬上界,这正是它 只能待在 50Hz 软实时侧、绝不能进 1kHz 岛的量化依据(见思考题 3)。
5. RTC 与控制衔接
- π0 50Hz 动作块 + 实时块化(RTC):执行层负责 插值 / 跟踪 到 200Hz–1kHz(见 13 章实时调度);运行时做 双缓冲(见 21 章 / 14 章)。
- 训练期 RTC(Training-Time RTC):在训练阶段引入延迟条件化(delay conditioning),减少推理时的重绘(inpainting)开销;但控制层仍须 平滑动作块边界——训练期 RTC 降低的是「换块时的语义跳变」,而「换块时的运动学连续性」仍由控制层的插值器保证。
- RTC 已正式发表(arXiv 2506.07339),是 2026 年 π0 系列处理块间延迟的标准解法;它把「执行当前块的同时生成下一块」做成运行时的双缓冲 + 重绘,使系统对 +200ms 的推理抖动仍能不停顿(见 21 章 §3.5)。
5.1 块边界混合窗的工程约束(新增)
控制层的混合窗(blend window)看似简单,但有三条不可忽视的工程约束,联调时踩过才知道:
- 窗太短则不连续,窗太长则滞后:混合窗跨度决定过渡平滑度与响应滞后的权衡。取 40–60ms(见思考题 2)是折中——短于 20ms(1 个块)无法跨块过渡,长于 100ms 则新意图被旧轨迹「拖住」,人会感觉机器 人反应迟钝(§2.2 的「慢半拍」并非只来自急停,过长混合窗也会加剧)。
- 混合必须在关节速度层连续,而非仅位置:只对位置做线性混合会在速度上留下折角(C⁰ 连续但非 C¹),伺服跟踪时仍表现为力矩尖峰。工程上用样条(cubic / quintic)保证位置与速度同时连续。
- 混合窗内也必须限幅:过渡段仍是 VLA 意图的延伸,监督者限幅在混合窗内 不能关闭——否则块切换瞬间恰是越界风险最高的时刻。这条与思考题 1 的红线一致:任何时刻,监督者都在岗。
6. 结论与 ADR 候选
- ADR-138 控制栈分层:端侧基线阶段采用 VLA + ros2_control + 安全岛伺服;S1 视觉运动层(200Hz)为可选(Optional,M5 阶段);对齐 Helix S2/S1/S0 三层语义,但基线简化为「VLA + 硬实时岛」双层为主。
- ADR-139 VLA→执行器接口:定义
ActionChunkROS2 消息类型;与 25 章 ros2_control 硬件接口(hardware interface) 对接;块携带时间戳供控制层做时间对齐插值。 - ADR-140 WBC/MPC 部署域:1kHz 回路 默认进 Zephyr 安全岛(候选 A);轨迹规划走 PREEMPT_RT CPU;WBC 若规模超出岛算力,拆分为「岛内低维保命回路 + CPU 高维优化回路」双层(见思考题 3)。
- ADR-141 VLA / 安规边界:VLA 定级为 QM(Quality Managed,质量管理级,非安全相关);急停 / watchdog 独立于 VLA 跑在安全岛;监督者(supervisor)监控 VLA 输出范围并限幅(见 28 章 ADR-094)。安全等级采用 ISO 13849 的 PL d(Performance Level d) 或 IEC 62061 的 SIL 2 口径(机器人领域,非车规 ASIL);机器人本体安全遵循 ISO 10218 / ISO 13482。
深入思考
下面三题每题先给题干,再用
<details>折叠一份图文并茂的参考答案。建议先合上答案自己想 3 分钟,再展开对照。
思考题 1:为何 VLA 输出绝不能直连关节力矩作 SIL 唯一输入
有人提议把 VLA 训练成直接输出 1kHz 的关节力矩(torque),省掉规划、力控、伺服三层中间件,「端到端最优」。请从 功能安全(functional safety) 角度推导:为什么这在协作 / 人形场景是一条不可逾越的红线?监督者应放在哪一层、承担什么职责?用 ISO 13849 的 PL 语言说清楚。
展开参考答案(含功能安全红线推导图 + 算一遍)
结论:VLA 是概率性的、不可穷举验证的黑箱,其错误率无法被证明低于安全所需的量级;而功能安全要求保命回路的失 效概率可被定量论证并达到 PL d / SIL 2,因此 VLA 不能作为安全相关功能的唯一输入,必须由一个简单到可被验证的独立监督者兜底,见本篇 §4 候选 C 与 §2.1 分层图。
推导链条(为什么是红线):
- 可验证性缺口:PL d(ISO 13849)大致对应「危险失效平均频率」在每小时 10⁻⁷ 到 10⁻⁶ 量级。要宣称一个功能达到 PL d,必须能对其失效模式做定量论证(FMEA、诊断覆盖率 DC、共因失效 CCF)。VLA 的输入空间(图像 × 语言 × 状态)不可穷举,其输出错误率无法给出可信上界——你无法证明它每小时危险失效少于百万分之一。
- 黑箱不可诊断:安全功能需要「诊断覆盖率」——系统要能自检发现自己出错。VLA 出一个看似合理却危险的力矩(如朝人猛推),从数值上与正常输出无法区分,诊断覆盖率趋近于零。
- 单点即整体:若 VLA 是 torque 的唯一来源,它的任何失效都直接传导到电机,没有任何独立环节能拦截——这违反功能安全的「独立性 / 冗余」原则。
监督者放哪、做什么:监督者(supervisor)必须放在 独立于 VLA 的部署域(安全岛),且逻辑简单到可被形式化验证或穷举测试。它不理解任务语义,只做三件确定性的事:① 关节角 / 速度 / 力矩 限幅(clamp 到经过安全论证的物理包络内);② 一致性检查(如速度与位置微分是否自洽);③ 越界即 急停(触发独立 watchdog)。这样 VLA 保持 QM 级(不做安全宣称),而「VLA + 监督者」的组合在系统层面达到 PL d。
算一遍(为什么限幅能救命):设某关节安全力矩包络为 40 N·m(经 ISO/TS 15066 生物力学限值论证),VLA 因分布外输入偶发输出 400 N·m。若直连——电机全力输出,伤人。若经监督者——监督者在 1kHz 回路里 1ms 内把 400 clamp 到 40,并因「请求值 400 > 上限 40」触发急停:危险力矩被限制在人体可承受量级,且系统进入安全状态。监督者代码仅是几个比较与钳位,可穷举测试所有边界,诊断覆盖率高——这正是它能做安全宣称而 VLA 不能的根本区别。
思考题 2:π0 50Hz 动作块如何经 RTC 插值/跟踪到 200Hz–1kHz
π0 以 50Hz 输出动作块(chunk),而关节伺服要 1kHz。请说清 一个 50Hz 块如何被展开成 1kHz 参考轨迹,块与块的边界为什么会产生运动学不连续,RTC 与控制层插值器各自解决什么问题。算一遍块边界平滑的时间预算与控制周期的关系。
展开参考答案(含块-控制周期时序图 + 算一遍)
结论:50Hz 的块给出的是每 20ms 一批未来动作的「路点(waypoint)」,控制层用插值器在两个路点之间生成 1kHz 的连续参考;块间不连续来自「新块的首点 ≠ 旧块正在执行的当前点」,RTC 在推理侧用重绘让新块「续着旧块画」,控制层插值器在执行侧保证运动学(位置/速度)连续,二者一个管语义、一个管平滑,见本篇 §5 与 §2.1 分层图。
为什么块边界会跳变:块 N 是在时刻 t 基于当时观测生成 的一段未来轨迹;等到块 N+1 生成时,机器人已经沿块 N 走了一段,而块 N+1 是基于新观测重新预测的——新块的起点未必等于机器人此刻的实际状态,直接切换就会在关节速度上出现阶跃(§2.2 的「抓杯子抽搐」症状)。
RTC 与插值器分工:
- RTC(推理侧,arXiv 2506.07339):通过重绘(inpainting)让块 N+1 的前若干步「续着」块 N 的尾段生成,即在生成时就约束新块的开头与旧块重叠段对齐——解决 语义级的块间跳变,并让系统对推理延迟(+200ms)鲁棒(执行块 N 时后台已在算块 N+1)。
- 控制层插值器(执行侧):即使有 RTC,50Hz 的路点之间仍是离散的,伺服要的是 1kHz 连续量。插值器在相邻路点间用样条 / 线性插值生成中间点,并在块边界用一个 混合窗(blend window) 做位置-速度连续过渡——解决 运动学级的连续性。
算一遍(时间预算):
- 控制周期:1kHz → 每 1ms 一拍;VLA 块:50Hz → 每 20ms 一个块。故 1 个块 = 20 个控制拍,插值器要在每两个 50Hz 路点(若块内路点也是 50Hz)之间填出 20 个 1ms 参考点。
- 设块的时域长度 H=50(π0 常用),覆盖 50 × 20ms = 1s 的未来动作;但实际只执行到下一个块到来(约 20ms,即 1 个路点)就换块,其余是「预测缓冲」。
- 块边界混合窗:取 重叠段 ≈ 2–3 个路点(40–60ms) 做过渡,则混合窗跨 40–60 个控制拍;每拍插值器只需常数级计算(读两端路点 + 一次插值),WCET 远小于 1ms 预算——这正是插值器能安全地跑在 1kHz 岛内的原因:它计算量恒定、可界定,而 VLA 推理时延不可界定,只能留在 50Hz 软实 时侧。
- 结论:1kHz 硬回路里只跑「读缓冲 + 插值 + 限幅」这类 WCET 可界定的常数级操作;所有不可界定时延(VLA、规划、RTC 重绘)都被隔离在 50Hz 及以下的软实时侧,靠双缓冲提前算好喂进来。
思考题 3:WBC/MPC 部署域三候选的 WCET 与安全权衡
全身控制(WBC)或模型预测控制(MPC)是计算量较大的 1kHz 级优化。§4 给了三个部署候选:A 全进安全岛、B 跑 PREEMPT_RT Linux、C 让 VLA 直出。请从 WCET(最坏执行时间)可界定性 与 功能安全 两个维度对比三者,说清为什么建议 A,以及当 WBC 规模超出岛算力时怎么拆。
展开参考答案(含三候选 WCET-安全对比图 + 对比表)
结论:1kHz 保命回路的唯一硬指标是「WCET 必须可界定且小于 1ms」,只有安全岛(候选 A)能同时满足 WCET 可界定与功能安全独立性;PREEMPT_RT(B)尾延迟不可完全消除、不宜作量产唯一路径;VLA 直出(C)WCET 无界、是红线;规模超岛时拆成「岛内低维保命 + CPU 高维优化」双层,见本篇 §4 与思考题 1。
三候选对比:
| 维度 | A. 全进安全岛 | B. PREEMPT_RT Linux | C. VLA 直出 1kHz |
|---|---|---|---|
| WCET 可界定性 | 高:RTOS(如 Zephyr)无分页 / 无不可控抢占,WCET 可静态分析 | 中:抢占延迟有上界但尾延迟受驱动 / 中断影响,难证严格有界 | 无:神经网络推理时延随输入变化,无硬上界 |
| 1kHz 达标 | 确定性达标(每拍 < 1ms 可论证) | 绝大多数周期达标,极端情况偶发超时 | 常态就超(单次推理常 > 20ms) |
| 功能安全独立性 | 强:独立于 VLA 域,可承担安全功能 | 弱:与非安全任务共享内核,难做独立性论证 | 无:VLA 即单点 |
| 可达安全等级 | PL d / SIL 2 可论证 | 一般仅 QM,除非严格隔离 | QM,不可作安全唯一输入 |
| 开发 / 算力 | 开发门槛高,岛算力有限 | 生态好、易开发、算力足 | 无中间件、看似省事 |
为什么建议 A:1kHz 保命回路的价值不在「平均快」,而在「最坏也不会超时、且独立于智能层」。安全岛用 RTOS + 静态内存 + 可分析的调度,使 WCET 可被静态论证小于 1ms,并天然与 VLA 数据路径隔离,满足功能安全的独立性要求。B 的问题是 Linux 内核的尾延迟(tail latency)——即使 99.99% 周期达标,那 0.01% 的超时对硬实时就是失效;C 已在思考题 1 定性为红线。
规模超岛怎么拆(算一遍思路):高维 WBC / MPC(如 30+ 自由度全身优化)算力可能超出安全岛。此时拆成两层:
- 岛内低维保命回路 @ 1kHz:只跑「关节级 PD + 限幅 + 一致性检查」,WCET 极小、可论证,承担安全功能(PL d)。
- CPU 高维 MPC @ 低频(如 100–500Hz):在 PREEMPT_RT 上跑完整 WBC / MPC,输出的是 参考量而非直接力矩,再喂给岛内回路;即使 CPU 侧偶发超时或崩溃,岛内回路仍能用上一帧参考 安全维持。
- 净效果:把「聪明但不可信」的高维优化留在 CPU 软实时侧,把「笨但可信」的低维保命留在岛内硬实时侧——与思考题 1 的红线一脉相承:保命的层必须简单到可被验证,聪明的层永远要被兜底。
附:信息来源
区分公开 / 内部;参考时间 2026-07。roadmap 类以官方为准。
- Figure Helix 02 三系统(S2 7–9Hz VLM / S1 200Hz / S0 1kHz 全身控制器):figure.ai/news/helix-02。[公开]
- π0 / π0.7(π0.7 为 2026-04 版本;50Hz 块 + 流匹配):Physical Intelligence, pi.website;arXiv:2410.24164。[公开]
- Real-Time Chunking(RTC)(异步块 + 重绘,+200ms 延迟鲁棒):arXiv:2506.07339;pi.website。[公开]
- Training-Time RTC(训练期延迟条件化):arXiv:2512.05964。[公开]
- ros2_control / EtherCAT(工业控制事实标准;硬件接口):control.ros.org。[公开]
- 功能安全标准:机器人本体安全 ISO 10218(工业)/ ISO 13482(个人护理);安全功能等级 ISO 13849(PL d)/ IEC 62061(SIL 2);人机协作生物力学限值 ISO/TS 15066。[公开]
- PREEMPT_RT / Zephyr 安全岛 / 实时调度:见 13 章实时调度、28 章功能安全与安全岛。[内部]
- 频率 / WCET / 时间预算粗算:基于 π0 / RTC / Helix 公开参数的工程估算。[估计]