从零开始的双臂具身VLA起源及现阶段发展综述
开门见山说个结论:具身智能最近两年能火出圈,VLA(Vision-Language-Action,视觉-语言-动作)模型功不可没,而双臂具身VLA又是其中最有工程挑战、也最能直接兑现商业价值的方向。搞双臂机器人操作的人应该都有同感:单臂方案在抓取、放置、装配这类任务上已经相对成熟,但一旦涉及双手协同——比如拧瓶盖、拆快递箱、给零件对位装配——模型不仅要理解"左右手各自该干嘛",还得解决双臂运动规划、力控协调、视野遮挡等一系列连锁问题。
这篇文章不聊虚的。我以"从零开始"为线索,把双臂具身VLA的起源脉络、核心架构、数据方案、现阶段瓶颈和发展趋势完整梳理一遍,适合正在入门具身智能的算法工程师、机器人赛道创业者,以及想搞清楚"VLA到底能干什么"的技术决策者阅读。文章里的所有经验都来自我实际调模型、跑真机、看论文、复现开源项目的真实体会,能帮你少走不少弯路。
1. 双臂具身VLA的起源与概念拆解
1.1 为什么是"双臂",为什么是"VLA"
先厘清一个基础问题:双臂具身VLA到底解决的是什么问题?
VLA的本质,是给机器人装一个"会看、会想、会动"的大模型。它接收视觉输入(相机画面)和语言指令(比如"把红色杯子放到托盘上"),输出机器人可执行的动作序列。VLA不是凭空冒出来的,它把视觉语言模型(VLM)的语义理解能力和动作生成能力接在了一起,算是对传统机器人控制范式的一次大升级。
传统机器人操作一般走"感知-规划-控制"三段式:视觉感知模块负责识别物体位置,运动规划模块负责算出一条无碰撞轨迹,底层控制器负责跟踪轨迹。这套管线在工业场景里很成熟,但短板也非常明显——一旦环境稍微变化(光照、遮挡、物体形状杂乱),感知和规划就得重新调参,泛化能力捉襟见肘。而VLA把"感知"和"规划"揉进了一个网络里,端到端输出动作,等于把原来手工设计的中间表征全部省掉了。
那为什么偏偏是"双臂"?因为真实的人类操作场景里,双手协同是常态。你去厨房做饭、去仓库打包、去实验室装配,几乎没有哪项任务可以只靠一只手完成。单臂VLA做得再好,面对"一只手按住物体、另一只手抽出纸巾"这类任务也会直接崩溃,因为它在架构上就没有学习"双手机器人本体"的运动模式。双臂具身VLA的难点并不只是"多一个机械臂",而是多了两层复杂度:一层是双臂之间的运动学约束(不能互相碰撞),另一层是双手的动作语义分配(哪只手做主动操作、哪只手做辅助配合)。
1.2 从RT-1到RT-2再到VLA:关键演进脉络
回顾一下VLA这条线,最绕不开的就是那几篇标志性工作。我在复现和阅读这些工作时,明显感受到技术的演进是一条"从指令化到端到端、从单任务到多任务"的路径。
RT-1可以说是VLA概念最早的奠基者之一。它用Transformer架构把图像、文本和动作历史编码成token,实现了"看到指令-生成动作"的端到端学习。我当时看RT-1时最大的感受是:它证明了"用互联网规模的预训练+机器人数据微调"这条路是走得通的,但RT-1的动作空间其实是离散的、受限的,而且基本只在单臂场景下验证。
随后出现的RT-2把这条路往前推进了一大步。RT-2直接把机器人动作当作一种"语言"来生成,让模型在视觉语言预训练的基础上,通过少量机器人数据就学会了操作。这个思路非常关键:VLM已经在大规模图文数据上学会了理解"杯子""盘子""拿起"这些语义概念,RT-2做的只是把动作token加到输出空间里,让模型"一边说、一边动"。RT-2当时展示的多模态推理能力让很多人兴奋,但它的实验平台也以单臂为主,双腿、双臂、移动操作这些更复杂的本体形态还没有被系统性验证。
再往后就是百花齐放的阶段了。OpenVLA、π0、RDT等一批开源项目相继出现,把VLA推向了更实用、更可复现的方向。我实测下来的感受是:
- OpenVLA的模型结构清晰,基于预训练VLM做动作解码,社区资料多,适合入门学习和二次开发。
- π0则强调"流匹配"动作生成,输出的动作轨迹更平滑,对精细操作任务特别友好。
- RDT专门针对大规模多本体数据训练,官方在双臂场景上做了不少真机验证,是国内科研团队比较容易上手的方案。
这条演进脉络给我们的启示是:VLA已经不是停留在论文里的概念,而是逐步变成具身智能领域的基础设施。理解RT-1到RT-2再到RDT的演进,能帮你判断自己该从哪个模型切入,以及未来架构往哪个方向演化。
1.3 双臂场景下VLA的独特难点
单臂VLA跑通了,不代表把两个臂凑一起就行。我在实际调试双臂系统时,踩过的坑基本可以归纳为三类,这三类问题也是当前双臂VLA研究的核心难点。
第一类是动作空间维度的爆炸。单臂控制通常需要6维或7维动作(末端位姿+夹爪开合),双臂直接翻倍到12维以上,如果还带上移动底盘或腰部自由度,动作维度可以到16-20维。维度上升带来的连锁反应是:模型需要预测的token变多、训练数据量需求变大、动作生成的连续性和一致性更难保证。很多模型在单臂上表现尚可,一到双臂就出现"左右手动作不协调"的情况,本质就是没有在模型结构层面处理双臂的联合动作分布。
第二类是双臂协同的语义分配问题。举一个最简单的例子:让机器人"把瓶子扶正放到桌上"。这个指令看似简单,但模型需要自己决定:左手扶瓶、右手推正,还是右手扶瓶、左手推正?如果两只手都要参与,谁先动、谁后动、谁施加的力更大?这些语义层面的分配问题,不是单纯加一个注意力机制就能解决的。它要求模型对"双手的空间关系"和"任务的时序逻辑"有联合理解,这在目前的数据集和模型架构里都还是很大的挑战。
第三类是数据采集难度的指数级上升。单臂操作数据可以用一个操作杆直接遥操作采集,但双臂数据采集时,操作员需要同时控制两个手臂末端,还要协调两只手的配合节奏。即便用了主从遥操作设备,学习成本和数据质量稳定性都是大问题。我见过不少团队在单臂上一天能采几百条数据,换成双臂后一天能采到几十条高质量数据就算不错了。数据量和数据质量直接决定了VLA的泛化上限,这也是双臂VLA进展明显慢于单臂VLA的根源之一。
2. 双臂具身VLA的核心架构设计与技术路线
2.1 主流模型架构的共性与分歧
把目前主流的双臂VLA模型放在一起看,它们的架构共性非常明显,基本都是"视觉编码器 + 语言编码器 + 多模态融合模块 + 动作解码器"这个框架,区别主要在于动作解码器的设计方式。
我以一个通用框架来拆解:
- 视觉编码器:负责把相机图像转成视觉token。常用的有SigLIP、CLIP、DINOv2等,一般是冻结或微调状态。双臂场景对视觉编码器的要求是"多视角融合"能力要强,因为左右手互相遮挡的情况很常见,单一视角很容易丢失关键信息。
- 语言编码器:负责把自然语言指令转成语义向量。大多数模型直接用T5或LLaMA的文本编码器,把指令变成一段固定维度的向量序列。语言编码器的重要性容易被低估,但在双臂场景里,指令里包含的"左右手"语义分配信息非常关键,比如"把左边的杯子递给右边的人"这类指令,语言编码器必须能捕捉到空间方位和手部行为的对应关系。
- 多模态融合模块:这是整个模型的"大脑",负责把视觉token和语言token融合起来。Transformer的cross-attention是标配方案,但具体实现差异很大——有的是在VLM的最后一层加一个动作头,有的是在VLM的每一层都注入动作token。融合层越深,模型对多模态信息的交互理解越强,但训练成本也越高。
- 动作解码器:这是VLA和普通VLM的最大分水岭。动作解码器负责把融合后的特征映射成机器人可执行的动作序列。这里有两种主流设计:一种是离散动作token预测(类似RT系列),把连续动作空间离散成固定长度的token;另一种是连续动作回归(类似π0的流匹配),直接预测动作轨迹的连续分布。我实测下来,连续动作回归在精细操作上的稳定性明显更好,但训练时需要更仔细的损失函数设计。
2.2 动作表征与预测方式:离散、连续与流匹配
动作表征是VLA架构里最"细节决定成败"的部分,也是很多初学者最容易忽视的地方。
先说离散动作token。RT-1和RT-2都是这个路子:把动作的每个维度(位置、姿态、夹爪开合)归一化后量化成固定数量的bin,然后用token预测的方式让模型"选"动作。这个方案的优点是简单可靠——图像和语言模型那套tokenization思路可以直接复用,推理时用自回归方式逐个预测动作token就行。缺点是精度上限明显,量化bin的数量直接决定了动作精度,bin太多训练难度大,bin太少又做不了精细操作。我在实际测试中,离散动作方案做到厘米级精度还可以,但到毫米级就很吃力。
再说连续动作回归。这类方案的思路是让模型直接输出连续的动作向量,训练时用回归损失约束预测值与真实值接近。相比离散方案,连续动作的精度上限高很多,而且可以输出平滑的轨迹。但代价是训练更难收敛,尤其是双臂场景下动作维度高、数值范围大,损失函数很容易被某个维度主导,导致模型学出"一只手臂精准、另一只手臂漂移"的诡异行为。我的经验是,连续动作方案必须对动作空间的每个维度做细致的归一化或加权处理,不然大概率出问题。
最后是流匹配(Flow Matching)。这是π0这类模型采用的新思路,核心思想是把动作生成看作一个从噪声分布到真实动作分布的"流"过程,模型预测的是速度场而不是具体的动作值,推理时通过多步迭代逐步去噪得到最终动作。这套方案的优势非常突出:生成的动作轨迹平滑自然,对多模态动作分布(同一个任务可以有多种正确做法)的表达能力很强。我在复现π0时最深的感觉是,流匹配把"动作生成"和"动作平滑"两件事合在了一起,省去了传统方案里单独做轨迹平滑的环节。当然,流匹配的推理时延比直接回归大一截,对实时性要求高的场景需要做降步数优化。
2.3 双臂联合控制:从独立预测到联合预测
单臂VLA的双臂化改造,最常见的误区是"两个臂各自预测各自的动作"。这种naive做法看起来简单,但实际跑起来会出现严重的协同问题——明明左手的动作规划是对的,右手的动作规划也是对的,但两只手同时运动时就可能互相碰撞或者动作冲突。
更合理的方案是"联合预测"。也就是模型的输出空间同时包含左右两个手臂的动作维度,由同一个解码器联合生成。这样做的好处是,模型在生成动作时能天然感知到两只手臂的联合状态,动作分布是双臂协调的,而不是两个独立分布的拼接。RDT在这一点上做得比较彻底,它在模型结构上直接把双臂变量互相注入,让左右手的动作互相引导生成,实验效果明显优于双臂独立预测的基线。
我个人的体会是:如果你要做双臂VLA,至少要让动作解码器在特征层面看到双臂的联合信息。最简单的做法是把两只手臂的末端位姿拼接起来作为一个整体预测目标,稍微复杂一点的做法是引入双臂交叉注意力模块,让左手动作生成时能看到右手动作的历史信息。这一步做不好,后面不管数据怎么补都很难救回来。
2.4 开源方案选型建议
目前适合上手的开源双臂VLA方案,我按实用程度排序:
- RDT:多本体预训练,官方支持双臂真机部署,代码结构清晰,是最适合做双臂场景二次开发的基线。
- π0(含开源复现):流匹配动作生成,适合精细操作,但官方权重和代码的中国本地访问需要一定处理,社区复现版本成熟度参差不齐。
- OpenVLA:模型结构简单,社区生态好,虽然有双臂扩展的论文工作,但核心模型还是为单臂设计,双臂化需要自己改解码器。
选型时我通常建议遵循一个原则:先跑通一个baseline,再根据任务需求做改造。不要一上来就追求最"先进"的模型,因为你可能连数据格式、动作空间定义都会踩坑。先跑通RDT的官方demo,把双臂真机部署链路摸清楚,再换模型结构研究性能提升,这条路是最稳的。
3. 双臂VLA的数据:采集、处理与增强
3.1 高质量双臂数据的采集方法
数据是VLA的命根子。双臂VLA的数据采集,我试过的方案有四种,各有优劣。
第一种是遥操作采集。这是目前最主流的方式,操作员通过主手、操作杆或VR设备控制机械臂末端,机器人记录动作轨迹和环境图像。遥操作采集的优点是数据质量高、动作自然,适合精细任务;缺点是有学习成本,尤其是双臂场景,操作员要同时控制两个末端,需要专门训练一段时间。我见过最快的上手方式是"双臂主从映射"加"操作员累积经验",基本上练两天后能稳定采出可用数据。
第二种是脚本化自动采集。用运动规划或预设脚本生成动作轨迹,配合自动标注工具生成语言指令。这种方式可以大规模产出数据,但动作多样性差,真实复杂场景下的泛化能力有限。我个人的判断是,脚本化采集适合做预训练数据的兜底,但很难成为微调阶段的主要数据来源。
第三种是仿真数据采集。用仿真环境(比如Isaac Sim)批量生成任务数据,成本低、速度快、可以覆盖极端场景。仿真数据的短板是sim-to-real gap——仿真图像和真实图像的域差异会严重影响模型迁移效果。我试过的缓解手段包括随机化材质、光照、相机视角,以及引入域随机化噪声,但说实话,目前仿真数据直接迁移到真机的效果还是不够理想。
第四种是"众包式"采集,也就是让多个操作员在不同地点同时采集数据,通过数据管理平台汇总清洗。这种方式能最快扩大数据量,但数据质量参差不齐,需要投入大量人力做筛选和清洗。我更推荐有条件的团队把第一种和第三种结合起来:遥操作采集为主、仿真数据为辅,再配合脚本化数据做预训练。
3.2 数据清洗、标注与格式统一
数据不是采完就能直接喂给模型的,清洗和标注是决定模型效果的隐性关键。
先说清洗。双臂数据里最常见的噪声包括:动作轨迹抖动(操作员手抖或遥操作设备精度问题)、图像帧与动作帧不同步(采集频率不一致)、动作超出安全范围(机械臂奇异位形或碰撞风险)。我的清洗管线一般分三步:第一步按图像和动作的时间戳对齐,丢掉时间戳偏差过大的样本;第二步用运动学反向解算,检测动作是否落在机械臂的合法工作空间内;第三步人工抽检,尤其是双臂交汇、互遮挡的片段,宁可少不可烂。
再说标注。双臂VLA的数据标注比单臂复杂很多,因为指令里通常包含左右手的语义信息。比如"左手握住瓶底,右手拧开瓶盖",这里不仅要标注整体任务,还要标注"左右手各自的角色"。我见过不少团队在标注阶段偷懒,直接用整句指令标注整段轨迹,结果模型训练出来只有"右手动左手不动"或"两只手一起动"这两种极端行为,完全学不会分工。正确做法是:指令尽量描述清楚手部分配,或者干脆在数据里增加"手部角色标注"通道,让模型有显式的左右手语义可对齐。
最后是格式统一。目前社区主要采用两类格式:一类是Google的RLDS格式(一个数据集一个文件包),另一类是开源模型自定义的通用格式(统一为JSON或npz文件)。如果你的团队需要实验多个VLA模型,建议上游统一成自描述的通用格式——图像路径、时间戳、关节角度、末端位姿、语言指令、额外元信息全都放在一个文件里,这样下游切换模型时不用反复转换数据格式。
3.3 仿真数据增强与域随机化技巧
仿真数据虽然天然存在与真实环境的差异,但用得好的话能极大补充动作多样性。
我常用的仿真增强技巧有三个:一是相机视角随机化。真实机器人场景里相机安装位置和角度五花八门,仿真里如果把相机视角固定,模型一换环境就失效。做数据生成时让相机位置在一定范围内随机扰动,能显著提升模型对视角变化的鲁棒性。
二是物理参数随机化。物体摩擦系数、质量、质心位置、机械臂末端负载等参数都可以在仿真里随机设。这个技巧对双臂操作尤为重要,因为双臂任务往往涉及物体交互和力控制,物理参数一变,模型就必须学到"适应物理条件"的通用策略,而不是死记硬背动作轨迹。
三是视觉材质随机化。把物体的颜色、纹理、环境光照做大量随机组合,能逼迫模型去关注"形状和布局"而不只是"颜色和纹理"。这个技巧在真实场景迁移时非常有用,我实测过:没做材质随机化的模型换一个同色系场景就崩,做了之后在深色、浅色、强光、弱光环境下都能稳定跑。
3.4 一个可参考的开源双臂操作数据集结构
如果大家想自建数据集,我建议参考下面这个结构组织:
dataset/ ├── episode_00001/ │ ├── observations/ │ │ ├── cam_left_0.jpg │ │ ├── cam_right_0.jpg │ │ └── cam_wrist_0.jpg │ ├── actions.npz │ ├── action_annotations.json │ ├── instruction.txt │ └── metadata.json ├── episode_00002/ │ └── ... └── dataset_statistics.json其中actions.npz存储每个时间步的关节角度或末端位姿,action_annotations.json存储左右手分工的逐段标注,dataset_statistics.json保存整个数据集的均值方差,供模型训练时做标准化。这个结构是我在实际项目中打磨出来的,兼容性不错,RDT和OpenVLA的数据加载器都能比较容易地适配。
4. 双臂VLA的训练、部署与真机实操
4.1 预训练-微调-对齐三阶段训练流程
双臂VLA的训练流程,我倾向于分成三个阶段:预训练、任务微调、真机对齐。这三个阶段各有各的坑,缺一不可。
第一阶段是预训练。这个阶段的目标是让模型学会"通用的视觉语义理解"和"基本的动作生成能力"。数据来源一般用大规模图文数据和部分机器人通用数据,训练目标是纯损失最小化。这个阶段最需要注意的是"动作空间对齐"——不同数据源的动作空间定义往往不一致,有的用关节角度,有的用末端位姿,有的还带夹爪和移动底座参数。如果在预训练阶段没有做统一表征,后面微调时会非常痛苦。我的做法是全部转成统一的末端位姿+速度表征,关节角度只在真机部署时用逆运动学解算。
第二阶段是任务微调。这个阶段的目标是让模型适配具体的双臂任务。数据来源是任务相关的遥操作数据,训练量不需要太大,重点在于数据质量。微调时最容易出现的问题有两个:一个是灾难性遗忘——模型在下游任务上训好了,但通用能力大幅退化,解决办法是微调时混合一部分预训练数据;另一个是过拟合到数据分布——数据里只出现过某种物体、某种布局,模型换一个场景就完蛋。解决办法是靠仿真数据增强和多样化的采集环境。
第三阶段是真机对齐。这是单臂VLA方案最欠缺、而双臂场景特别需要的一环。真实机器人有运动学误差、视觉标定误差、执行器延迟,这些在仿真里几乎不存在。常见做法是部署后采集少量真机数据,用类似强化学习或行为克隆的方式做短时域的对齐微调。我个人的建议是:真机对齐阶段的数据量不一定大,但一定要覆盖"模型最容易犯错"的边界情况,比如双手接近物体时的避碰、物体被打翻后的恢复策略。
4.2 训练工程实现的关键参数与配置
在训练工程层面,我分享几个实际用过的关键配置,大家可以直接参考。
首先是batch size和梯度累积。VLA模型参数量从几亿到几十亿不等,在8卡A100级别的集群上,单卡batch size通常只有1-2,需要靠梯度累积来撑大有效batch size。我建议有效batch size维持在64以上,不然模型的动作生成质量会明显下降。
第二是学习率。VLA训练的主流做法是分阶段调整学习率:预训练阶段用大约1e-4到5e-4的峰值学习率加warmup和cosine decay,微调阶段降到1e-5量级,避免破坏预训练特征。如果用的是LoRA微调,学习率可以更大一些,但要注意秩的选择。经验值是:简单任务用r=8,复杂双臂协同任务用r=16到32。
第三是混合精度。VLA模型训练时混合精度几乎是必须的,但我实际发现bf16比fp16稳得多——FP16在梯度过小时容易溢出,导致loss不稳定。用bf16时损失函数可以做到几乎无损,推理时再转回fp16或fp32部署。
第四是数据加载。双臂数据集动辄几百GB,训练时的IO经常成为瓶颈。强烈建议把所有小图片提前重采样编码成jpg并打包为TFRecord或WebDataset格式,再用分布式数据加载器做预读取,能把训练吞吐提升2-3倍。我自己在项目里就是这么做才把训练时间从几周压缩到几天。
4.3 真机部署流水线:从模型输出到机械臂执行
真机部署是VLA项目里最"劝退"的一环,也是最有价值的一环。
标准的部署流水线长这样:视觉采集 -> 模型推理 -> 动作后处理 -> 运动控制 -> 真机执行。
视觉采集环节,我建议至少使用3个相机视角:一个桌面全局视角,一个机器人头部视角,一个手腕视角。双臂场景还需要一个上帝视角或侧视角来观察双手机器人的整体布局。模型推理时,不同视角的图像会被编码成不同的视觉token序列,在融合模块做cross-attention。
模型推理输出的是末端位姿序列,但真实机器人控制器吃的是关节角度。所以还得用逆运动学把末端位姿转成关节目标,再用位置控制或阻抗控制执行。这里有个容易踩坑的点:双臂逆运动学解算必须考虑双臂碰撞和基座姿态变化,否则即使每只手臂的逆解都合理,双臂同时执行时还是可能碰撞。我在项目里直接用了带自碰撞检测的多目标优化求解器,牺牲一点实时性但稳定性大幅提升。
动作后处理环节也容易被忽视。模型输出的动作轨迹可能包含高频抖动,直接发给底层控制会出现机构振动。我的做法是用一个轻量的低通滤波器或滑动平均器平滑动作序列,再发给控制器。要注意的是,平滑系数不能设太大,否则引入额外时延,可能会让整个闭环失控。
4.4 双臂协调控制的工程细节
双臂协调控制是双臂VLA部署中最容易出现"系统级炸裂"的环节。哪怕模型输出了完美的双臂动作意图,底层控制协调不好,真机照样乱成一团。
我重点讲三个细节:
第一个是双臂控制的同步周期。两个机械臂是独立控制器,如果不做同步,可能出现"一只手臂已经到达目标、另一只还在半路"的时序错位。解决办法是,上层规划器给两只手臂下发同一周期的目标轨迹,并加同步屏障等待两只手臂都完成当前片段后再更新下一段。这个方案在项目里实现了简单、效果最直接。
第二个是力控制的引入。很多双臂任务,比如装配、插拔、夹持,本质都是"力约束"任务,不是"位置跟踪"任务。位置控制会把机器人的刚性发挥到极致,物体稍微有点弹性变型就出问题。我的经验是,在双臂末端执行器上加六维力传感器,切换到阻抗控制模式,让机器人对外界力有柔顺性。VLA模型输出的还是末端位置轨迹,但底层控制器会根据反馈力自动调整实际轨迹,这个"上层出意图、下层做柔顺"的分工在真机上非常有效。
第三个是安全机制。双臂在狭小空间运动时,碰撞风险比单臂大得多。一定要在部署系统里加实时自碰撞检测和无碰撞规划校验:一旦检测到双臂在下一个控制周期可能碰撞,系统要能自动降速或停机。我见过不止一个项目在demo演示时因为忘了加安全限制导致机械臂互撞,损坏了末端执行器。这个教训一定要记下来。
5. 现阶段主流方案对比与选型地图
5.1 代表性模型横向对比
为了让大家有个直观把握,我把目前能接触到的几个代表性模型放在一张表里对比:
| 模型 | 动作表征 | 双臂支持程度 | 开源程度 | 泛化能力 | 推荐场景 |
|---|---|---|---|---|---|
| RT-1 | 离散token | 弱(单臂为主) | 部分 | 中 | 入门学习 |
| RT-2 | 离散token | 弱(单臂为主) | 部分 | 强 | 学术研究 |
| OpenVLA | 离散token | 弱(需改造) | 完整 | 中 | 二次开发 |
| π0(含复现) | 流匹配 | 中 | 复现版较多 | 强 | 精细操作 |
| RDT | 离散token | 强(原生双臂) | 完整 | 强 | 双臂真机部署 |
这张表的"双臂支持程度"一栏是我特别想提醒大家的:真正原生支持双臂的模型目前只有RDT和少数几个新出的开源项目,其他模型的双臂能力基本都是社区后来加上的,稳定性和通用性都还没经过大规模验证。
选择模型的逻辑,我总结成三句话:入门看OpenVLA(资料多、易上手);做精细操作看π0(流匹配真香);做双臂真机部署看RDT(原生支持、少折腾)。如果你的团队有强算法背景,也可以基于某个VLM自己接动作解码器,但坦白说,从零搭建的时间成本极高,不如先站在开源模型的肩膀上把系统链路跑通。
5.2 双臂任务选型的难易梯度
很多团队上来就想做"双臂抓取拼接"这种高难度任务,结果模型训了几个月也搞不定,非常打击士气。我的建议是任务选型要有一个难易梯度,从易到难逐步突破。
入门级双臂任务:双手搬运。两只手臂分别托举物体的两端,同步移动放到目标位置。这个任务的关键是"双臂速度同步",对模型的动作语义理解要求不高,适合作为双臂VLA的第一个验证任务。
进阶级双臂任务:双手协作装配。比如一只手固定零件、另一只手拧螺丝或插接件。这类任务要求模型理解"主动手和辅助手"的分工,是双臂VLA的核心价值场景。
高阶级双臂任务:动态双手操作。比如双手倒水、双手撕包装、双手揉面团。这类任务对力控和时序协调要求极高,目前的VLA模型还很难稳定完成,是科研前沿。
选型时我的经验是:先让模型在一个简单双臂任务上跑通全链路,哪怕只是"双手搬砖",也能帮你暴露大量数据、架构、部署层面的问题。把这些问题解决后,再向高级任务推进。
5.3 算力需求与成本估算
VLA训练的计算成本很容易被低估。以目前主流模型为例,预训练阶段的算力需求通常在千卡GPU时级别,微调阶段相对便宜,但也需要几十到几百卡GPU时。如果不是大机构或大厂实验室,自研预训练基本不现实,实际的策略是站在开源预训练权重上做微调和真机部署。
我算一笔账:在8卡A100集群上,用开源权重微调一个几亿参数的VLA模型,训练一两天大概需要几千元到上万元电费与云资源费。如果是多轮实验和真机采集数据的时间成本,整个双臂VLA项目从零到demo,预算在几十万元量级是正常的。真机硬件成本因机械臂型号而差异巨大,建议优先选择带力控和高速通信接口的双臂本体,不然算法再好也很难在真实系统上施展。
5.4 商业落地视角:哪些场景值得优先切入
从商业价值看,双臂VLA最值得优先切入的场景有三个:
第一个是工业柔性装配。与传统工业机器人不同,VLA驱动的双臂机器人可以对工件位置和装配误差有一定容错能力,适合小批量、多品种的柔性产线场景。目前很多做3C装配和汽车零部件装配的公司已经开始测试这类方案。
第二个是物流打包与拆包。双臂配合拆快递箱、分类摆放、打包封箱,这类任务对人类来说非常基础,但自动化程度一直很低,原因就是太依赖视觉理解与双手协同。VLA恰恰补上了这个短板,一旦成熟,仓储场景的落地空间非常大。
第三个是家庭服务。双臂协作做家务,比如煮饭备餐、洗碗整理、照顾老人,市场空间毋庸置疑,但技术难度也最高。这个场景适合有长期技术积累且不急于短期盈利的团队进入。
我个人判断,未来1-2年内,工业柔性装配和物流拆包会是双臂VLA最先落地变现的两块。
6. 常见问题与排查技巧实录
6.1 训练不收敛或收敛后效果差
训练双臂VLA时,我遇到最多的问题就是"loss明明在降,真机一跑就废"。这个现象背后的原因通常有三类。
第一类是数据没对齐。最常见的是视觉帧和动作帧错位,模型学会的是"滞后一拍"的动作反应,真机上就会表现为动作迟钝或抖动。排查方法是:在训练加载器里可视化一组数据的图像与动作叠加,确认每一帧图像的机械臂位置和动作标签一致。
第二类是动作空间未归一化。双臂动作维度过大,有的维度数值范围差异巨大——位置在0到1米,姿态可能在-3到3弧度,如果不做白化归一化,模型会倾向于拟合数值大的维度,导致姿态或位置预测不平衡。解决办法是按数据集的均值和方差做标准化,模型输出再反标准化回真实动作值。
第三类是模型容量不足。双臂任务复杂度远超单臂,如果模型参数太少,训练集的loss都降不下去,那就不是调参能解决的问题。这时候要么换更大的预训练模型,要么减少任务复杂度,先做单任务双臂训练,再逐步扩展。
6.2 真机出现抖动、漂移或碰撞
真机部署阶段的故障,我按频率排序,最常遇到的是抖动、漂移和碰撞。
抖动问题一般是高频振动,来源大多是动作后处理的平滑不足或控制频率不匹配。排查时先看模型输出的动作轨迹是否平滑,如果轨迹本身是平滑的,再看底层控制器增益是否过高,最后看机械臂的结构共振频率。
漂移问题指的是机械臂末端实际位置缓慢偏离目标位置。常见原因是长期执行累积误差或视觉标定不准。双臂场景还要额外检查"双臂基座标定的相对关系"——如果两台机械臂的基座坐标系没有精确标定到同一世界坐标系,模型输出的双臂协同动作就会逐渐错位。我吃过这个亏,后来强制要求每次实验前做一次双手标定校验,问题基本消失。
碰撞问题是最严重的,通常出现在双臂同时运动到同一区域时。排查时要检查"碰撞检测的预测时域"是不是太短——如果碰撞检测只覆盖了当前控制周期的轨迹,但双臂速度过快,泄露几毫秒就来不及规避。我的建议是,碰撞检测的预测时域至少覆盖未来200毫秒的轨迹,同时预留安全减速距离。
6.3 遇到奇怪的模型行为
VLA模型有时候会出现一些特别"反直觉"的行为,比如听到指令后先旋转手腕再移动,或者双手在物体前反复试探。
我分析过这类行为的成因,最主要是训练数据里存在"多模态动作分布"——同一个指令在数据集中对应了多种不同的动作轨迹,模型学出来的是一个平均或模糊的策略,表现出来就是动作犹豫或怪异。解决办法有两条:一是清洗数据,尽量保证每个指令对应的动作模式单一;二是改用流匹配这类支持多模态生成的模型结构,让模型可以"选择"一种合理的动作模式而不是"平均"所有可能。
另外一个容易被忽略的原因是语言指令的歧义。如果指令写的是"把瓶子拿过来",但数据集里"拿过来"这个动作包含左手拿、右手拿、双手拿三种情况,模型就只能猜。指令标注一定要明确到手部分配,比如"双手托住瓶身放到桌上",这对模型行为的一致性影响非常显著。
7. 未来发展趋势与个人总结
7.1 三个关键趋势
从目前的技术进展和行业需求看,我判断双臂VLA接下来有三个关键趋势。
第一个趋势是"世界模型"的引入。现在的VLA本质还是"看到什么答什么",缺少对物理规律的内部模拟能力。未来如果能引入世界模型,让模型在决策前先预测"如果左手这样推、物体会怎么动、右手应该怎么接",双臂协同的泛化能力会有质的飞跃。这个方向已经有前沿实验室在布局,值得重点关注。
第二个趋势是"低成本的硬件+云端大脑"架构。双臂机器人硬件成本正在下降,但VLA模型推理仍然需要大算力。未来的落地形态很可能是"端侧轻量感知+云端大模型推理",用低时延网络把图像上传到云端VLA服务,再把动作指令下发到真机。这种架构能大幅降低终端硬件成本,是中小团队切入双臂VLA的重要机会。
第三个趋势是数据飞轮的形成。随着更多双臂机器人部署到真实场景,实际运行中产生的有效操作数据会被回流到训练集,形成"越用越强"的数据飞轮。谁能率先跑通这个闭环,谁就能在双臂VLA领域建立起长期壁垒。
7.2 给新手和团队的实用建议
最后分享几条切身的建议,都是我踩过坑后总结的。
第一,先花两周时间摸透数据工具链,再开始训模型。VLA项目大部分时间不是在调模型,而是在处理数据。把数据采集、清洗、标注、格式转换这一条流水线磨顺,后面会轻松十倍。
第二,从已有开源模型起步,不要全职自研架构。现在开源社区够用了,RDT和OpenVLA足够做大多数任务验证。等你的团队对VLA的理解足够深入、业务也确实需要差异化架构时,再考虑动结构。
第三,真机调试一定要设置安全兜底。不要拿demo演示赌模型的稳定性,任何设备都可能出异常。给机械臂加限位、加力度阈值、加急停开关,这是对设备负责,也是对项目进度负责。
第四,保持对前沿论文的跟踪。双臂VLA是一个快速演进的领域,可能每两三个月就有新架构或新数据集发布。我通常在arxiv和开源社区保持高频输入,看到有潜力的复现工作就快速上手验证,这种敏感度在快速变化的技术赛道里非常有用。
我记得第一次在真机上看到双手机器人协同完成拧瓶盖任务的那一刻,两个臂的动作都不算快,但那种"一只手稳稳扶住、另一只手精准发力"的协调感,让我切实感觉到这个方向已经跨过了最基本的门槛。后面要走的路还很长,但方向已经足够清晰。如果你也在做双臂VLA,欢迎多交流数据和部署环节的实际经验——这种看不见的坑,只有踩过的人最懂。