VLA 落地先签动作合同:从视觉语言输入到可执行控制指令

VLA 落地先签动作合同:从视觉语言输入到可执行控制指令

摘要

VLA 能输出动作,不代表它已经能接到真实机器人。输入必须带时间和版本,动作必须声明坐标、单位、范围、频率、归一化与有效期,执行层还要核对安全责任。本文比较五类动作表示和四类动作生成路线,给出跨本体适配与项目启动清单。

关键词

VLA、Action Contract、Cross Embodiment、Action Chunk、Robot Interface

目录

  • 一、先定义 VLA 的系统边界
  • 二、输入不是四个张量,而是四组带时序语义的证据
  • 三、动作合同表:任何输出头最终都要落到这些字段
  • 四、五种动作表示各自改变了什么
  • 五、动作表示、生成头和控制频率必须分三层记录
  • 六、跨本体适配:哪些字段应冻结,哪些必须转换,哪些通常要再训练
  • 七、三种跨模块接口样例
  • 八、评价 VLA:离线动作误差只能回答很小一部分问题
  • 九、VLA 项目启动检查清单
  • 结论

一个 VLA 在离线验证里能根据图像和指令输出动作,并不意味着它已经可以接到真实机器人。以下数值是用于说明问题的合成场景,不是公开事故或作者实测:相机帧比关节状态晚了 120 毫秒;模型输出的是工具坐标系中的增量,执行器却按基座坐标系解释;训练动作以 20 Hz 记录,部署控制器以 100 Hz 重复同一值;"张开夹爪"的归一化方向在新机器人上恰好相反。真正的风险通常不在模型参数里,而在这些接口缝隙里。

VLA落地首先不是选"回归、Token、Diffusion还是 Flow",而是签一份动作接口合同。合同要规定 Observation、Language Goal、Proprioception和 History如何对齐,动作的语义、坐标、单位、范围与有效期是什么,策略多快刷新,低层控制器承担什么,以及超限或过期时谁有权拒绝执行。没有这份合同,模型输出只能算张量,不能算可执行动作。

一、先定义 VLA 的系统边界

本文把 VLA限定为条件策略:

