为什么要让机器人接上大模型

传统机器人的能力是「写死」的:抓取有抓取的代码,堆叠有堆叠的代码,换一个任务就要重新标定、重新编程、重新调试。这种方式的稳定性和精度都很高,但几乎没有泛化能力——面对没有预先定义过的物体或指令,机器人只能停下。

大模型改变的正是接口层。语言模型可以把「把桌上的红色积木放进盒子」这类自然语言指令,拆解成导航、抓取、放置等技能序列;视觉语言模型能理解场景语义,判断哪个是红色积木、哪个是盒子。于是机器人不再需要为每个任务写一套程序,而是从一个可泛化的策略出发,按指令现场组合技能。

大模型给机器人带来的是任务接口的通用化:语言负责表达意图,视觉负责理解场景,动作模型负责把意图落到关节上。
本文核心知识点
  • VLA 模型把视觉、语言与动作放进同一个网络,输入图像与指令,直接输出动作。
  • 操作大模型面向机器人操作任务训练的策略模型,关注接触与精细动作。
  • 动作空间关节空间、任务空间与末端位姿增量,选择它决定模型输出什么。
  • 协同架构慢思考的大模型负责规划,快执行的 VLA 与控制器负责实时动作。

VLA 模型:把图像、语言与动作统一

VLA 是视觉-语言-动作(Vision-Language-Action)的缩写。它的核心主张很直接:不要再把感知、理解与执行拆成三个互不相干的模块,而是用一个模型同时吃进图像与语言,直接吐出动作。图像与文本被编码成同一组特征,动作则被切成离散的 token 或连续的动作块,与它们一起放进序列中解码。

这样做的好处是跨模态对齐:模型在训练中看到的每一次「看到什么、听到什么、做了什么」都被放在同一条样本里,语言里的「红色」与图像里的红色区域、动作里的对应轨迹会在特征空间里自然靠近。坏处是对数据要求高,而且动作的精度受离散化粒度影响。

# VLA 模型的推理流程
frames = camera.capture()                    # 当前与历史的相机观测
instruction = "把红色积木放进盒子"             # 人类用自然语言下达的任务

vision = vision_encoder(frames)              # 视觉编码:图像变成特征序列
text = language_encoder(instruction)         # 语言编码:指令变成语义特征
tokens = fuse(vision, text)                  # 跨模态融合:对齐视觉与语言

actions = action_decoder(tokens)             # 动作解码:输出一段动作序列
robot.execute(actions)                       # 在真机上执行,并观察执行结果
VLA 模型示意:机器人用视觉光束与语音气泡汇入发光智能核心,核心再输出动作轨迹指向机械臂关节
VLA 把视觉与语言输入统一到同一模型,再输出可执行的动作序列。

实际系统里,动作通常不是一帧一帧输出的,而是一次性预测未来若干步的动作块,再交给控制器平滑执行。这样既降低了推理频率的压力,也减少了动作抖动,是当前 VLA 落地时最常见的一个工程选择。

操作大模型与动作空间

动作空间是 VLA 设计里最先要做的决定,因为它决定了模型输出的物理含义,也决定了控制器如何接手。常见的有三种表示:

动作表示含义优点局限
关节位置直接输出各关节的目标角度与控制层衔接直接,不依赖运动学求解不同构型不通用,泛化到新本体困难
末端位姿增量输出末端执行器的平移与旋转增量跨本体可迁移,语义直观需要逆运动学求解,奇异点附近不稳定
动作 token把动作离散成词表里的符号可与语言模型共用解码结构精度受离散粒度限制,需要量化处理

面向操作任务训练的策略模型,通常称为操作大模型。它和通用视觉语言模型的最大差别在于数据:通用模型见过的是海量图文,操作模型见过的必须是「动作」——遥操作演示、人类视频里的手部动作、仿真里生成的轨迹。这些数据的采集成本高、标注难度大,也直接决定了模型能做到多精细。

选择动作空间的三条建议
  • 先看本体本体固定、追求精度时用关节位置;需要跨本体复用时优先末端位姿增量。
  • 再看数据已有大量遥操作关节数据时,硬换动作空间会浪费数据价值。
  • 留好接口无论选哪种,都在模型与控制器之间留一层统一的目标描述。

具身智能体与大模型的协同架构

把大模型直接接到机器人的关节上并不可行:语言模型一次推理可能要几百毫秒,而控制回路需要每秒上百次刷新。因此主流做法是分层协同,通常被概括为「慢思考 + 快执行」:大模型在慢环路负责任务理解与技能规划,VLA 策略或控制器在快环路负责把技能变成具体动作。

两层之间靠一份结构化的「技能清单」交接。上层输出的是可解释的技能序列与参数,下层只关心如何执行。这种设计还带来一个额外好处:技能层可以单独测试,规划出错和执行出错能被清楚地区分开。

# 具身智能体与大模型的协同消息结构
planner:
  model: large_language_model
  input: natural_language_instruction
  output: skill_sequence

skills:
  - name: navigate_to
    target: table_front
  - name: pick_object
    object: red_block
  - name: place_object
    target: box_inside

executor:
  model: vla_policy
  frequency_hz: 10
  action_chunk: 16
  observation: [rgb_front, wrist_camera, joint_state]

safety:
  max_torque: 40.0
  collision_check: true

这份结构里,action_chunk 与 frequency_hz 是两个关键工程参数:前者决定一次推理要覆盖多少步动作,后者决定策略的刷新频率。两者相乘决定了模型单次推理必须覆盖多长的时间窗口,也决定了它对延迟的容忍度。

VLA 训练流程与数据构成

VLA 的训练通常分两步走。第一步是大规模预训练:用海量的机器人演示、人类视频与仿真数据,让模型建立视觉、语言与动作之间的通用对应关系;第二步是目标任务微调:用相对少量但高质量的场景数据,把模型对齐到具体本体与具体任务上。

数据构成是这一路线最现实的门槛。遥操作演示的动作标签最可靠,但采集最慢;人类视频数量充足,却只有观测没有动作,需要额外的对齐处理;仿真数据可以大批量生成,但存在仿真与真机的分布差距。三者通常是按比例混合使用。

# 训练阶段与数据配比设置
stage_pretrain:
  dataset: robot_demonstration_large
  episodes: 120000
  batch_size: 256
  learning_rate: 0.0001

stage_finetune:
  dataset: tabletop_pick_mixed
  episodes: 8000
  batch_size: 64
  learning_rate: 0.00002

data_mix:
  teleoperation: 0.5     # 遥操作演示,动作标签最可靠
  human_video: 0.3       # 人类视频,只有观测没有动作
  simulation: 0.2        # 仿真数据,可大批量生成

微调阶段的学习率通常比预训练低一个量级,目的是在不破坏通用表征的前提下适配新任务。除此之外还有两个容易被忽视的细节:一是不同来源数据的动作频率不一致,必须先统一到同一时间基准;二是相机参数与坐标系差异会直接污染动作标签,标定工作必须在训练前完成。