VLA:视觉、语言与动作
VLA(Vision-Language-Action)模型将视觉观测与语言指令映射为机器人动作;部分模型还使用关节状态等本体观测。动作可以是一时刻的输出,也可以是一段未来动作序列,具体含义由模型、数据和控制接口共同定义。OpenVLA 项目与 openpi 项目提供了不同实现。
本页面向希望在 G1 上开展操作学习的开发者。资源核对日期为 2026-09-13,属于官方资料整理与实验路线建议,尚未完成本实验室的模型训练或实机复现。
2026-09-26 补充了策略类型、动作表示与全身控制接口,相关新增内容附有官方来源。
VLA、模仿学习与强化学习如何区分
VLA 描述模型使用视觉、语言与动作的关系;模仿学习和强化学习描述如何学习策略。一个 VLA 可以先从示范学习,再通过其他训练阶段改进,不能把这些概念当作互斥的模型类别。
| 路线 | 学习方式与输出 | 适合先回答的问题 |
|---|---|---|
| ACT | 从示范学习,一次预测一段动作,原始工作用于精细双臂操作 | 自己的演示和相机是否足以支持任务? |
| Diffusion Policy | 条件扩散生成动作序列,配合滚动执行 | 多种合理动作方式能否被策略表达? |
| OpenVLA | 视觉语言骨干结合动作预测与机器人数据微调 | 语言条件与预训练迁移能否帮助当前任务? |
| openpi | 包含 flow matching 与 FAST 动作 token 等不同模型路线 | 哪种动作生成方式适合当前控制与计算条件? |
| SONIC | 通过仿真中的运动跟踪学习全身控制,可与高层策略连接 | 身体如何执行参考动作,并与操作策略配合? |
ACT 和 Diffusion Policy 的原始方法不应直接标成 VLA。对单任务实验,可先建立模仿学习基线;对语言条件实验,增加“同一场景、不同目标指令”的测试,判断模型是否真正使用语言。
动作表示为什么会影响选型
离散动作 token: 将动作编码为离散符号供模型预测,之后再还原为数值动作。原始 OpenVLA 与 FAST 的编码方式不同,不能互换解码器。OpenVLA 仓库还指向 OFT 路线,支持连续动作及多图像等扩展;比较实验时应写明使用原始版本还是 OFT。OpenVLA 官方说明
连续动作序列: 扩散或 flow matching 等方法生成一段连续动作。openpi 包含 π₀、π₀-FAST、π₀.₅ 等实现;选择模型时需同时确定输入转换、动作时域和训练配置。openpi 官方说明
控制器的潜在动作: 高层模型输出供特定控制器解释的动作表示。SONIC 的官方 VLA 流程使用运动 token,并单独输出手部目标;这些 token 不能当作 G1 关节角直接发送。SONIC VLA 接口
动作分块(action chunking)表示一次预测多个未来动作;执行时通常只使用其中一部分,再读取新观测重规划。实验中要分开记录预测长度、实际执行长度和观测到执行的延迟。预测更长不一定更好:任务需要快速反馈时,旧动作持续执行会减少纠错机会。
VLA 在 G1 系统中的位置
以下是便于理解的参考流程,实际输入、输出和控制层由项目决定:
如果模型输出末端位姿,还需要相应运动学和控制转换;如果输出关节目标,则需要核对关节顺序和范围。用于桌面抓取的策略,也不能据此推断已经具备行走或全身平衡能力。
涉及边走边操作时,继续阅读 SONIC 与全身运动学习,确定任务策略、参考动作和身体控制器之间的接口。高层任务成功与底层跟踪稳定需要分别评测。
开放模型与工具入口
下表整理各项目公开的能力和资料入口。“G1 使用要点”是本手册的适配建议;具体可用机型和检查点以所选版本说明为准。
| 项目 | 主要内容 | G1 使用要点 |
|---|---|---|
| UnifoLM-VLA | 宇树的 VLA 训练、推理、模型权重与 G1 任务数据入口 | 优先核对其机身、末端、观测和客户端部署配置 |
| OpenVLA | 视觉语言动作模型、微调流程及机器人操作评测示例 | 阅读动作表示和归一化方式,补充 G1 数据与控制适配 |
| openpi | π₀、π₀-FAST、π₀.₅ 等模型的训练与推理工具 | 区分基础模型与平台专用检查点,配置自己的输入输出转换 |
| Isaac GR00T | 机器人基础模型、自定义机型数据适配、微调和评测流程 | 模型代际、机型标识与动作空间需匹配,使用相应版本文档 |
| SmolVLA | LeRobot 中的 VLA 模型及训练、推理说明 | 适合研究 LeRobot 策略流程;仍需验证 G1 的数据与执行接口 |
代码、权重和数据的开放范围分别以仓库 LICENSE、模型卡和数据集卡为准。选型时同时检查模型版本、依赖、显存需求和动作定义,不以项目演示视频代替设备适配验证。
建议从哪条路线开始
- 先了解 VLA 工作方式: 选择官方的小规模离线推理或 LIBERO 示例,观察输入与动作输出。
- 已有 G1 演示数据: 先用 Unitree LeRobot检查数据转换与策略流程,再选择支持该配置的 VLA 路线。
- 需要迁移现有模型: 先完成数据字段、动作空间和归一化配置,再进行小规模微调。
这些是本手册建议的学习顺序。ACT 等模仿学习方法可作为任务基线,但不能因为工具链也支持它,就把所有策略都称为 VLA;实验中应明确模型是否实际使用语言输入。
微调前做一个小规模验证
本手册建议先固定一小批完整轨迹,完成加载、前向推理、短训练与检查点恢复,验证数据和训练链路,再扩大规模。根据目标实现支持情况选择全量微调、冻结部分骨干或 LoRA;较少可训练参数也不意味着可以省去图像预处理、动作头适配和闭环评估。
对照实验应使用同一数据划分、观测和成功判据,分别记录基线与 VLA 的表现。预留未见物体、位置或采集会话,单独报告各项泛化结果;不要用训练损失或训练集动作准确率代替任务成功率。
数据准备决定适配质量
从数据集集合选择资源,或采集自己的 G1 演示。训练前至少固定以下约定:
| 内容 | 具体要求 |
|---|---|
| 图像 | 相机名称、数量、顺序、裁剪、尺寸和颜色编码在训练与推理时一致 |
| 本体状态 | 各维度的含义、顺序、单位、有效范围和缺失处理明确 |
| 动作 | 明确关节/末端、绝对/相对、左右侧、末端开合或手指控制方式 |
| 语言 | 与任务和轨迹一致;中文指令效果需要单独测试 |
| 归一化 | 保存训练使用的统计量或项目指定统计量,并与检查点配套加载 |
| 时间 | 明确观测历史、动作序列长度、执行步数及重规划周期 |
例如,夹爪的一维开合量无法通过简单复制变成 Dex3 的各关节目标;应根据任务和实际手型设计表示、采集示范或训练转换模块。
一个可复现的 G1 实验流程
可先运行本仓库第一个学习实验,完成 CPU 行为克隆的采集、训练、检查点恢复与仿真闭环,再进入 BrainCo2 单相机 ACT 路线。该示例用于打通工具链,不是 VLA 或实机性能报告。
- 限定任务。 从有可靠支撑、固定工作区的桌面操作开始,写清初始条件和成功判据。
- 检查数据。 查看完整轨迹,检查动作范围、时间同步和任务标注,固定数据划分。
- 建立基线。 先确认数据能支持一个简单模仿学习策略,再比较 VLA 是否改善语言条件任务表现。
- 小规模训练。 固定代码提交、数据 revision、模型 revision 和随机种子,先验证损失与输出变化。
- 离线推理。 将预测动作保存到文件,与示范比较,核对反归一化、维度和跳变。
- 闭环评测。 在匹配任务与模型的仿真环境中测试,再进行受控实机验证,记录接管与失败。
离线误差较小不能证明闭环任务能成功。机器人执行误差会改变下一次视觉输入,需要单独测试闭环行为。仿真配置见仿真页面,实机条件见安全指南。
推理服务与控制频率
模型可以运行在外部 GPU 主机上,由机器人客户端上传观测并接收动作。UnifoLM-VLA 给出了服务端与机器人客户端流程,openpi 也提供远程推理方案。宇树推理说明 · openpi 远程推理说明
本手册建议在接入实机前测量观测采集、编码、网络、模型推理和执行调度各段延迟。模型每次输出多个动作,不表示可以忽略状态变化或无限执行旧动作;客户端应检查时间戳、输出有效性、限幅及超时行为。
需要分别记录模型推理频率、动作目标更新频率和底层控制频率。不要直接让网络请求承担关节实时控制循环,也不要把某个桌面 GPU 的推理速度当成机载计算单元的保证。
怎么评估结果
| 指标 | 建议记录方式 |
|---|---|
| 成功率 | 记录成功数/总次数、任务定义及初始条件 |
| 泛化 | 分别测试新位置、新物体、新背景和语言改写 |
| 语言使用 | 对相同场景给不同指令,检查动作是否随目标变化 |
| 稳定性 | 记录动作跳变、停顿、超时、碰撞和人工接管 |
| 效率 | 记录端到端延迟、完成时间、显存与通信负载 |
| 可复现性 | 保存模型、数据、配置、固件、代码版本及失败视频 |