a_{t:t+H-1} \\sim \\pi_\\theta(\\cdot\\mid O_{\\le t},L,Q_{\\le t},A_{\

其中,(O)是视觉等外部观测,(L)是语言目标,(Q)是本体状态,(A)是已执行动作历史,输出可以是单步动作或长度为 (H)的动作块。这个定义只说明模型根据多模态条件生成动作,不说明它已经包含任务规划、状态估计、碰撞检查、实时伺服或硬件安全。

RT-1把视觉历史与语言指令映射为离散化动作变量;OpenVLA以视觉---语言骨架自回归生成离散动作 Token;Octo使用可适配的输入 Tokenizer和 Diffusion动作头;π0在 VLM旁加入 Action Expert,以条件 Flow Matching生成连续动作块;FAST则是动作序列的离散 Tokenizer,不是独立控制器。G1-S01G1-S03G1-S04G1-S05G1-S06 这些路线只有接入明确的动作合同,才可被放在同一机器人系统中比较。

二、输入不是四个张量,而是四组带时序语义的证据

Observation:记录"看到什么"以及"什么时候看到"

视觉输入至少应携带:传感器标识、采集时间戳、时钟域、帧序号、曝光或滚动快门信息、内外参版本、坐标系名称、图像有效区、是否丢帧。多相机不能只按数组顺序约定"第一个是头部相机",应给稳定的 sensor_idframe_id

策略收到的是某一时刻的观测证据,不是当前世界本身。若图像在网络、编码和队列中滞留,动作生成时它可能已经过期。合同应给 observation_age_ms、允许的最大时差和同步策略:严格同步、近似同步,还是由状态估计器外推到统一参考时刻。

Language Goal:语言不是无版本字符串

语言目标需要 goal_id、创建时间、版本、优先级、约束、终止条件和取消语义。用户说"把杯子放到盘子旁边",后续又补充"不要碰玻璃瓶",系统必须知道这是修订同一目标还是新任务。对指代表达,还要记录目标对象的 Grounding结果和有效期,不能让旧的"这个"在场景变化后继续绑定原对象。

Proprioception:顺序、单位和坐标必须显式化

本体状态不应只是一维浮点数组。至少要定义关节名与顺序、位置/速度/力矩单位、夹爪语义、末端位姿、控制模式、状态时间戳和质量标记。ROS REP 103之类的规范能提供 SI单位和右手坐标约定,但具体系统仍要声明基座、工具中心点、相机和世界坐标变换。G1-S10G1-S11

History:记录实际发生的事,而不是模型想做的事

动作历史应区分 commandedacceptedclampedexecutedaborted。如果安全层把模型输出从 0.20 m位移裁剪到 0.03 m,而下一轮策略仍把原始命令当作已执行历史,内部状态会快速偏离真实机器人。历史还应包含执行结果、接触事件、失败码、目标版本变化和人工接管。

三、动作合同表:任何输出头最终都要落到这些字段

合同字段 必须明确的内容 典型失败
action_type Joint target/delta、EE pose/delta、velocity、torque、token、skill call 同一数组被不同模块解释成位置或速度
reference_frame baseworldtoolcamera等,及变换版本 Delta Pose方向反转或旋转轴错位
units m、rad、m/s、rad/s、N、Nm或无量纲归一化 角度与弧度、毫米与米混用
dimension_schema 维度名称、顺序、可选掩码、机器人型号 关节顺序错位,夹爪维度被当手腕轴
absolute_or_delta 绝对目标、相对当前值、相对 Chunk首状态 反复累积 Delta导致漂移
horizondt Chunk长度、每个动作的时间间隔、起始时刻 模型输出 1秒轨迹,执行端以错误频率播放
valid_from/to 动作有效窗口和过期策略 延迟动作在新状态下继续执行
rangenormalization 物理边界、训练归一化统计、反归一化版本 新本体按旧机器人分位数解码
control_mode 位置、速度、力矩、阻抗、技能执行 上层动作与低层控制模式不匹配
execution_policy 全 Chunk开环、滚动重规划、重叠融合、首步执行 延迟和抖动导致动作块断裂
safety_envelope 速度、加速度、力、区域、碰撞、权限限制 模型输出直接越过安全层
ack/status 接受、裁剪、执行、完成、失败与原因 下一轮策略无法知道真实结果

这张表不是某个模型的训练配置,而是 VLA、动作适配器、运动控制器与安全层之间的共享协议。

合同还必须可版本化。模型权重、动作 Tokenizer、归一化统计、机器人 Schema、坐标树和安全配置应分别有稳定 ID,并在每条命令中记录兼容组合。升级模型但继续使用旧的反归一化统计,或更换夹爪却沿用旧动作维度,都可能生成数值合法、物理语义错误的命令。部署端应采用显式兼容矩阵:字段缺失、版本未知、时间戳过期或坐标变换不可用时直接拒绝,而不是猜测默认值。

责任链也要独立记录。VLA负责提出候选动作,Adapter负责解释和变换,安全层负责硬限制,控制器负责跟踪,执行器负责产生物理效果;每一层都应返回自己的接受、裁剪、失败和完成状态。只有将原始输出与最终执行结果同时写入历史,下一轮策略才不会把被拒绝的命令误认为已经完成。 接口测试还应覆盖降级路径:观测过期时停止、变换缺失时拒绝、模型超时时保持安全姿态,而不是继续消费旧动作。

四、五种动作表示各自改变了什么

1. 关节动作

输出每个关节的位置、增量、速度或力矩。优点是接口直接、能表达本体细节;缺点是强依赖自由度、关节顺序、限位和控制模式。跨机器人迁移时,七轴机械臂的关节增量不能直接复制到六轴机械臂。

2. 末端 Delta Pose

输出工具中心点的平移、旋转和夹爪变化,通常比关节空间更接近任务语义。但必须说明 Delta相对于哪个坐标系、旋转使用欧拉角、轴角还是四元数、增量是在当前姿态左乘还是右乘,以及逆运动学失败时如何处理。OpenVLA官方模型说明给出的典型输出是归一化的 7-DoF末端增量,并要求按机器人/数据集统计反归一化,这本身就是动作合同的一部分。G1-S03

3. 离散动作 Token

RT-1把各动作维度量化为离散 Bin,自回归策略预测动作 Token;OpenVLA也采用动作 Token输出。G1-S01G1-S03 Token化便于复用语言模型训练接口,但 Token ID没有天然物理意义。部署必须携带 Tokenizer版本、分箱范围、维度顺序、越界规则和反量化方法。离散化误差、序列长度和自回归延迟都要独立测量。

4. 连续 Action Chunk

ACT、Diffusion Policy、Octo和 π0等路线一次生成多步连续动作。G1-S04G1-S05G1-S08G1-S09 Chunk能平滑动作并摊薄大模型推理延迟,但引入新合同:Chunk覆盖多长时间,执行端每次使用全部、首段还是滚动窗口;新观测到达时是否截断旧 Chunk;重叠 Chunk如何融合;模型延迟超过剩余缓冲时怎样降级。

5. 技能调用

模型输出 pick(object_id)navigate(target)之类高层调用,把精细轨迹交给技能控制器。它降低动作带宽并增强可审计性,但需要严格定义技能版本、前置条件、参数模式、超时、可取消性、成功判据和失败码。技能调用不是"更高级的动作 Token",而是跨进程 API合同。

五、动作表示、生成头和控制频率必须分三层记录

动作表示回答"输出变量是什么";动作生成头回答"如何建模这个分布";频率回答"何时生成和何时执行"。三者不能互相代替。

  • 直接回归头输出连续动作参数,通常优化 MSE或相关损失。实现简单,但在多种动作都可成功时容易产生平均化。
  • 自回归头逐 Token预测离散动作。它可以使用普通语言模型式交叉熵,但推理时间随 Token数增长。
  • Diffusion动作头从噪声迭代生成连续动作块,适合多峰动作分布;Octo与 Diffusion Policy提供了代表性实例。G1-S04G1-S08
  • Flow动作头回归连续向量场并通过数值积分得到动作块;π0属于这一类。G1-S05

FAST说明了"动作 Tokenizer"和"动作头"为什么要分开:它先对归一化动作 Chunk做 DCT、量化和 BPE,再让自回归模型预测压缩后的 Token。G1-S06 换 Tokenizer会改变序列长度与重建误差,但不自动改变视觉编码器或低层控制器。

频率至少有三种:传感器更新频率、VLA策略刷新频率、低层伺服频率。π0论文中的动作 Chunk长度和最高控制频率是特定系统配置,不是所有 Flow VLA的固定属性。G1-S05 以一组示意时序为例,大模型可以每 200 毫秒生成一次 1 秒动作块,执行器以 50 Hz 消费动作,伺服回路则可能在 1 kHz 运行;这些数字不代表某个公开模型或作者项目的实测配置。任何"模型支持 50 Hz"的说法都必须说明指的是动作样本率、策略调用率还是电机控制率。

六、跨本体适配:哪些字段应冻结,哪些必须转换,哪些通常要再训练

类别 字段 处理原则
语义合同 任务 ID、成功条件、对象角色、约束优先级 尽量冻结语义,防止同一指令在不同机器人上含义漂移
时间合同 时钟域、时间戳含义、动作 dt、有效期、历史状态机 冻结字段语义,数值可按平台配置
几何合同 坐标系名称、外参、TCP定义、旋转表示 必须显式转换并版本化,不能隐式猜测
动作维度 关节顺序、自由度、夹爪、底盘、掩码 建立机器人专用 Schema与 Adapter
数值合同 单位、范围、分位数/均值方差、裁剪 按数据集和本体重新计算或严格复用匹配统计
动力学合同 负载、速度/加速度、控制模式、延迟 需要控制器适配,通常还需本体数据微调
感知合同 相机数量、视角、分辨率、内外参、同步 通过 Tokenizer/Adapter兼容;重大变化通常需微调
安全合同 工作区、力限、碰撞、权限、急停 平台本地冻结为强约束,不交给模型自行学习

Open X-Embodiment通过标准化数据格式聚合多种机器人经验,Octo强调可通过适配器和微调接入新的传感器与动作空间,OpenVLA与 openpi都要求正确处理每个机器人/数据集的动作统计。G1-S03G1-S04G1-S07G1-S12 "跨本体"不是把所有动作硬塞进同一数组,而是把公共语义与平台特定几何、数值和动力学边界分离。

七、三种跨模块接口样例

以下均为合成接口示例,不代表任何公开模型的真实输出格式或真实数值

样例 A:VLA → 末端轨迹适配器

yaml 复制代码
schema: synthetic.vla.ee_delta_chunk.v1
command_id: cmd-1842
generated_at_ns: 1785230012345000000
valid_until_ns: 1785230012545000000
reference_frame: base_link
tool_frame: tool0
action_type: ee_delta_pose
rotation_repr: axis_angle
units: {translation: m, rotation: rad, gripper: normalized}
dt_s: 0.02
horizon: 10
values: [[0.002, -0.001, 0.000, 0.0, 0.0, 0.01, -0.02], ...]
execution_policy: receding_horizon_first_4
safety_profile: manipulation_slow_v3

适配器必须验证时间戳、坐标变换、数组长度、范围和安全配置,再转成控制器可接受的轨迹。模型进程不直接发送电机命令。

样例 B:自回归 VLA → 动作 Detokenizer

json 复制代码
{
  "schema": "synthetic.action_tokens.v1",
  "tokenizer_id": "robot_family_x-fastlike-2026-07",
  "norm_stats_id": "dataset_r17_quantile_v2",
  "robot_schema": "arm7_gripper1",
  "chunk_start_state_id": "state-9017",
  "tokens": [114, 87, 902, 41, 6, 6, 275],
  "max_decode_age_ms": 80
}

Detokenizer先验证版本,再恢复连续动作 Chunk。若归一化统计、自由度或 Chunk首状态不匹配,应拒绝解码,而不是返回"近似可用"的数组。

样例 C:VLA/任务策略 → 技能执行器

yaml 复制代码
schema: synthetic.skill_call.v1
skill: place_object
skill_version: 3
arguments:
  object_track_id: obj-27
  target_region_id: tray-left
constraints:
  avoid_region_ids: [glass-zone]
  max_contact_force_n: 12
precondition_snapshot: state-5521
deadline_ms: 5000
cancel_on_goal_revision: true

技能执行器负责运动规划、碰撞检查和闭环控制,并返回 accepted/running/succeeded/failed/cancelled及原因。语言目标被修订时,旧技能可按合同取消。

八、评价 VLA:离线动作误差只能回答很小一部分问题

同一状态常有多条可行轨迹,因此 MSE或 Token准确率不能代表任务成功。项目验收至少覆盖五类指标:

  1. 真实成功:在预先定义的任务、初始状态和失败判据下,统计端到端成功率与完成时间。
  2. 泛化:分别改变对象、背景、摆放、指令表达、相机和机器人,不把单一"未见过"混成一个数字。
  3. 恢复:人为制造抓空、遮挡、对象滑动、工具失败和目标修订,测是否检测并重试或安全退出。
  4. 延迟:测相机采集到动作接受的 P50/P95/P99、Chunk缓冲余量、过期率和抖动,不只测 GPU前向。
  5. 安全:测越界命令拦截、力/速限制、碰撞、急停、人工接管和错误动作造成的最大后果。

离线重放可以筛选模型,仿真可以扩大覆盖,但真实接触、通信延迟和控制器交互必须在真实系统验收。任何"通用 VLA"结论都应保留机器人、任务、数据、控制频率和安全配置范围。

九、VLA 项目启动检查清单

  1. 写清 VLA只负责哪一段:动作建议、动作块、技能调用,还是其他接口。
  2. 给每个传感器、本体状态和语言目标定义时间戳、时钟域与版本。
  3. 建立统一参考时刻,规定不同模态最大允许时差和过期策略。
  4. 固定坐标系树、TCP、单位、旋转表示和变换责任方。
  5. 为动作建立 Schema:维度名、顺序、范围、掩码、绝对/增量语义。
  6. 固定归一化统计的来源、版本、反归一化和裁剪顺序。
  7. 分别记录动作表示、生成头、策略刷新率、动作样本率和伺服频率。
  8. 决定 Chunk执行方式:全量开环、滚动首段、重叠融合或异步缓冲。
  9. 让历史记录实际执行值、裁剪值和失败状态,而不是只记录模型原始输出。
  10. 在 VLA之后保留硬约束安全层、控制器状态机和急停链路。
  11. 为跨本体建立 Adapter测试:坐标、单位、关节顺序、夹爪方向和统计一致性。
  12. 设计真实成功、泛化、恢复、延迟和安全五类验收,不以离线损失代替。
  13. 对代码、权重、许可证和模型卡按正式来源留档,避免依据二手模型清单判断可用性。

结论

VLA不是"视觉加语言再输出几个数",而是一条跨越感知、语义、状态、动作生成和控制执行的接口链。关节动作、末端 Delta、离散 Token、连续 Chunk和技能调用只是不同动作表示;回归、自回归、Diffusion和 Flow只是不同生成头;策略频率、动作频率和低层控制频率又是另一组系统参数。真正决定模型能否落地的,是时间戳、坐标、单位、归一化、有效期、执行责任和安全边界是否被写成可验证合同。先签动作合同,再谈模型路线,才能把 VLA从演示张量变成机器人系统中的可执行模块。

FAQ

动作 Token 能直接发给控制器吗?

不能。Token 需要 Detokenizer、归一化统计、机器人 Schema、坐标与单位映射后才有物理意义。

支持 50 Hz 是否代表模型每 20 毫秒推理一次?

不一定;它可能指动作样本率或执行频率,必须与策略调用率和伺服频率分开。

统一动作空间能否消除跨本体适配?

不能。公共语义可以统一,但关节、坐标、动力学、传感器和安全范围仍是本体特定合同。

相关推荐
知识燃料1 小时前
企业级生成式 AI 云平台推荐,哪些平台更适合从 Agent 原型走向生产?
大数据·人工智能
oioihoii1 小时前
我用 Seed Evolving 做了个 AI 小说写作工具
人工智能
龙虾PRO1 小时前
破解变异 OLLVM 混淆新思路:基于 Angr 动态执行自动化还原控制流完整实操方案
人工智能
@Mr_LiuYang1 小时前
《深入理解 AI Agent:设计原理与工程实践 》实验1-1上下文的关键作用
人工智能
大模型丫丫1 小时前
MCP协议开发实战:从零搭建AI Agent工具链
人工智能
wangxin2081 小时前
大模型稀疏注意力和MoE的宽度丢失与多智能体的维度补充
人工智能·ai·多智能体·管理学·组织管理·coordclaw·稀释注意力
ZEB11062 小时前
深耕矿山智能赛道 长沙迪迈科技以持续技术创新赋能矿业高质量转型
人工智能·科技·制造
一碗白开水一2 小时前
入门实践工程四:基于 PyTorch 的手写数字识别(MNIST 图像分类)|附:环境依赖环境及工程源码
人工智能·pytorch·分类
A15362552 小时前
2026 电商物流系统推荐:多渠道仓配履约数字化选型指南
大数据·数据库·人工智能