多伦多大学让机械手臂秒懂人类语言并精准抓取物体

这项由多伦多大学、Vector Institute、不列颠哥伦比亚大学和Google DeepMind联合开展的研究,以预印本形式于2026年7月22日发布在arXiv平台,论文编号为arXiv:2507.20207v1,研究方向归属于计算机科学-机器人学领域。感兴趣的读者可以通过该编号在arXiv上查阅完整论文。
**机器人抓东西,比你想的难多了**
假设你对着一个机器人说:"帮我把那个平底锅拿起来,但要抓锅沿,不要碰锅柄。"对大多数人来说,这个指令听起来再简单不过——你已经清楚地说了要拿哪个物体、要抓哪个位置、还要避开什么地方。然而,对于目前绝大多数机器人来说,这个看似简单的任务其实是一道极其复杂的难题。
这里的困难不是单一的,而是好几层叠在一起的。首先,机器人要理解"平底锅"是什么,它在一个杂乱的桌面上长什么样;其次,它要明白"锅沿"在哪儿,而不是随便找个地方抓;第三,它的机械手(可能是两根手指夹子、可能是三根手指爪子、也可能是五根手指的仿人手掌)要在不碰到周围其他物品的情况下,以一个稳定的角度和姿势完成抓取动作。如果周围还放着一堆其他杂物——奶锅、砧板、水杯……挤在一起,情况就更复杂了。
多伦多大学的研究团队正是为了解决这一系列叠加难题,提出了一个名为SeededGrasp的系统。这项研究的核心思路非常巧妙,可以用一个生活中的比喻来理解:当你请人帮你递东西时,你通常会先用手指点一下说"就抓这里",然后对方照着这个位置去抓。SeededGrasp就是让一个会看图懂语言的AI(也就是视觉语言模型,Vision-Language Model,简称VLM)先充当"指路人",在物体上点出一个合适的"起始抓取位置",然后再由一个专门负责计算抓取姿势的轻量级模型,根据这个位置精确生成完整的抓取动作。研究人员把那个被点出来的位置叫做"种子点"(seed point),整个方法的名字SeededGrasp也由此而来。
这项研究同时还有一个重要附赠品:为了训练这个系统,研究团队专门创建了一个全新的数据集,包含超过256万次的抓取姿势数据,覆盖三种不同类型的机械手,场景全部是真实的桌面杂乱摆放场景。这也是目前已知第一个同时具备"杂乱场景"和"多种机械手"这两个特点的机器人抓取数据集。
**一、机器人抓东西,之前为什么做不好**
在讨论SeededGrasp之前,有必要先回顾一下这个领域面临的主要困境,因为理解了这些困境,才能真正体会到这个新方案的价值所在。
机器人抓取研究领域走过了很长的历史。早期的方法更像是数学计算题——研究者们建立各种物理模型和优化算法,让机器人通过"分析受力"的方式找到稳定的抓取点。这类方法在简单环境下有时还能用,但一旦物体形状复杂、摆放混乱,计算就变得极其繁琐,实际应用中往往效率很低。
后来随着深度学习的兴起,研究者们转向了"数据驱动"的方式——收集大量真实或模拟的抓取数据,训练神经网络让机器人从经验中学习。这个方向确实取得了很大进展,涌现出GraspNet、DexGraspNet等一系列重要工作。但这类方法的大多数版本有一个共同局限:它们只知道"怎么抓",不知道"该抓哪里",更不懂"用户想要怎么抓"。
近年来,大型视觉语言模型(就是那种既能看图又能读懂文字的AI,比如GPT-4、Gemini等)的出现,让语言控制机器人抓取成为了可能。问题是,研究者们对如何结合VLM和抓取系统产生了两种不同的思路,各自都有明显的缺陷。
第一种思路是"端到端训练"——把语言理解和抓取生成打包成一个大系统,一起训练。这种方法的问题在于它需要海量带语言标注的抓取数据,同时训练成本极高,而且每换一种机械手就得重新来一遍,根本没办法规模化推广。第二种思路是"用VLM直接预测抓取"——让大模型看着图片,直接告诉机器人应该怎么握。这种方法的问题在于,大模型虽然懂语言、懂场景,但它对三维空间的理解能力有限,直接输出的抓取指令往往不够精确,实际执行时容易出问题。
SeededGrasp选择了第三条路:让VLM只负责它擅长的事——理解语言和场景,指出一个大致位置;让专门训练的抓取模型只负责它擅长的事——根据点云数据精确计算抓取姿势。两者各司其职,通过"种子点"这个简单而有效的接口连接起来。这就像公司里让懂业务的人提需求,让懂技术的工程师来实现,而不是强迫一个人把两件事都做完。
**二、数据集:256万次抓取,凭空怎么来的**
要让机器人学会在杂乱桌面上抓取各种物品,首先得有足够多的训练数据。现有的抓取数据集几乎都只覆盖单个物体悬浮在空中的场景——这相当于只在空旷的实验室里练习,从没见过真实桌面上的混乱。研究团队为此从零开始构建了一套完整的数据生成流程。
整个过程可以理解为在电脑里搭建了无数个"虚拟厨房"。每个厨房里随机摆上一到十个物品,这些物品来自两个广泛使用的3D物体数据库——Google Scanned Objects和YCB数据集,涵盖了从简单的几何形状到复杂不规则形状的各类日常物品。研究团队用了284种物体用于训练,另外留出50种未见过的物体专门用于测试,这样可以验证系统是否真的学到了通用能力,而不只是死记硬背。
摆放场景的生成方式模拟了真实的物理过程:先把物体随机扔到空中,再让它们自由落下堆在桌面上。这个过程产生了504个训练场景和106个测试场景,既有物体稀疏排列的情况,也有物体密集堆叠的情况。
抓取数据本身来自一个叫做MultiGripperGrasp(MGG)的现有数据集——这个数据集记录了大量针对单个悬空物体的理想抓取姿势。研究团队的工作是把这些"空中抓取"转化成"桌面场景抓取":对于每个场景中的每个物体,把与它对应的所有抓取姿势转换到整个场景的坐标系下,然后用一系列碰撞检测规则过滤掉不可行的方案。
过滤规则考虑了三个主要因素。第一,机械手必须从合理的角度靠近物体,不能是从地面向上钻进去(角度要求大于0.5弧度)。第二,机械手的所有关节部分必须保持在桌面以上足够的高度(至少0.5厘米的间隙),不能凿进桌子里。第三,机械手和其他物体之间的穿透深度不能超过10毫米,避免产生明显的物理冲突。
最终生成的数据集包含三种机械手:Franka Panda(两根手指的标准机器人夹爪)、Robotiq 3-Finger(三根手指的工业用爪)以及Allegro Hand(仿人四指灵巧手)。三种手加起来共有约256万条有效抓取数据。值得注意的是,这三种手的数据量差异相当大——Franka Panda的有效数据最多,达到约161万条训练数据,而Robotiq和Allegro分别只有24.6万和16.1万条。原因很直观:两根手指的夹爪形状简单,在场景中更容易找到不碰到其他物体的空间;而三根手指或四根手指的灵巧手体积更大、形状更复杂,很多姿势在场景中都会跟别的东西碰撞,能通过过滤的比例自然更低。
为了让机器人在后续推理时能有一个"视觉参考",研究团队还为每个场景生成了点云数据——从东南西北四个方向各拍一张RGB深度图,融合在一起,再经过采样处理,得到一个包含2048个点的场景点云。同时,为了让VLM能在推理时看到整个场景,还拍了一张从正上方俯视的鸟瞰图。
**三、种子点:那个连接"懂语言"和"会抓取"的神奇接口**
整个SeededGrasp系统的工作流程,可以用一个"接力赛跑"的比喻来理解。第一棒由VLM负责,任务是读懂用户的语言指令,看懂鸟瞰场景图,找到目标物体上最合适的抓取位置,并把这个位置"点"出来——这个点就是种子点。第二棒由流匹配模型(一种生成式AI)负责,接过种子点这个"接力棒",结合三维点云信息,精确计算出完整的机械手抓取姿势。
第一棒的运作方式相当简洁:给VLM一张鸟瞰场景图,同时发送用户的语言指令(比如"拿起那个锅,抓锅沿"),然后VLM直接输出一个像素坐标——归一化到0到1000范围内的(y,x)值,表示它认为应该抓取的位置。这个像素坐标随后通过投影变换,映射到场景的三维点云上,变成一个真实的三维空间坐标。
有意思的是,这个过程完全不需要对VLM进行任何额外训练或调整——用的就是现成的、开箱即用的Gemini、GPT或其他VLM,只是给它一段精心设计的提示词(prompt),告诉它自己是机器人操作专家,需要根据任务要求找出稳定的抓取位置,同时列出几条关键要求,比如确保位置没有被其他物体遮挡、确保位置在物体表面而非空洞处、确保机械手尺寸能够包住那个位置等。VLM直接以JSON格式返回坐标和简短解释,整个交互干净利落。
第二棒的工作则在一个叫做"流匹配模型"(Flow Matching)的生成式AI框架下完成。如果你对这个技术不熟悉,可以把它理解为一种"去噪"过程——就像把一张模糊的照片一步步变清晰。这里的"模糊"是一个随机初始化的抓取姿势,"清晰"是最终精确合理的抓取姿势,模型负责在这两者之间规划出一条从模糊走向清晰的路径,并沿着这条路径一步步执行。
要让第二棒的模型工作,需要输入三类信息:种子点的位置(告诉模型应该在哪里抓)、场景三维点云(告诉模型周围有什么障碍)、以及当前使用的机械手类型(告诉模型要用什么形状的手抓)。模型把这三类信息融合在一起,经过一系列计算,最终输出一个完整的抓取姿势,包括机械手的空间位置、旋转角度,以及每根手指每个关节应该弯到哪个角度。
**四、模型里的工程细节,通俗来说是这么回事**
为了让上述系统真正好用,研究团队在模型设计和训练上做了一系列精心设计,值得专门介绍。
首先是点云的编码方式。场景点云有2048个点,机械手点云有1024个点。每个点不只是一个位置坐标,研究团队还为每个点附加了额外的几何信息——通过分析每个点周围邻近点的分布,计算出该点所在表面的法向量(可以理解为那个位置的"倾斜方向")和曲率(可以理解为那个位置有多"弯曲")。这些额外信息帮助模型更好地理解物体表面的形状特征,就像人在摸一个物体时,不只感知位置,还感知光滑还是粗糙、是平面还是弧面。
场景点云中的每个点还会被附加一个额外数据:该点与种子点之间的距离。这个设计让模型在处理整个场景时,能特别"关注"种子点附近的区域,就像你寻找东西时会优先注意离目标更近的地方。
这些点的信息经过Fourier编码(一种把普通数值转化为更适合神经网络处理的高维表示的方法)之后,输入到图卷积网络(GCN)中进行处理。图卷积网络会把每个点和它周围16个最近邻点的信息综合在一起,提炼出每个点的"特征向量"——一个长度为512的数值序列,编码了该点的所有几何语义信息。最终,这些每点的特征向量通过取最大值和取平均值两种方式被压缩成整个点云的"全局特征",再把种子点附近16个邻居的特征单独拼接进来,确保局部细节不被忽视。
为了支持多种机械手,研究团队还为每种机械手设计了一个可学习的"查询向量"——相当于一个专属的身份标签,512维,纯粹靠数据自动学习出来的。这个向量和点云的全局特征拼接在一起,共同送入下游的抓取生成网络。
抓取姿势本身被表示为一个多维向量,包含三维位置坐标、三维旋转角度,以及每根手指各关节的弯曲角度。由于不同机械手的关节数量不同——Allegro Hand有16个关节,Franka Panda只有一个手指开合量——所以统一用最大关节数(16)来填充,不够的地方补零,计算损失时把补零的部分屏蔽掉。这种设计让同一个模型能无缝处理三种完全不同的机械手,而不需要为每种手训练单独的模型。
训练时采用了L1损失而非更常见的L2损失,原因是L1损失对精确度要求更高,能让生成的抓取姿势更紧贴实际场景几何形状。采样训练时间步的Beta分布参数设置为偏向后期时间步,因为在"去噪"过程的后期,姿势已经基本成形,这时候的精度要求最高,需要模型特别认真对待。训练还引入了分类器自由引导(Classifier-Free Guidance)——在训练时有一定概率随机丢弃条件输入,让模型同时学会"有条件生成"和"无条件生成",推理时把两者的预测结果进行差值放大,让最终输出更贴近给定的场景和种子点条件。
推理时,不是从纯随机噪声开始"去噪",而是从一个靠近种子点的固定初始姿势开始。这个小技巧大幅减少了积分误差,让从t=0走到t=1的这段"去噪路径"更短、更稳定。最终用前向欧拉积分法(步长0.2,共5步)完成整个轨迹,生成最终的抓取姿势。
**五、三场比较实验,证明系统有多好用**
研究团队没有把所有功能打包在一起比较,而是沿着三个不同的维度分别验证系统性能,这样更能说清楚每个组件的贡献。所有仿真实验都在Isaac Sim(英伟达的机器人仿真平台)中进行,判断标准很简单:机械手能否把目标物体举起30厘米高而不掉落,且初始化时没有明显穿透其他物体。
第一个维度是与DexGraspNet2.0(DGN2.0)的比较——这是一个同样支持种子点条件抓取的方法,但只支持单一机械手。为了公平,研究团队只用Allegro Hand的数据来训练两个模型,然后在相同的场景上比较。结果是:当两个方法都使用DGN2.0自带的"抓取评分模块"生成的种子点时,SeededGrasp的成功率为66.22%,DGN2.0为53.15%,SeededGrasp领先约13个百分点。而当两个方法都改用VLM(Gemini 3.1 Flash)生成种子点时,SeededGrasp的成功率提升到72.97%,DGN2.0提升到66.67%——两种方法都因为换用更好的种子点生成器而得到改善,说明VLM确实比专门训练的种子点模块更擅长找准位置。值得一提的是,DGN2.0还需要额外的物体分割掩码作为输入,而SeededGrasp不需要,操作更简单。
第二个维度是与Geomatch的比较,后者是一个专门支持多种机械手的方法。在这个比较中,研究团队使用全部三种机械手的数据,测试复杂物体在杂乱场景中的抓取成功率。结果是SeededGrasp在三种手上的成功率均在71%到72%之间,而Geomatch仅为25%到38%之间,差距高达约35个百分点。失败原因很明确:Geomatch的设计思路是先预测接触点,再通过逆运动学(IK)优化算法算出关节角度。这个IK步骤非常脆弱,需要一个良好的初始猜测,而Geomatch用的启发式方法对复杂形状物体经常猜得不准。此外,从四个方向拍摄融合的点云会在物体底部产生空洞——因为没有摄像头能拍到桌面以下的部分——这导致Geomatch的IK算法经常出错。SeededGrasp直接生成完整姿势,不依赖IK,绕开了这个问题。
第三个维度是语言指令执行能力的比较,对手是ShapeGrasp和GraspMAS,两者都是利用VLM做零样本语言引导抓取的方法,只支持两根手指夹爪。研究团队专门创建了226个测试场景,每个场景配一条语言指令,其中164条是"简单指令"(直接说清楚要抓哪里),62条是"困难指令"(给出一个任务目标,需要推理才能知道应该抓哪个部位)。
结果上,SeededGrasp在简单指令下识别目标物体和正确部位的成功率为89.6%,困难指令下为80.6%,综合抓取成功率为58.2%。相比之下,ShapeGrasp在简单/困难指令下的识别成功率分别只有57.5%和51.6%,综合抓取成功率仅31.1%;GraspMAS更低,分别为42.5%和29.0%,综合成功率24.5%。两个基准方法都只依赖鸟瞰图,看不到点云中的三维几何信息,导致在复杂形状和遮挡情况下经常出错。ShapeGrasp把物体分解成若干凸形部件再选择,对本来就接近凸形的物体(比如一只鞋)容易过度分解或分解不足,导致抓取位置不准;GraspMAS则经常识别错物体,或者抓取位置太模糊,比如说要抓"鞋跟"却把机械手放到了整只鞋的中间。
**六、消融实验:哪些设计真的有用**
除了与其他方法的横向比较,研究团队还做了一系列"控制变量"实验,逐一验证系统中每个关键设计的贡献。
关于机械手的编码方式:前面提到系统用两种信息来表示机械手——机械手的三维点云和一个可学习的专属查询向量。实验验证了同时使用两者的重要性。去掉查询向量后,Franka的成功率基本不变(从71.38%变为72.41%,差异很小),但Robotiq从72.16%降到69.07%,Allegro从72.07%大幅降到59.01%。去掉机械手点云后,Franka依然影响不大,但Robotiq降到67.53%,Allegro降到62.16%。规律很清晰:形状简单的两指夹爪对编码方式不太敏感,形状复杂的三指和四指手则需要两种表示方式共同发力才能达到最好效果。
关于VLM的选择:研究团队测试了三个主流VLM。GPT 5.4的平均成功率最低,只有42.61%;Qwen 3.5 Flash达到54.42%;Gemini 3.1 Flash的平均成功率最高,达到71.87%,三种机械手的结果分别为71.38%、72.16%和72.07%,各方向都很均衡。不同VLM之间的差距非常悬殊——Gemini比GPT高出将近30个百分点。这说明VLM对空间位置的理解能力存在明显差异,选择合适的VLM对整个系统性能至关重要。使用推理增强版本的VLM(更复杂、更慢的版本)并没有带来额外的性能提升,说明标准版已经足够应对这个任务。
关于训练数据量:分别用25%、50%、75%和100%的训练场景重新训练,观察性能变化。结果表明,随着数据量增加,性能确实在提升,但在大约71.5%处趋于饱和,继续增加数据的边际收益越来越小。更有趣的是,对Franka Panda来说数据量的影响几乎可以忽略不计——因为每个场景里Franka有效抓取的密度很高,用25%的场景就已经够了。而Robotiq和Allegro则对数据量更敏感,减少数据后成功率下降更明显,这和它们在场景中有效抓取稀少的特点完全一致。
**七、从仿真到现实:78%的真实世界成功率**
在仿真中表现好是一回事,在真实世界中能否正常工作又是另一回事——这两者之间的差距在机器人研究领域被称为"sim-to-real gap"(仿真到真实的鸿沟)。研究团队专门设计了一套真实世界实验来验证系统的实用性。
实验使用的机械手是Delto DG-3F-B三指夹爪,这种手在训练数据中根本没有出现过——系统只见过Robotiq 3-Finger。研究团队的解决办法是一种简单的映射:把模型针对Robotiq生成的关节角度,用固定的偏移量转换成Delto对应关节的角度,对于Delto有但Robotiq没有的额外关节,则固定为一个合理的默认值。整个转换不需要重新训练,只需要做一次手工标定。
场景感知使用两台固定安装的ZED立体相机拍摄,生成场景点云。实验中选用了15个日常物品,包括毛绒玩具(粉色鲨鱼、红色小狗)、生活用品(纸巾卷、纸巾筒)、鞋子(蓝色运动鞋、灰色皮鞋)、橡皮鸭(大号和小号)、蓝色毛巾、自行车头盔、棕色水桶、蓝色杯子、绿色瓶子和彩色扫帚。每个物体测试10次,每次场景中还额外随机摆放4个干扰物体。
最终整体成功率为78%。在15种物体中,表现最好的是红色毛绒狗、纸巾卷、纸巾筒和小橡皮鸭,各自成功9次(90%)。表现较弱的是大橡皮鸭和绿色瓶子,各成功6次(60%)。失败的主要原因是机械手落点偏移——机械手靠近目标位置后,手指闭合时物体已经不在手指正中间,导致夹空。这个问题在抓取姿势角度比较倾斜时更容易出现,因为从倾斜角度接近物体时,轻微的位置误差会被放大。
**八、局限与未来:还有哪些问题没解决**
研究团队在论文中也坦率地指出了SeededGrasp目前的几个明显局限,这种坦诚同样是这项工作值得关注的地方。
当前系统只负责预测一个抓取姿势,完全不考虑机器人手臂的可达范围和关节限制。在真实部署中,机械手是装在机器人手臂末端的,手臂有自己的关节范围,不是所有位置和方向都能到达。系统现在可能生成一个几何上完全合理的抓取姿势,但手臂在避障的同时根本够不到那个位置。未来的工作需要把抓取规划和运动规划结合起来,让系统知道什么姿势不仅合理而且可达。
系统目前只接受单张鸟瞰图输入给VLM,这在遮挡严重的场景中会遇到问题——如果目标物体在鸟瞰图里被其他东西遮住了一半,VLM就没有足够信息判断最佳抓取位置。引入多视角图像输入,让VLM能从多个角度综合判断,是一个自然的改进方向。
关于多机械手支持,当前每种机械手对应一个独立的可学习查询向量,这意味着对于从未见过的新型机械手,系统无法直接泛化,需要有一些数据才能学出它的查询向量。如果能改为用关节空间的统一参数化来描述机械手形态,也许能实现真正意义上对任意新型机械手的零样本泛化。
还有一个数据层面的局限:训练数据来自MGG数据集,其中抓取方式以"力量抓握"(整个手握住物体)为主,像捏住一张扑克牌边缘这类"精细抓握"的数据很少。对于那些平放在桌面上的薄平物体,系统表现会更差,因为它从没见过类似的训练样本。
说到底,SeededGrasp做的事情在机器人研究领域里是一次务实的工程选择:不追求一个端到端包打一切的大系统,而是把"懂语言"和"会抓取"这两件事拆开,让各自最擅长的模块来负责,再用一个轻量级的接口把它们串起来。这个"种子点"接口设计之精妙在于,它既足够精确(是一个具体的三维坐标),又足够抽象(不需要告诉VLM如何弯曲手指),完美匹配了VLM和抓取模型各自的能力边界。
从72%的仿真成功率和78%的真实世界成功率来看,这套系统已经具备了相当程度的实用价值。更重要的是,因为VLM模块是即插即用的,随着Gemini、GPT等大模型空间理解能力的持续提升,整个系统的性能理论上会自动水涨船高,而不需要重新训练抓取模型。这种"搭便车"的模块化设计思路,或许比单纯追求当前性能数字更有长远价值。对于真正想让机器人走进日常生活的研究者来说,这项来自多伦多的工作提供了一条颇具参考价值的路径。如果想进一步了解完整的技术细节,可以通过arXiv编号2507.20207查阅原论文,研究团队也公开了数据集和代码,地址在论文对应的项目主页上。
---
Q&A
Q1:SeededGrasp系统中的"种子点"具体是什么,有什么作用?
A:种子点是VLM在场景图像中"点出来"的一个位置坐标,表示机器人应该在哪里抓取目标物体。它的作用是把语言理解(VLM负责)和精确抓取规划(流匹配模型负责)这两件事连接起来——VLM只需告诉系统"去哪里抓",后续模型再计算"怎么抓",两个模块各司其职,不需要一起训练。
Q2:SeededGrasp的训练数据集是怎么生成的,为什么需要专门创建?
A:现有的机器人抓取数据集几乎都是单个物体悬浮在空中的场景,没有同时涵盖杂乱桌面场景和多种机械手的数据集。研究团队在电脑里模拟了610个桌面场景,把现有数据集中的"空中抓取"姿势转换到桌面场景坐标系,再用碰撞检测过滤掉不可行的姿势,最终得到涵盖三种机械手的256万条有效数据。
Q3:SeededGrasp为什么在真实世界实验中使用了一个训练时没见过的机械手?
A:真实实验用的是Delto三指夹爪,而训练数据里只有Robotiq三指夹爪。研究团队用一个简单的关节角度映射(固定偏移量)把Robotiq的预测直接转换给Delto用,完全不需要重新训练,最终依然达到了78%的成功率。这证明系统学到的抓取知识有一定的跨机械手迁移能力。