首页 / 资讯中心 / 文章详情

双臂具身VLA全解析:从原理、数据到部署实战

双臂具身VLA全解析:从原理、数据到部署实战 ★ FEATURED ARTICLE
说实话我入这行的时候VLA这个说法还没几个人听得懂。我和团队一开始做双臂操作脑子里全是传统控制的思路规划、避障、插补后来被逼着把视觉模型、语言模型和机器人策略揉到一起才慢慢把这条路走通。写这篇东西就是想把“双臂具身VLA到底怎么来的、现在走到哪一步了、从零开始该怎么上手”这几个问题一次性讲透。给正在看论文、搭平台、或者被老板丢了个“双臂抓取”任务的同行当一个能直接用的背景参考。1. 从零开始理解VLA三个模态的合流与“双臂”的特殊坐标1.1 三条线的合流视觉、语言与动作的交叉点在哪VLA三个字母对应视觉、语言、动作但别把它想成是某个全新发明。往深了看它是计算机视觉、自然语言处理和机器人控制这三条老路的交叉点。传统机器人控制很早就有视觉但那时的视觉模块只负责“告诉机械臂零件在哪”输出一个坐标就够了。语言这边更不用提过去几十年机器人跟人交互基本靠示教器靠预设的指令码。真正的变化出现在大模型把“看”和“说”拉通以后——神经网络能把一张图和一个句子放进同一个特征空间语义信息和像素信息互相增强这时候人们发现机器人也能直接“听懂”一句自然语言再把它映射成手臂动作。这个交叉点就是VLA诞生的位置视觉编码器负责理解当前场景语言模型负责理解任务目标动作头负责把目标和实时画面变成电机指令。简单说前端是“眼睛”和“耳朵”后端是“手”中间用同一个网络把它们连起来。1.2 为什么偏偏是“双臂”双手协同与单臂有本质差异有人会问单臂装个VLA不行吗也能做很多早期工作就是单臂抓取。但一旦进入真实的整理、组装、倒水这类任务单臂的短板就暴露了。人做大多数事都用两只手一只手扶着物体另一只手操作一只手打开盖子另一只手递东西。想让机器人在真实场景里有用双臂不是“升级选配”而是基本配置。双臂给算法带来的不是翻倍的复杂度而是指数级的麻烦。两只手在同一空间里运动互相遮挡、碰撞、抢夺同一目标动作还需要在时间上保持协调。“左手拿碗、右手拿勺”看起来简单但两条轨迹必须在几十毫秒的时间尺度上同步一只手慢了另一只手要么撞上去要么任务失败。再加上双臂的感知视角往往来自同一组相机左手可能挡住右手的观测目标这些问题在单臂任务里完全不用考虑到双臂场景就成了每天都要面对的日常。1.3 一条综述文该回答的三个核心问题我给团队新人讲这个方向时通常让他们带着三个问题去读资料第一VLA和上一代机器人控制逻辑相比究竟改变了什么第二从输入到输出一条自然语言任务怎么一步步变成双臂的位置、速度和力度第三现在大家被卡在哪个环节瓶颈是模型、数据还是硬件。这三个问题也正好对应这篇文章的结构。起源部分回答第一个问题机制部分回答第二个现状和瓶颈部分回答第三个。通了这条脉络再看那些漫天飞的论文、框架和评测心里就有坐标了。2. 动手之前先看路手写规则、行为克隆到语言条件化动作生成2.1 传统机器人控制的天花板在VLA出现之前让一个双臂机器人完成任务做法大致是搭一套控制框架把任务拆成有限状态机写死每一个状态下的轨迹点。比如“靠近桌子-下降-夹爪闭合-抬起-移动到目标点”每个环节都由工程师手工设计视觉只负责探测物体位姿把结果喂给规划器。这套方案在固定产线上是可靠的因为环境、物体位置、光照都被严格控制。但问题也很明显一旦物体位置偏了几厘米或者来了一个没见过的工具规则就失效了。双臂配合要手调的东西更多两条机械臂的碰撞空间、互相等待的时序、左右手的力分配每一处都要写逻辑。我见过很多团队在双臂项目上花几个月调状态机最后依然只能在一个固定的演示位上稳定工作。这不是工程师能力不够而是手写规则在“非结构化协作”这两个条件下复杂度早就超出了人能维护的边界。换个说法这条路不是不能走但走不远每增加一个任务工作量不是线性增长而是指数增长。2.2 行为克隆让机器人直接“照抄”人的演示后来这个方向被一群做模仿学习的人改变了。思路非常直接既然手写规则难那就让机器人看人是怎么做的然后照着学。操作者用手柄或者遥操作设备操控机械臂完成一遍任务把“视觉画面-动作数据”成对记录下来神经网络用这些数据训练学一个从图像到动作的映射。这就叫行为克隆最早的端到端机械臂控制模型基本都是这个路子。严格说行为克隆不新鲜很多人知道的“DAgger”算法就是迭代式行为克隆的典型代表。但近两年的突破在于网络结构换成了更擅长处理视觉和序列的Transformer再加上扩散模型天生就适合生成连续动作序列直接带火了“从演示中学习复杂操作”这个方向。我的经验是选任务时别一上来就让机器人学双手穿针引线先让它学“双手搬运一个长条物体”这种基准任务轨迹稳定、成功率高又能验证双子协同的基本能力。2.3 语言模型进场把“干一件事”拔高成“听一句话做事”行为克隆能学动作但学出来的策略完全绑定在训练时的指令设定上。它可能学会了“握住杯子”但你换一句“把杯子慢慢放到托盘里”它就不知道你在说什么了。大语言模型的出现恰好补上了这层“语义理解”。更关键的不是让语言模型直接输出动作而是让语言成为动作生成的条件一段任务描述和一个当前画面共同输入给模型模型输出的动作不仅依赖画面还依赖这句话。这一步转变很重要它把原来“一个任务训练一个模型”的僵局变成了“一个模型通过语言指令切换多种行为”的开放范式。任务指令“拉开抽屉”和“把杯子放进去”在同一套网络里被编码成不同的动作倾向完全不需要为每个任务单独训练。2.4 从“视觉-语言模型接机器人”到真正的VLA早期有些方案其实是“拼装”视觉语言模型负责看图和理解指令输出一个高层计划比如“先靠近杯子、再抓取”然后由另一套底层控制器执行。这个结构问题很大视觉语言模型输出的是文本不是电流信号中间和机器人硬件的鸿沟始终需要手工搭桥而且语义理解与动作执行是两套系统误差会在接口处被放大。VLA的提出本质上是对“拼装”的反叛视觉编码、语言理解、动作生成全放在同一个网络里联合训练从像素和文字直接到动作。这样做的好处不只是端到端的便利更重要的是语言信息能直接影响低层动作特征的选择视觉信息也能反过来帮助语言理解当前任务走到哪一步。双臂VLA把两只手的动作也一并纳入同一个输出空间这样实现之后模型的整体性和主动性都有了质的变化。3. 拆开VLA看本质观测、指令与双臂动作之间的那条通路3.1 输入侧第一关相机装在哪决定模型看到什么部署过机器人的朋友都知道视觉方案的细节会直接决定模型学习难度。VLA的输入通常是第三视角相机加一个腕部相机。第三视角相机负责“看清全局”哪只手在动、目标物体在哪、障碍物在哪腕部相机负责“看清局部”夹爪离物体还有多远、对准没有。这背后的逻辑很朴素双臂任务里两只手和一个目标物体之间经常互相遮挡单个固定视角根本不够。我见过不少失败案例都是只装了一个头顶相机左手伸过去以后把右手的目标挡得严严实实模型在那瞎猜。多视角输入不是VLA的发明但对VLA来说尤其重要因为网络要在遮挡场景里维持稳定的特征表示没有足够多角度的画面再强的模型也白搭。3.2 语言指令要“说到什么粒度”才不至于带偏模型语言条件不是把一句话塞进去就完事了。指令的粒度直接决定了模型的判断难度。比如“把苹果放到盘子里”这个粒度是任务级的模型要自己拆“拿起、移动、放下”这些子步骤。再细化成“把苹果从左边拿起放到盘子中央”这是步骤级的模型更容易执行。我的实践感受是训练阶段如果指令过短模型学出来会“自由发挥”经常出现抓一半就停在原地的情况指令过长又容易过拟合到特定表述换个说法成功率就掉。现阶段比较稳的做法是训练时用模板混合的方式让同一条轨迹对应多种表述方式比如“拿起杯子”“抓取桌上的杯子”“用右手拿起这个杯子”这样模型才会学会“语义对齐动作”而不是死记句子。3.3 输出侧核心动作空间的三层设计VLA的动作输出按抽象程度大致有三层设计。第一层是离散Token化把抓手的三维位置、旋转、夹爪开合映射成离散编号模型像生成文本一样逐个Token预测第二层是连续向量直接回归一个高维向量包含位置增量、姿态变化、夹爪状态第三层是扩散式生成引入噪声再逐步去噪效果在多项任务里更稳动作更平滑。这层选择不是越新越好而是看任务和数据的匹配度。双臂任务里两只手的动作自由度加起来很容易超过14个每个7自由度如果全用离散Token动作空间会膨胀得可怕连续向量省事但训练时容易震荡扩散模型能把这个问题当作生成过程来解在双臂高自由度场景里我目前更倾向扩散方案只是推理时需要多步去噪实时性要专门优化。3.4 双手协同的输出难题联合预测与分工预测的取舍双臂VLA最核心的结构设计是“左右手到底怎么输出”。最简单的做法是让网络同时预测两只手的动作——联合预测。好处是天然考虑了两手的相互影响模型会学到“左手前进时右手应该后退”这类协同模式。缺点是输出维度大、训练困难而且一旦两只手动作差异巨大联合预测容易互相“拖后腿”。另一种做法是分头预测网络共享视觉和语言的编码但左右手各接一个动作头。好处是每个头专注自己的手部运动模型在数据量有限时更容易收敛坏处是分裂了协同信息两个头在训练时可能“各管各”导致执行时两只手互相打架。我个人的偏好是先联合预测如果训练不稳定再退一步用带交叉注意力的双头结构——两个头内部有信息交换比完全独立强很多。3.5 主干网络选型统一的Transformer主干为什么更合适最后是主干网络。早期的机器人策略用卷积做视觉再用循环网络做序列建模勉强能跑但扩展性差。VLA时代基本都统一到Transformer主干视觉编码器把多路相机画面转成视觉Tokens语言指令转成文本Tokens拼接后交给Transformer做特征融合最后的动作头再解码成双手的控制信号。这个结构的价值在于语言和视觉能够在同一个注意力空间里互相“检索”。模型读到“右手”这个词时注意力可以偏向右侧相机对应的特征区域看到画面里有个杯子也能往语言指令里的“杯子”上靠。双臂任务里语言空间和视觉空间天然有更强的对应需求统一的Transformer主干是目前最合理的答案也方便继续加模块或做预训练。4. 数据决定上限双臂任务的采集、清洗与规模真相4.1 采集方式选型镜面遥操作、VR手柄还是动作捕捉双臂操作数据从哪里来很多人低估了这个问题的难度。主流有三种方式镜面式遥操作、VR手柄、光学动捕。镜面式是目前社区最常用的人在操作台前通过镜像手臂控制真实机械臂或仿真机械臂自己的一举一动被跟随着机械臂记录然后采集控制指令。VR手柄的门槛低、上手快操作者戴头盔抓两个手柄在仿真或真实场景里摆弄物体但精度和动态范围有限适合抓取这类大位移任务不适合精密的双手装配。光学动捕精度高能记录人手几十个关节的真实运动但设备贵、标定复杂更多用于数据实验。一句话总结追求真实操作分布优先镜面遥操作追求数据量优先VR追求高自由度精细数据再考虑动捕。4.2 双臂数据特有的坑时间同步、手眼标定和轨迹标注双手对时是一个非常容易翻车的细节。两个机械臂各自有控制频率比如左臂控制频率100Hz右臂控制频率60Hz录下来的轨迹稍微对不齐模型就会学到“两只手各动各的”。我的经验是采集时要把两臂的控制指令打上统一时间戳或者直接同步到同一个控制周期宁可用较低频率也要保证左右手动作和视觉画面严格对齐。手眼标定问题也很容易坑人。两个机械臂之间相对位姿标定不准模型看到左手画面前伸去抓杯子实际上真实空间里左手离杯子差了四五厘米。轨迹标注则是指每帧数据最好标记“正在执行哪个子任务”这样模型能理解任务边界不至于把整个轨迹当作一个行为来死记。清洗数据时把成功率低的演示直接过滤掉宁可数量少一些也不能要劣质动作污染网络。4.3 互联网级预训练数据和机器人数据为什么要“两手抓”VLA模型有一个特殊之处它通常需要两种性质完全不同的数据。一种是互联网图文数据规模巨大、来源庞杂用来训练模型理解世界的基础语义比如“认识杯子”“理解桌子的概念”另一种是机器人操作数据规模很小、代价极高但包含了真正的“动作知识”是模型学会控制双手的关键。训练时两手数据都要用。只用图文数据模型会说不会做只用机器人数据模型能做固定任务但没有泛化能力。合理的比例我做过几组实验机器人数据占比太少时一种语言换一种场景效果就崩机器人数据占比超过一定范围后提升又会放缓边际收益下降。目前主流的做法还是先在大规模图文数据上做预训练再用机器人数据做后训练两手抓而不是互相取代。4.4 到底需要多少条演示从“能跑”到“稳定”的数据量经验这个问题是新人问得最多的但也是最难给出统一答案的。我的经验不能算精准但可以作为参考一个极简单任务单一物体、固定位置抓取两三百条演示就能训练出一个能跑的策略一个典型双臂协作任务双手搬运、倒水这类至少需要千条级别的演示如果想“换场景不翻车”最好在每个变化维度不同桌子高度、不同物体颜色、不同起始位置上补齐数据规模很容易破万。别被这些数字吓到数据量焦虑是整个领域都在面对的问题。务实一点的处理是先保证任务空间足够窄比如固定物体种类、固定桌子高度用千条数据把模型训稳再把变量一个个加进来。等数据积累多了再跟基座模型结合那些预训练带来的泛化收益才会充分释放。5. 现在的生态盘点模型、平台与一个从零起步的选型清单5.1 开源与闭源基座能力差异和落地成本怎么平衡到现在为止VLA基座模型已经形成了开源和闭源两条线。闭源基座通常能力更完整团队直接“租能力”就行不用自己训练和部署但代价是数据要交给别人定制化也受限。开源基座的优势是可控、可改、可私有化部署适合研究和产品团队做二次开发但通常需要自己准备足够的机器人数据去跑后训练对硬件和工程能力有要求。我建议从开源的成熟基座项目入手先别急着从零预训练。开源社区现在能找到不少能直接加载的VLA检查点和配套策略代码先把它们在公开仿真环境或自己的单臂简单任务上跑通能上手的难度会比从零低得多。等熟悉了数据格式、训练流程和推理接口再根据双臂任务需求改造动作头这条路径目前是最稳的。5.2 仿真环境与真实设备什么时候用仿真什么时候直接上真机仿真环境是VLA训练的重要帮手尤其是双臂场景真实操作数据太贵用仿真批量生成、自动标注、随机化场景能显著提升数据效率。不过仿真也有明显的坑视觉差异和物理差异会带来仿真到现实的鸿沟机器人在仿真里抓得稳稳的上了真机就抓空这几乎是每个人都要经历的教训。更实用的策略是“虚实结合”用仿真环境做预训练和泛化测试用真实数据做最终微调。先把场景光照、物体颜色、纹理做随机化让模型在仿真里见过足够多变的视觉输入再用真机数据校准真实世界的动作分布。双臂任务的仿真还要特别注意碰撞体设置两条机械臂在仿真里“穿模”穿习惯了真机上就会真实撞机。5.3 从零起步的推荐路线先跑通一个最基础的双臂任务如果你现在正要从零搭一套双臂VLA我给一条具体路线第一阶段找一个开源的成熟模型和基座配一个简单的双臂仿真任务比如“双手抬起一根横杆”目标是把数据采集、训练、推理、部署全流程跑通这一步的重点是理解数据格式和接口第二阶段把任务换成真实场景的双臂搬运用镜面遥控方式采集数据重点解决真机延迟、标定和同步问题第三阶段再尝试加入语言指令让同一个策略通过切换指令完成多任务。这个顺序表面上看很慢但每一步踩的坑都在可控范围内比一上来就挑战“双手精细装配”要稳得多。6. 真实手臂上的第一课部署一台双臂VLA系统会踩的坑6.1 相机安装与手眼标定给模型一双“不撒谎”的眼睛部署过程中最容易出问题的地方不是模型训练而是视觉系统的标定和安装。多视角相机之间、相机与机械臂基座之间、两个机械臂基座之间的坐标关系任何一处标定误差超过几个毫米都会在近距离操作中被放大好几倍。我的建议是相机布局尽量避开机械臂运动包络避免运动到某个角度时两只手把镜头完全遮住标定完成后要在工作空间内多个点位验证别只看单点精度。还有一个细节容易被忽略相机分辨率与工作距离的匹配。画面太大目标物体在图像里只占几十个像素模型很难提取精细特征画面太小又看不到全局。通常我会先录一段操作视频检查目标物体在画面中的像素尺寸是否大于某个阈值再决定相机的摆放距离和镜头的焦距。6.2 末端执行器选型二指夹爪与灵巧手对策略的不同约束双臂VLA的动作头最终要输出到末端执行器上。二指夹爪结构简单、控制量少通常只需一个开合信号模型训练起来轻松很多抓取稳定是目前双臂任务里最“宽容”的选择。灵巧手自由度动辄十几二十个动作空间急剧增大对模型输出的精度和数据量的要求都成倍上升换来的只是更多样的抓持姿态和物体适配能力。如果你还在验证VLA技术路线我强烈建议先上二指夹爪把主流程跑通。等模型已经能可靠完成一批任务再考虑换灵巧手这时候你会发现动作头的输出维度、训练数据的复杂度、推理的实时性全都要重新调整一遍。硬件选型永远要服务于策略能力别让末端执行器先于算法成为瓶颈。6.3 推理延迟模型想好了手却已经晚了VLA模型通常体积不小推一幅图加一条指令的动作输出在消费级显卡上可能要几十毫秒到上百毫秒。机器人控制系统希望控制指令来得越快越好双臂协同场景尤其敏感两只手之间本来就需要同步如果推理延迟不一致左臂已经出发右臂还在等输出配合就会烂掉。优化思路有几层量化模型权重、用TensorRT或类似方案做推理加速、把视觉编码器输出做缓存画面没变就不重复推理、以及用低延迟的动作预测头替代重型的生成流程。还有一种更务实的办法是降低控制频率比如把机械臂的控制频率锁定在30Hz左右同时让模型输出“未来几步”的动作序列用插值方式平滑执行。延迟优化的目标不是“跑得越快越好”而是“输出的动作在执行时仍然成立”。6.4 安全与限位双臂大惯性下的硬约束双臂相比单臂运行时的危险性更大。两只机械臂各自都有几千克的负载能力运动中一旦撞到人、撞到彼此或撞到设备后果都不是小事。部署VLA之前一定要把关节软限位、速度限制、力度限制和急停逻辑全部测通。我见过不止一次模型在推理阶段突然输出异常动作如果不是速度限制兜底机械臂直接甩到最大速度整个工作台都会被撞飞。实际项目中我通常会给神经网络的输出加一层“安全过滤器”动作增量过大时进行限幅目标位姿超出关节限位时进行投影力度超出阈值时立即停止。这层逻辑不能依赖模型自觉必须放在模型和底层控制器之间独立运行。模型可以在安全边界内“自由发挥”但永远不能让它有机会把机器人带出安全域。7. 还没打完的硬仗泛化、评价与下一步该卷什么7.1 泛化难题换个桌子颜色、换盏灯策略就失灵VLA领域最让人头疼的问题还是泛化。训练时模型在米白色桌子、固定窗户光线下抓得很好你把它挪到深色桌面、射灯环境下成功率瞬间掉一半。语言层、视觉层预训练给的泛化大多是语义层面的动作层仍很容易过拟合到训练时的视觉表面特征。提升泛化的现实手段还是那些视觉数据增强颜色扰动、亮度扰动、随机裁剪、场景随机化不同桌面、不同物体位置、多视角采集。但每个人的经验都是——没有一个银弹。模型规模越大、预训练数据越丰富泛化表现越好但为了一个实际任务去买超大算力对多数团队并不现实。务实做法是限制部署环境的变动范围同时针对性采集目标环境的少量数据做微调。7.2 长程任务一个动作不能错错了整条任务就废掉双臂VLA短程任务表现已经不错但一旦任务被拉长到“整理一整个台面”模型会在执行几个动作后逐渐积累错误。某个物体位置偏移两厘米后续动作全部跟着偏一个环节失败整个任务就要从头开始。长程任务需要让模型具备“看到结果、自我纠错”的能力但这恰恰是目前VLA最弱的地方。一种绕开这个难题的思路是把长程任务拆成短程子任务再用语言模型做高层调度先让视觉模型判断当前台面状态再让语言模型决定“下一步该做什么”最后让VLA执行这一步。这样把“长程规划”和“短程控制”分层处理虽然牺牲了端到端的纯粹性但工程上是当前最可用方案。7.3 评测指标成功率之外还有更多值得被记录的东西现在很多工作都用“成功率”作为唯一指标我对此一直有保留。成功率确实直观但信息量太少任务成功但非常笨拙、成功率相同但稳定度完全不同这些差异都被一个数值掩盖了。双臂任务还应该看成功路径的平均时长、左右手配合的流畅度、失败时的错误类型分布、以及在连续运行多轮后的可靠性。我给团队做评测时会同时记录成功率、平均操作耗时、碰撞次数、人为干预次数和首轮成功率。这几个指标放在一起才能看清模型的真实水平。比如一个模型综合成功率看似不错但每次完成任务都要人类在旁边修正两次那它在真实环境里就远没有“看起来能落地”。7.4 下一步的方向强化学习、世界模型与更灵巧的末端站在现在这个节点往后看我判断接下来的几个方向会持续升温。一个是VLA与强化学习的结合用强化学习在仿真或真机上专门优化模型输出策略改善数据不足时动作不忍直视的问题。另一个是世界模型方向让模型对“动作之后世界会变成什么样”有预判这对长程任务和纠错能力是本质性的提升。末端执行器也会变得更复杂。灵巧手、柔性手、带触觉传感的抓手会不断把新的感知维度带入VLA的输入输出让模型不止看画面还能“摸到”物体。这条路线还很早期但双臂具身VLA真正的产品形态大概率会从这些更丰富的感知和控制能力里长出来。说句掏心窝的话VLA这个方向还远没到盖棺定论的时候。模型架构、数据范式、评测标准每一层都还在快速变化。如果你正带着团队往这个方向冲我的核心建议只有一句先把一条最简单的双臂任务端到端跑通把数据、模型、真机之间的每一环都吃透再考虑追新架构。技术迭代快但工程基本功永远是慢变量那些标定、同步、限位的经验换多少个模型都用得上。这个领域现在的门槛没有想象中高但坑也绝不少希望这篇梳理能帮你少走几段弯路。
阅读完成 · 觉得有帮助?
咨询建站