PhysCaP:当机器人学会“掂一掂再决定”
发布时间:2026-08-25 22:15 浏览量:1
你有没有想过,一个机器人要扔掉一个空罐子,光靠"看"够不够?
答案是不够。一个封了口的可乐罐和一个插着吸管、已经喝空的可乐罐,长得几乎一样。人类会怎么做?拿起来晃一晃,感觉一下轻重,立刻就知道该不该扔。可现在市面上那些能叠衣服、能整理桌子的机器人大脑,看再多的图片,也猜不出罐子里到底还有没有可乐。
这不是一个小问题。它揭示了当前机器人智能一个挺尴尬的短板:只会"看",不会"摸"。而这篇来自台湾大学、NVIDIA Research 等团队联合完成的论文,提出了一个叫 PhysCaP 的系统,试图把这个短板补上。
视觉智能的天花板:看得懂,但摸不着底
先说说现在最火的机器人技术能做到什么程度。
视觉-语言-动作模型
(VLA,Vision-Language-Action Model:一种直接把摄像头看到的画面和文字指令翻译成机器人动作指令的AI模型)
比如 RT-2、OpenVLA、π0.5这些模型,靠着海量的示范数据训练,已经能完成叠衣服、摆放物体这类相当复杂的操作任务。听起来很厉害对吧?但问题在于,这些模型本质上是在模仿人类做过的动作,它们学的是"看到这个场景该做什么动作",而不是"我该主动去弄清楚一些看不见的信息"。
打个比方,这就像一个背熟了菜谱的厨师,能精确复刻每一道菜的做法,但如果你给他一个不知道熟没熟的牛排,他没有办法凭经验去戳一戳判断火候,因为菜谱里从来没教过他"怎么判断"这件事,只教过他"炒到多久该翻面"。VLA 模型的问题就在这里:它们是被动观察者,而不是主动的信息探索者。
那强化学习
(Reinforcement Learning,RL:一种让AI通过不断尝试、根据奖励反馈调整策略的学习方法)
是不是能解决这个问题?理论上可以,让机器人在环境里反复试错,慢慢学会"晃一晃罐子来判断轻重"这种探索行为。但现实是,这类探索行为往往要等很久才能得到奖励信号,比如晃完罐子之后要过好几步才知道判断对不对,这种延迟且稀疏的奖励让训练变得极其低效。而且强化学习训练出来的策略往往是一个黑箱,你很难说清楚它到底为什么会做出某个动作,出了问题也难以修改。
在这两条路都不太顺畅的情况下,另一条路线开始被重视,叫做
代码即策略
(Code-as-Policy:一种让大语言模型直接生成可执行代码来控制机器人的框架,而不是训练一个端到端的神经网络)
。这类系统的思路是,把感知、推理、记忆、控制这些模块拆开,用大语言模型
(LLM,Large Language Model:像GPT这样通过海量文本训练出来的、能理解和生成自然语言的AI模型)
去调用这些模块,写出一段段可执行的程序来控制机器人。这样做的好处很明显,整个决策过程是透明的、可解释的,你能看到机器人每一步在想什么、要做什么。CaP-Agent0是这个方向上一个具体的实现,PhysCaP 就是在它的基础上往前走了一步。
但这类代码即策略系统也有个天生的缺陷,它们依然是建立在被动感知之上的。视觉语言模型看得懂"这里有四个罐子",但看不出"哪个罐子是空的"。这个信息缺口,恰恰是 PhysCaP 想要填补的地方。
PhysCaP 的核心思路:给机器人装上"手感"
PhysCaP 的全称是 Physics-Informed Code-as-Policy Agent,直译过来就是"物理感知驱动的代码即策略智能体"。它要解决的核心矛盾是这样的:有些任务,单靠看是没法完成的,必须靠交互才能获得关键信息,但交互又不能瞎来,不然会浪费大量时间和动作。
这个系统主要靠三个部分撑起来:能测量物理属性的模块、一个负责"要不要探索"的规划器、还有一个负责"先探索谁"的排序器。我们一个一个说。
### 不用额外传感器,靠"手劲"感知世界
PhysCaP 最基础的能力,是两个训练无需额外训练的物理属性提取模块,PhysX(Physical Property Extraction,物理属性提取模块:一套不需要额外训练、不需要额外传感器,只靠机器人本体感知就能估计物体质量和硬度的方法)。这两个模块分别叫 get_mass 和 get_stiffness,一个测重量,一个测软硬。
先说测重量。机器人手臂上没有装体重秤,那它怎么知道罐子有多重?答案是靠关节的力矩反馈
(Joint Torque,关节力矩:机械臂各个关节在运动时承受的旋转力,可以理解为关节"感受到的负担有多大")
。具体做法是,机械臂先空手抬起 15 厘米,记录一次没抓东西时的力矩基线,然后再抓着物体重复同样的抬升动作,记录负重时的力矩。两次力矩一减,就能算出物体本身施加的重力影响。
这里有个细节值得说一说,系统在抬到测量位置后会短暂停顿,等震动完全消失才记录数据。这个停顿看似不起眼,但如果去掉会怎样?如果机械臂刚停下就立刻读数,残留的惯性震动会混进力矩信号里,导致测出来的重量忽大忽小,完全不可靠。这就跟你拿体重秤称重时,得先站稳别晃,不然指针会一直跳动一个道理。
具体计算上,系统用末端执行器的雅可比矩阵
(Jacobian,雅可比矩阵:描述机械臂关节角度变化如何转换成末端位置变化的一个数学工具,这里用来把"关节感受到的力"转换成"末端承受的重量")
在垂直方向上的投影,把力矩差值转换成质量估计。这个设计的好处是,不管物体放在工作台哪个位置,测出来的质量都是稳定一致的,不会因为机械臂的姿态不同而产生偏差。
再说测硬度。这个过程分两步,第一步是确认真的接触到了物体,而不是夹爪内部零件之间的摩擦在骗人。系统会一点点收紧夹爪,一旦感受到力的变化,立刻稍微松开一点做个"回退测试",如果力真的按比例掉了下来,说明这个接触是真实的,这个位置就被记录为接触参考点。第二步是持续收紧夹爪,一边记录位移和力的变化,直到力达到一个设定的目标值,这时候的位移差就是物体的形变量。形变量越大,说明物体越软,反之则越硬。系统把这个形变量映射成 1 到 5 的硬度等级,1 是超软,5 是坚硬如金属。为了避免单次测量的误差,每个物体会测五次,取多数结果作为最终判断。
这套硬度测量方法后来还专门用一个 3D 打印的按钮装置做了验证。这个装置可以通过增减橡皮筋数量来精确调节阻力大小,相当于给硬度测量提供了一个"标准答案"。用这个装置测出来的力位移曲线,和真实牛油果的曲线放在一起对比,发现硬牛油果(生的)对应多橡皮筋配置,软牛油果(熟的)对应少橡皮筋配置,规律非常一致。这说明这套靠夹爪力反馈来判断软硬的方法,是能真实反映物理规律的,不是拍脑袋想出来的伪科学。
### 探索的代价:什么时候该出手,什么时候该收手
光有测量能力还不够。如果机器人对着桌上的每一个物体都去称一称、捏一捏,那效率会低到令人发指。这就引出了 PhysCaP 真正的巧思所在,一个双智能体架构,规划器(Planner)和排序器(Prioritizer)。
规划器的工作是判断"现在的信息够不够用"。给它一段任务描述和一张场景图片,它会分析当前缺失哪些关键的物理信息,如果缺,就生成一份需要探索的候选对象清单,每个候选对象都写明了要探索什么、预期能获得什么信息。如果信息已经足够,它就直接放行,让下游的代码生成模块去写执行程序。这个规划器同时还充当了"停止信号",一旦收集到的证据足够支撑决策,它就会立刻喊停,不让机器人做无意义的额外探索。
排序器接手规划器给出的候选清单,任务是把这份清单排出优先级。它靠的是视觉启发式规则,比如颜色、大小、是否插着吸管这类肉眼可见的线索。举个例子,四个牛油果里,两个是绿色的,明显还没熟,两个是深色的,可能熟了也可能没熟,排序器就会把两个绿色的直接从候选清单里剔除,只保留两个深色的去做进一步的硬度测试。
这个设计解决的根本矛盾是什么?是探索成本和信息价值之间的平衡。如果完全不探索,机器人对隐藏的物理属性一无所知,任务大概率失败,这是文中说的"欠探索"。如果对每个候选对象都不加区分地全部测一遍,机器人是能把任务做对,但会浪费大量时间,做很多明知没必要的动作,这叫"过探索"。
这个平衡问题让我想到一个特别贴近生活的场景。你去超市挑西瓜,货架上摆着十个西瓜,你不会拍遍每一个才挑,你会先用眼睛扫一遍,挑出表皮颜色深、纹路清晰的那几个,再对这几个拍一拍听声音。如果你对每个西瓜都要拍一遍才做决定,买菜可能要花上一个小时。但如果你完全不拍,只靠外观判断,买回家发现是个空心瓜的概率会大大增加。规划器就是那个"先扫一遍再决定拍哪几个"的判断力,排序器就是"决定先拍哪个、后拍哪个"的经验直觉。这两者缺一个,买瓜这件事的效率或者准确率就会明显下滑。
论文里还专门做了一个消融实验来验证这两个智能体分开设计的必要性,叫 PhysCaP-joint,把规划器和排序器合并成一个智能体,所有提示词一股脑塞进同一个上下文里。结果性能反而略微下降了。这说明就算是给模型足够的信息,它也容易在混杂的上下文里"想岔了",退化成不加区分的穷举式探索。这跟人做事情也很像,如果你同时被要求"想清楚要不要做"和"想清楚先做哪个",思路很容易被搅在一起,分开思考反而更清晰。
三个真实场景的考验
为了验证这套系统到底行不行,研究团队设计了三个桌面操作任务,用一台七自由度的 AgileX PiPER 机械臂在真实环境里跑,外加一个在 LIBERO 仿真环境里复现的版本。
第一个任务是找蓝色方块。桌上有两个明摆着的方块,还有一个藏在纸杯下面。三个纸杯大小不一,其中一个明显太小,根本装不下方块。这个任务考的是几何推理能力,一个聪明的机器人应该一眼就排除那个太小的杯子,只在剩下两个可能藏东西的杯子里挑。
第二个任务是找空罐子。四个饮料罐,两个封着口,两个开着口插了吸管。开口的罐子里,一个是空的,一个还有液体(用硬币模拟出 389 克的重量)。这里的逻辑是,封着的罐子大概率是满的,不用去称,而两个插吸管的罐子才是重点排查对象。
第三个任务是挑熟牛油果。四个牛油果,两绿两黑,黑色里一个熟了一个还硬着。这里视觉信息不够用,颜色深不代表就熟了,必须靠捏一捏的硬度测量才能真正判断。
这三个任务放在一起看,其实是精心设计过的,它们分别对应了几何约束推理、语义先验加物理测量、以及视觉先验加物理测量这三种不同难度的信息融合场景。
实验结果摆出来相当直观。纯视觉的 CaP 系统在没有物理探索能力的情况下,几乎在第二、第三个任务上全线失败,成功率只有 20% 和 10%。加上物理测量模块后(CaP+PhysX),成功率明显提升,但因为没有推理能力,只能按空间顺序把所有物体挨个测一遍,效率很低,比如在挑牛油果任务里要测 4 次才能完成。加上规划器后(CaP+PhysX+Planner)引入了停止判断,但探索顺序依然是随机的。而完整的 PhysCaP,靠着排序器的加持,把交互次数压到最低,在找蓝色方块任务里,平均只需要 1.33 次交互,时间只要 40.48 秒,相比之下加了规划器但没排序器的版本要 3 次交互、104 秒。
这个数字差距背后代表什么?意味着在某些任务里,PhysCaP 能把交互次数砍掉一半以上,把执行时间压缩到原来的三分之一左右,而成功率还能维持在 80% 到 90% 之间。这不是简单的速度优化,这是决策质量的实质性提升。
为了验证质量测量模块本身的准确性,团队用五个已知质量的标定物,从 13 克到 963 克,反复测量 20 次。结果显示测出来的相对质量关系非常稳定,能够可靠地区分空罐和满罐。团队还专门做了一个对照实验,把实测得到的质量值替换成真实的标准答案,重新跑一遍找空罐任务,结果成功率直接冲到满分 10/10。这说明如果质量测量本身足够准,系统的推理和决策能力是完全能撑得住这个任务的,之前测量环节里存在的一点点硬件噪声,才是限制成功率进一步提升的瓶颈。
仿真环境里的对照实验:VLA 到底差在哪
真实机器人实验固然重要,但为了跟目前最主流的一批 VLA 模型直接比较,团队又在 LIBERO 仿真环境里复现了找空罐任务。之所以用仿真,是因为 OpenVLA、π0.5、MolmoAct2 这些模型基本都是在特定的仿真或数据集基准上训练和评测的,很难直接搬到 PiPER 这台真实机械臂上跑。
仿真里的规则设计得很巧妙,系统不会主动告诉机器人哪个杯子是空的,必须让机器人抓起杯子并保持至少 0.5 秒、再把杯子抬升 3 厘米保持 0.5 秒,这个动作完成之后才会"揭示"真实质量。这样的设计本质上是强制机器人做出主动探索的行为,不给它任何偷懒的空间。
结果相当能说明问题。OpenVLA 的成功率是 0%,π0.5 只有 4%,MolmoAct2 表现相对好一点,达到 23%,但仔细看它的交互次数只有 1.04 次,基本等于随便抓一个杯子就交上去了,属于蒙对的成分居多。而 PhysCaP 在这个任务上达到 78% 的成功率,平均交互次数只要 1.44 次。
这组数据背后藏着一个挺让人意外的事实。这些 VLA 模型,哪怕是在海量演示数据上训练出来的、参数量巨大的模型,面对"看不出来但摸得出来"的信息缺口时,是完全没有招的,甚至比不上一个靠简单规则拼起来的 CaP+PhysX 系统。这暴露了一个纯粹靠模仿学习堆出来的模型,天生带有的一个盲区,它学的是"看到什么该做什么",而从来没有学过"看不到的时候该怎么办"。这不是数据量能解决的问题,这是训练范式本身的局限。
表格看数据:谁在真正做到"少即是多"
下面这张表汇总了三个真实任务上各个方法的表现,数字越低越好的两项是交互次数和执行时间,数字越高越好的是成功率。
| 方法 | 找蓝方块成功率 | 找蓝方块交互次数 | 找蓝方块时间 | 找空罐成功率 | 找空罐交互次数 | 找空罐时间 | 挑熟牛油果成功率 | 挑熟牛油果交互次数 | 挑熟牛油果时间 |
| CaP | 10/10 | 3 | 75.51±4s | 2/10 | 2.5 | 71.71±20s | 1/10 | 1 | 26.38±0s |
| CaP+PhysX | 10/10 | 2.7 | 76.91±21s | 7/10 | 3.9 | 268.08±16s | 9/10 | 4 | 515.61±9s |
| CaP+PhysX+Planner | 9/10 | 3 | 104.11±26s | 7/10 | 4 | 274.14±77s | 8/10 | 4.125 | 563.29±76s |
| PhysCaP-joint | 8/10 | 2.125 | 65.91±23s | 7/10 | 2.7 | 241.62±70s | 7/10 | 2.71 | 384.39±111s |
| **PhysCaP** | **9/10** | **1.33** | **40.48±15s** | **8/10** | **2.5** | **239.0±27s** | **9/10** | **2** | **300.47±53s** |
这张表最值得咀嚼的地方,是 CaP 在找蓝方块任务上反而"看起来"成功率最高,达到 10/10。但仔细看它在找空罐和挑牛油果两个任务上惨不忍睹的表现,就会明白这个满分不是因为它聪明,是因为找方块这个任务碰巧不需要物理测量,靠瞎猜也能蒙对方向。这提醒我们,单看一个数字很容易被误导,必须看整体的任务组合表现,才能判断一个系统是不是真的在做正确的事。
论文之前的探索脉络
在 PhysCaP 之前,主动感知和物理测量这个方向已经积累了一些工作,只是各自解决的问题比较局限。
比较早期的路线是纯强化学习的方式,比如 2026 年发表的一篇让机器人在真实世界里学习主动感知行为的研究,但强化学习普遍存在样本效率低的问题,训练一个能主动探索的策略要耗费大量的试错成本。另外有基于视觉语言模型标记提示的操作方法,比如 MOKA,靠标记辅助定位来完成开放词汇的操作任务,但这类方法本质上还是停留在视觉层面,没有真正引入物理测量。
还有一批工作专门研究怎么从机器人的本体感知里提取物理属性,比如 2024 年 IROS 会议上一篇关于通过机器人操作和物体测量数据库来交互式学习物理属性的论文,这篇论文提出的关节力矩推断物体质量的思路,正是 PhysCaP 质量测量模块的直接灵感来源。另一篇 2025 年的工作则用可微分的机器人物体交互模型来学习物体属性,走的是本体感知这条路。这些工作普遍存在一个共同短板,它们把"测量什么"和"任务层面该怎么决策"分开处理,缺少统一的推理框架来判断什么时候该测、测哪个、测完之后要不要继续测。PhysCaP 正是在这一点上做了整合,把物理测量嵌入到规划器和排序器构成的决策链条里,让测量本身服务于任务目标,而不是孤立地存在。
写在后面
读完这篇论文,最让我意外的其实不是那两个物理测量模块本身,毕竟用关节力矩推质量、用夹爪位移推硬度,思路都算不上惊世骇俗。真正让我停下来想了一会儿的,是那个 PhysCaP-joint 的消融实验结果。
把规划和排序两件事塞进同一个提示词,让同一个模型一次性想清楚"要不要探索"和"先探索谁",结果反而比拆开两个智能体分别处理还差一点。这其实是在说,大语言模型的推理能力不是无限的,给它同时抛出两个不同性质的判断任务,它容易在中间某个环节含糊过去,退化成最保守的穷举策略。这跟人在多任务处理时的表现规律出奇地相似,同时想清楚两件不同性质的事,往往比不上先想清楚一件再想另一件。
这也让我重新审视了一个常见的直觉误区,以为给模型更多信息、更大的上下文就一定更好。PhysCaP 的例子说明,有时候把问题拆解成结构清晰的子任务,分别交给专门的模块处理,反而比塞进一个大模型让它自己去理解结构更靠谱。这大概是这篇论文留给我最有价值的一点思考,不是技术细节,而是关于"怎么组织智能"这件事本身的一点启发。
那么下一个问题是,当机器人真正需要判断的物理属性不止质量和硬度,还包括温度、湿滑程度、内部液体晃动的声音这些更复杂的信号时,这套规划排序的框架还能不能撑得住?
Q&A
Q1:PhysCaP是什么?
A:PhysCaP是一个物理感知驱动的代码即策略机器人系统,它让机器人不再只靠"看"来完成任务,而是能主动通过抓取、称重、捏压等物理交互来获取物体的隐藏属性,比如质量和软硬度,从而完成单靠视觉无法完成的操作任务,例如识别空罐子或挑选熟牛油果。
Q2:PhysCaP和普通的视觉语言动作模型有什么区别?
A:普通的VLA模型只能被动观察场景后做出反应,看不出罐子里有没有液体这类隐藏信息。PhysCaP额外配备了不需要额外传感器的质量和硬度测量模块,并用规划器和排序器两个智能体来决定什么时候该主动探索、先探索哪个物体,从而用最少的交互获取关键信息。
Q3:PhysCaP的表现比现有的VLA模型好多少?
A:在仿真环境的找空罐任务里,OpenVLA成功率是0%,π0.5只有4%,MolmoAct2约23%,而PhysCaP达到78%的成功率,平均只需要1.44次交互。在真实机械臂实验中,PhysCaP也在减少交互次数和执行时间的同时保持了较高的任务成功率。
- 上一篇:热风除螨仪哪个牌子好用?除螨仪十大名牌排行榜推荐!
- 下一篇:智能舞林大会