
专题导读|从看见到动起来:理解 VLA 的最小前置知识
大语言模型擅长把问题说清楚,但机器人还要把事情做出来。
例如,“把红色杯子放进水槽”这句话,对机器人并不是一个动作。它需要从相机画面找到杯子和水槽,知道自己的机械臂当前在哪里,规划一条不会碰撞的短轨迹,控制夹爪在合适的时机闭合,再根据新的画面不断修正。Vision-Language-Action(VLA)模型要做的,就是把这些信息合在一起,输出可以被机器人执行的连续动作。
π0 和 π0.5 是这一方向的代表性工作。π0 将视觉、语言和机器人状态与生成式动作策略结合;π0.5 进一步用异构数据协同训练与高层语义子任务预测,探索在陌生环境里完成更长任务的可能性。[1][2]
但在直接读论文之前,先掌握下面这些最小概念,会省去很多“每个词都认识,但连起来不知道模型在做什么”的困惑。
1. 机器人任务并不是“输入一句话,输出一个动作”
先记住六个对象:
observation:机器人现在能看到或测量到的信息,例如图像、深度和传感器读数。state:机器人自身状态,例如关节位置、末端位姿和夹爪开合。action:下一时刻要发送给控制器的命令。trajectory:一段连续的状态—动作序列。episode:从任务开始到成功、失败或超时结束的一次完整过程。policy:根据当前输入决定下一步动作的函数。
最小形式可以写作:
其中, 是时刻 的观测, 是机器人状态, 是语言指令, 是动作, 是模型参数。
这里有一个重要区别:观测并不等于世界的完整状态。相机可能看不到物体背面,目标也可能被遮挡。策略必须在这种不完整信息下行动,而不是等待“完美答案”。
图 1:VLA 的最小数据流。模型不是只输出一句解释,而是输出未来一小段可执行的控制命令。
2. 动作空间决定“模型输出的数字究竟是什么意思”
同样是“抓取杯子”,机器人可能以不同方式接收动作。
最常见的一种是关节空间动作:
是第 个关节的位置、速度或控制目标, 是夹爪命令。
另一种是末端执行器动作:
其中 描述夹爪的位置, 描述姿态, 仍然表示夹爪动作。底层控制器会再把这种目标转换为关节命令。
这件事和 π0.5 尤其相关。不同机器人可能有不同关节数、不同夹爪、不同控制频率,甚至动作的单位与坐标系也不同。因此,“从其他机器人学到抓取经验”并不意味着可以直接复用同一个动作向量。模型与数据管线都需要知道当前的 embodiment:这到底是哪一台机器人,它有什么传感器,又能如何运动。
3. 图像里的“右边”,不一定是机械臂的“右边”
机器人同时会遇到多个坐标系:相机坐标系、机器人基座坐标系、末端执行器坐标系和世界坐标系。
这意味着:杯子出现在图像右侧,并不自动推出机械臂要朝基座坐标系的右侧移动。相机位置、镜头方向、深度信息与标定都会改变两者的关系。
这是调试机器人时非常实用的判断框架。如果模型看起来已经识别到目标,但机械臂总向错误方向移动,问题未必出在语义理解;更可能出在相机外参、坐标转换、时间同步或动作定义。
对初学者来说,现在不必推导所有齐次变换矩阵。先建立一个工程直觉就够了:视觉、状态和动作必须在同一套几何关系中对齐。 想补足几何基础时,可以阅读 Modern Robotics 的坐标变换章节。[8]
4. 真正的机器人控制是闭环,而不是“一次生成到底”
语言模型生成一段文字后,通常不需要立刻面对物理世界的反作用;机器人不同。它做出的每个动作都会改变下一帧画面,因此策略需要不断重新观察:
图 2:闭环执行。机器人只执行预测动作的一部分,再依据新观测修正。
为了保持动作连贯,策略常一次预测未来 步动作:
这被称为 action chunking。但机器人通常不会盲目执行完整动作块,而是只执行前面一部分,再重新预测。这种滚动方式常被称为 receding horizon。
它带来一个现实的权衡:更长的动作块通常更连贯,但对突发变化反应更慢;更多生成步数可能提高动作质量,却会增加推理延迟。真实机器人表现因此不仅由模型精度决定,也受相机帧率、网络、GPU、控制器和执行器限制。
5. 行为克隆:让机器人模仿专家,但要警惕错误累积
最直接的机器人学习方式叫做行为克隆(Behavior Cloning)。给模型看专家示范:在这张图、这个状态和这句指令下,专家采取了什么动作;模型学习做出相近的动作。
其中 是示范数据集, 是专家动作。最简单的损失函数可以是预测动作与专家动作之间的均方误差。
问题在于:训练数据大多来自专家轨迹,而部署时机器人会遇到自己造成的新状态。模型只要有一次小偏差,就可能偏离专家轨迹;进入训练中没出现过的位置后,后续动作又更容易出错。这就是 covariate shift 或错误累积。
DAgger 是理解这一问题的经典论文:它的核心思想是让策略在自己真正会访问到的状态上获得更多专家监督。[3] 对 π0.5 而言,更广的数据覆盖、高层语义子任务和闭环重规划都在尝试缓解这一困难,但它们不意味着模型在任何陌生环境中都不会失败。
6. Transformer、VLM 与 VLA:从“能看懂”到“能控制”
Transformer 可以把不同来源的信息都变成向量,再让它们相互关联。
- 图像会被切成 patch,并编码为视觉 token。
- 文本被 tokenizer 切分,编码为语言 token。
- 关节位置、末端位姿等连续数值会被投影为状态 embedding。
注意力机制让模型在处理“把红色杯子放进水槽”时,能把“红色”“杯子”“水槽”等语言概念与图像区域关联。Transformer 的原始形式常写为:
此处不必急着手推矩阵。现在最重要的直觉是:模型不是把图片和文本分别处理完就结束,而是在共同上下文中决定“哪些视觉信息与当前指令、当前姿态有关”。[4][5]
图 3:VLM 可以回答或定位;VLA 还必须产生实时、连续、与具体机器人匹配的动作。
VLM(Vision-Language Model)典型地输出文字、描述或语义判断;VLA(Vision-Language-Action)还要输出连续动作。因此 VLA 不是“把 VLM 最后一层改成数字”这么简单:它需要面对动作时间序列、控制延迟、安全边界以及不同机器人身体结构的差异。
7. 为什么 π0/π0.5 的动作部分更接近“生成”,而不是“回归”
把杯子放进水槽并没有唯一正确轨迹。可以从左侧靠近,也可以先抬高再向前移动。若模型只对很多示范动作求平均,反而可能学到一条并不适合实际执行的“平均轨迹”。
因此,生成式动作策略学习的更像是条件动作分布:
Diffusion Policy 将动作轨迹视为从噪声逐步恢复的对象;Flow Matching 则学习如何把简单噪声分布沿着一个向量场搬运到真实动作分布。[6][7] π0 的 action expert 属于后者这条路线。
在这一阶段,只需把握一句话:视觉语言模型主要帮助机器人理解“现在应该做什么”,生成式动作模块则负责产生“怎样连续地动起来”。
8. 阅读 π0 与 π0.5 前,建议先完成这份自测
如果你能用自己的话回答下面的问题,已经具备阅读两篇论文的最小门槛:
observation、state、action、trajectory与episode有什么区别?- 关节空间动作和末端执行器动作有什么不同?
- 为什么相机标定错误会让“看对了目标”的机器人朝错误方向移动?
- 为什么机器人需要闭环执行,而不能一次生成完整任务动作?
- 行为克隆的错误累积如何发生?
- VLM 和 VLA 的输出边界在哪里?
- 为什么连续动作可以被理解为一个条件生成问题?
能回答这些问题后,推荐先读 π0,集中理解输入、VLM backbone、action expert、Flow Matching 和 action chunk;随后再读 π0.5,重点看异构数据协同训练与 semantic subtask prediction 如何服务于长时序任务。[1][2]
延伸阅读
- Physical Intelligence, π0.5: A Vision-Language-Action Model with Open-World Generalization。重点读:异构数据、hybrid multimodal examples、高层语义子任务和实验边界。
- Physical Intelligence, π0: A Vision-Language-Action Flow Model for General Robot Control。重点读:VLM backbone、action expert 与 Flow Matching。
- Ross, Gordon, and Bagnell, DAgger。重点读:分布偏移为什么会在闭环控制中放大。
- Vaswani et al., Attention Is All You Need。重点读:self-attention 的输入输出与位置编码。
- Dosovitskiy et al., An Image is Worth 16x16 Words。重点读:图像 patch 如何成为视觉 token。
- Chi et al., Diffusion Policy。重点读:动作轨迹、条件输入与 action horizon。
- Lipman et al., Flow Matching for Generative Modeling。重点读:从噪声到数据分布的向量场直觉。
- Lynch and Park, Modern Robotics。重点读:刚体变换、坐标系与末端执行器。
本文是 π0.5 学习路线的第一篇。下一篇可以进入“行为克隆、示范数据与分布偏移”,把一条机器人示范如何变成训练样本讲清楚。