微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 当AI学会"看透"物体形状来预测碰撞——MIT与Meta联合研发的刚体动力学模拟器RigidFormer

当AI学会"看透"物体形状来预测碰撞——MIT与Meta联合研发的刚体动力学模拟器RigidFormer

2026-05-15 09:33
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-05-15 09:33 科技行者

这项由麻省理工学院(MIT)与Meta联合开展的研究以预印本形式于2026年5月发布在arXiv平台上,论文编号为arXiv:2605.09196。感兴趣的读者可以通过该编号检索完整论文。

一、从一个恼人的问题说起

假设你是一位游戏开发者,花了好几个月精心设计了一个场景:一堆各种形状的木箱堆在码头上,一个铁球从天而降砸进去。为了让这个场景看起来真实,你需要计算每一个木箱在被撞击后如何飞出、旋转、互相碰撞。传统的物理引擎可以做到这件事——但前提是你必须提供每个木箱精确的网格模型,也就是描述物体表面的三角形面片数据,而且还得手动调好摩擦系数、弹性系数等各种参数,稍有差错结果就会变得离谱。

现实世界中,物体往往不会以完美的网格形式出现。机器人的摄像头扫描出来的是一团密密麻麻的三维点云——就像你用激光笔在物体表面随机打出成千上万个光点,记录下每个点的空间位置,但这些点之间没有任何连接关系。没有面,没有边,没有拓扑结构。对于传统物理引擎和大多数基于深度学习的模拟器来说,这种"散点"数据几乎没法直接用。

RigidFormer正是为了解决这个痛点而生的。它的核心思路是:不需要网格,只需要点云,就能预测多个刚性物体之间的碰撞和运动轨迹。更关键的是,它的运行速度比现有最好的方法快了将近8倍到100倍,同时精度还更高。这背后究竟用了什么魔法?

二、刚体模拟到底在模拟什么

在深入了解RigidFormer之前,先得搞清楚"刚体动力学模拟"是什么意思。所谓刚体,就是在运动过程中形状不发生改变的物体——比如台球、木块、金属零件。刚体动力学模拟就是预测这些物体在受到力的作用、互相碰撞时如何运动。

这个问题比听起来要难得多。碰撞发生的瞬间,物体的运动状态会发生突变——前一时刻两个物体相互接近,下一时刻它们就弹开了,而且弹开的方向和力度取决于接触位置的几何形状、材料属性,甚至接触的角度。这种"不连续性"让基于神经网络的学习变得极为困难,因为神经网络最擅长处理的是平滑、连续的变化关系。

此外,在一个包含多个物体的场景中,误差会随时间不断积累——第一步预测稍微偏了一点,第二步就更偏,到了第100步,整个场景可能已经乱成一锅粥。这就像你用手机导航时,GPS位置偏了一点,结果你一直走错路,越走越偏,最后走到了完全不该去的地方。

现有的学习型模拟器,比如FIGNet、HopNet等,虽然取得了不错的效果,但它们都依赖网格数据,而且计算方式是在每个顶点之间逐一传递信息,一个复杂物体可能有上千个顶点,多个物体加在一起就会有几万个顶点,计算量随顶点数量的平方增长——物体越复杂,速度越慢。这就是RigidFormer要挑战的两大难题:摆脱网格依赖,以及从根源上降低计算复杂度。

三、像管理一支球队而非追踪每个球员

RigidFormer的核心设计哲学可以用一个体育比喻来理解。传统的顶点级模拟器就像是一位教练,要同时追踪球场上每一个球员的每一步移动,不放过任何细节,每个球员和其他所有球员之间的互动都要计算。而RigidFormer更像是一位战术分析师,他不需要盯着每个球员的脚步,只需要关注每支球队整体的战术走向——"3号队的进攻端在左侧施压,5号队的防守端向右收缩"——在球队这个层面上分析博弈关系,效率要高得多。

这就是所谓的"以对象为中心"(object-centric)的设计思路。RigidFormer不在单个点上做文章,而是把每个物体整体编码成一个紧凑的"令牌"(token),就像给每支球队发一张战术卡片。多个物体之间的互动,就在这些战术卡片之间发生。假设场景中有10个物体,每个物体平均有400个顶点,传统方法需要处理4000个点之间的相互关系,计算量级大约是4000的平方;而RigidFormer只需要处理10个物体令牌之间的关系,计算量级是10的平方,差了整整四个数量级。

具体来说,每个物体的点云数据首先经过一个层次化的特征提取网络——这个网络受到经典的PointNet和PointNet++架构启发,从全局和多个局部尺度提取物体的几何特征,然后压缩成一个维度为768的向量,这个向量就是这个物体在当前时刻的"状态快照"。所有物体的状态快照组成一个序列,输入到一个基于Transformer架构的解码器中。

Transformer是近年来在自然语言处理和计算机视觉领域大放异彩的一种神经网络架构,它的核心机制叫做"自注意力"——每个元素都可以直接"看到"序列中的所有其他元素,并根据相关性分配注意力权重。对于刚体模拟来说,这意味着每个物体都可以直接感知场景中所有其他物体的状态,不需要像图神经网络那样一步一步地传递消息。这对于捕捉复杂的多体碰撞关系非常有利。

解码器共有4层,每一层都包含一个带门控机制的自注意力模块、一个时间步长调制模块和一个前馈网络。其中,时间步长调制模块是一个很有意思的设计——它通过FiLM(Feature-wise Linear Modulation,特征级线性调制)技术,让模型根据当前的模拟时间步长调整自己的计算行为。这样,同一个模型既可以用小步长精细模拟短时间段的动作,也可以用大步长快速预测较长时间段的运动趋势,完全不需要重新训练。

解码器中还加入了16个"寄存器令牌",这些令牌没有对应任何真实物体,而是作为全局信息的汇聚点,帮助模型在处理不同数量物体的场景时保持稳定——无论场景中有3个还是200个物体,这些寄存器令牌都在默默地维护着全局上下文。

四、用四个"锚点"撬动整个物体

解决了物体间交互的问题,下一个挑战是如何预测每个物体下一步的具体位置和姿态。最直接的想法是让模型直接输出每个物体的旋转矩阵和平移向量,但研究团队的实践表明这种方式容易出问题——旋转的数学表示有一些内在的不连续性,导致模型在学习旋转变化时经常产生不稳定的预测。

RigidFormer采用了一种更聪明的间接方式:锚点(Anchor)机制。每个物体上用最远点采样(Farthest Point Sampling,FPS)的方式选取4个分布均匀的点作为锚点,就像在物体表面插上4面小旗子。模型不去预测物体整体的旋转和平移,而是预测这4个锚点各自的加速度,再通过Verlet积分法(一种常用于物理模拟的数值积分方法,形式类似于"下一步位置 = 本步加速度×时间步长的平方 + 2×当前位置 - 上一步位置")预测出锚点下一时刻的位置。

4个锚点的位置确定之后,怎么从这4个点的运动推断出整个物体几千个点的位置?这里用到了一个叫做Kabsch对齐的经典算法。这个算法的核心思想很简单:已知物体在参考状态下4个锚点的位置,以及预测的下一时刻4个锚点的位置,就可以计算出这两组点之间的最优旋转矩阵R和平移向量t。有了R和t,物体上任何一个点的新位置就都知道了——只需要把参考状态下每个点的坐标用同一个R和t变换一下即可。

这个设计有一个重要的副作用:它从数学上保证了输出的物体形状是刚性的。无论网络预测出的锚点加速度多么奇怪,通过Kabsch对齐得到的R一定是一个合法的旋转矩阵(行列式为1,不会产生镜像翻转),物体上任意两点之间的距离在变换前后保持完全一致。这就像是给模型套上了一道物理约束的护栏,防止它预测出"物体一半往左转、一半往右转"这种违反刚体假设的荒谬结果。

研究团队还特别注意到,Kabsch对齐涉及奇异值分解(SVD)这个数学运算,而SVD在某些边界情况下的梯度计算会出现数值不稳定的问题。为此,他们使用了一个叫做RoMa的工具库来实现鲁棒的可微分刚性配准,确保训练过程中梯度能够稳定地从对齐结果一路反向传播到网络参数。

锚点机制还带来了另一个好处。在接触检测和碰撞响应中,最关键的往往是物体表面某个特定区域的几何细节——比如两个物体相互触碰的那个角落。为了让锚点的加速度预测能感知到这些细节,研究团队设计了一个"锚点-顶点池化"(Anchor-Vertex Pooling,AVP)模块。它的工作方式就像一个地方情报员:对于每个锚点,根据场景中每个顶点距离这个锚点的远近,加权汇聚这些顶点的编码特征,距离越近的顶点权重越高,距离越远的权重越低(权重随距离指数衰减)。这样,每个锚点就携带了它周边局部几何环境的丰富信息,不需要让所有顶点参与全局注意力计算,计算代价极低。这个距离核的宽度参数σ也是随网络一起学习的,让模型自己决定"看多远"的范围最合适。

五、让地图记住地形,而不是记住你站在第几号位置

Transformer模型有一个众所周知的弱点:它本身不知道序列中元素的位置关系。在处理文字时,通常用序列索引来告诉模型"这个词排在第5位"。但对于刚体模拟,这种做法行不通。首先,物体本身没有固定的顺序——你把10个物体的输入顺序随机打乱,物理结果应该完全一样;其次,物体的位置和形状会随时间不断变化,模型需要感知的是物体在三维空间中的实际几何关系,而不是它在输入序列中的第几位。

RigidFormer为此专门设计了一种叫做"基于锚点的旋转位置编码"(Anchor-based Rotary Positional Embedding,ARoPE)的机制。旋转位置编码(RoPE)最初是为大语言模型设计的,它不是给每个位置加一个固定的偏置向量,而是通过旋转查询向量和键向量来隐式地编码位置关系,使得两个令牌之间的注意力分数自然地反映它们之间的相对位置。RigidFormer把这个思路扩展到三维空间,并且用锚点来代替单一的质心点来描述每个物体的空间状态。

具体来说,物体i的4个锚点的三维坐标,各自被转换成一个96维的旋转相位描述符——这个过程是通过对每个坐标分量应用一组对数间隔的频率来实现的,类似于傅里叶变换中用不同频率的正弦和余弦函数来分解信号。然后,把4个锚点的描述符取平均,得到整个物体的ARoPE描述符。

这个"取平均"的操作有一个精妙之处:无论你怎么对这4个锚点重新编号,对4个描述符取平均的结果是完全不变的。这保证了模型不会因为锚点的编号不同而产生不同的判断——毕竟,"物体左上角的那个锚点叫1号还是4号"对物理结果没有任何影响。与此同时,这个平均描述符仍然依赖于锚点在世界坐标系中的实际位置,因此它携带了物体质心位置和形状范围的信息,能够帮助注意力机制根据实际的空间几何关系分配注意力权重。

模型在设计上做了明确的区分:处理物体令牌的Transformer部分不使用任何序列索引式的位置编码,这使得模型对物体输入顺序的任意排列是等变的(即输入顺序变了,对应的输出也按同样方式变了,物理结果不受影响);而ARoPE则通过旋转变换将三维几何信息注入注意力计算,让模型感知"这两个物体在空间中靠得很近"这样的物理相关信息。

六、在两个世界之间找到平衡:输入特征的设计

除了架构设计,RigidFormer在输入特征的选取上也有不少讲究。对于每个物体的每个顶点,模型会拼接四类信息作为输入。

第一类是近邻位移向量:从这个顶点出发,到场景中其他物体(或地面)最近点的方向和距离。这个特征直接告诉模型"这个顶点离什么东西很近,可能要发生接触了",是碰撞预警的关键线索。

第二类是速度代理:当前帧和上一帧之间这个顶点的位置差,用来近似表示顶点的瞬时速度。因为RigidFormer每次接受两帧历史状态作为输入,有了这两帧就能算出速度。

第三类是参考偏移:当前位置相对于序列第一帧位置的偏移量。这个特征帮助模型了解物体从初始状态运动了多远,有助于建立时间上的连续性感知。

第四类是物理参数:质量、摩擦系数和恢复系数,这三个数字广播到物体的每一个顶点上。当这些参数已知时,模型可以直接利用;当未知时,可以设置为默认值,模型也能退而求其次地依赖几何和运动信息做预测。

七、在真实评测中,它表现如何

研究团队在MOVi数据集上对RigidFormer进行了全面评测。MOVi是一个专门为学习型物理模拟设计的基准数据集,包含三个子集:MOVi-A使用基础几何形状(正方体、圆柱、球体),MOVi-B包含11类更复杂的形状(包括齿轮、海绵、茶壶、麻花扭转体等),MOVi-Sphere只包含球体,每个数据集有1200个场景,每个场景模拟480帧。评测指标包括物体质心位置的RMSE(均方根误差,单位为米)和朝向的RMSE(以四元数测地距离计算,单位为度),分别在滚动预测50帧、75帧和100帧后测量。

在匹配步长为1的标准设置下,RigidFormer与FIGNet、HopNet、MGN、HCMT、VPD等基线方法进行了比较。其中HopNet是最强的基线之一,它使用精确的网格数据,并结合了高阶拓扑信息和物理感知的消息传递机制。在MOVi-B数据集上预测100帧时,HopNet的位置误差为0.176米、朝向误差为17.91度,而RigidFormer只用点云输入就将其改善到了0.161米和15.33度。朝向误差的优势尤为明显,这正是得益于锚点-Kabsch刚体投影的稳定作用。

另一个有趣的对比是SDF-Sim,这个方法用学习到的符号距离函数(SDF)来表示物体形状,在MOVi-B 100帧时报告的误差为0.160米和18.03度。而RigidFormer在步长为1时得到0.050米和3.97度,在步长为10时更是低至0.029米和1.51度,完全碾压,而且不需要SDF-Sim那样耗时约5小时的预处理步骤。HopNet则需要约15天才能完成单纯的简单复形构建预处理。

步长的影响也在实验中得到了详细验证。步长为10时,模型每步在物理时间上跨越相当于步长为1时的10倍,因此完成同样100帧的物理模拟只需10次推理调用而非100次,累积误差大幅降低。在MOVi-B上,步长10下的100帧误差为0.115米和10.85度,而步长1下为0.161米和15.33度,差距显著。这意味着在对实时性要求不那么苛刻的场景中,使用大步长可以获得明显更好的长期预测精度。

跨数据集泛化实验中,研究团队测试了在一个MOVi子集上训练、在另一个子集上测试的效果。在以MOVi-Sphere训练、MOVi-B测试的设置下,RigidFormer在75帧时的误差为0.096米和9.42度,优于HopNet的0.106米和9.75度,而FIGNet在同一设置下则差距明显,为0.662米和18.08度。总体而言,RigidFormer在大多数跨数据集设置下都与甚至超过了依赖完整网格信息的基线方法。

八、分辨率无关、扩展到200个物体

RigidFormer的另一个突出优势是对点云分辨率的无感性。训练时使用的点数在128到1024之间随机变化,测试时使用768个点(一个从未见过的数量),模型依然表现稳定——在100帧时,步长10、5、1分别得到0.137米11.13度、0.161米14.83度、0.189米16.22度的误差,降级幅度相当温和。这对于实际应用极为重要,因为不同传感器、不同扫描距离产生的点云密度差异很大。

在大规模场景扩展性测试中,研究团队构建了一个"破坏球"(WreckingBall)数据集:一个球形抛射物以30米每秒的速度撞向由正方体堆砌的墙壁,分别测试了64、125、216个正方体加1个球的场景。在50步时,三个场景的位置误差分别为1.210米、0.690米和0.130米,朝向误差分别为20.50度、16.50度和4.60度。模型在物体数量增加到217个时依然保持稳定运行,推理速度保持在20 FPS。这种可扩展性直接来源于以对象为中心的设计——注意力复杂度只随物体数量的平方增长,而非顶点总数的平方。

对于部分遮挡的点云,研究团队也做了测试:在每个物体的包围盒内随机遮盖25%的点,使用在完整点云上训练的模型直接推理,不做任何特殊处理。结果显示,在遮挡条件下RigidFormer依然能产生稳定的轨迹预测,物体间接触关系和长期漂移都保持在合理水平。

九、拆解每一个设计决策

研究团队通过一系列消融实验验证了每个设计组件的贡献,这部分内容颇为详细,值得专门介绍。

关于位置编码的选择,研究团队将ARoPE与标准正弦编码、学习式绝对编码、基于朝向包围盒(OBB)的编码、基于主成分分析(PCA)的编码,以及基于SE(3)框架的编码进行了比较。PCA方法表现极差——在步长1、100帧时位置误差高达1.548米,而ARoPE为0.161米——原因可能是PCA轴方向的不确定性导致了严重的歧义。SE(3)编码在100帧时得到0.167米15.33度,略逊于ARoPE的0.161米15.33度(朝向完全相同)。正弦编码和学习式编码表现相近,分别为0.172米和0.176米。ARoPE在大多数指标上取得了最好或并列最好的结果,尤其在朝向误差上优势更为一致,反映了它对不同物体数量和几何形状的更好泛化能力。

关于门控注意力,不加门控时,步长1的100帧位置误差为0.259米,加入门控后降至0.161米,降幅接近40%。这个改进主要体现在平移精度上,朝向误差在大步长下的改善相对较小——说明门控机制主要在减少长期自回归误差积累方面发挥作用,帮助模型在不确定的情况下抑制噪声注意力。

关于可微分刚性投影,在已有门控注意力的基础上,加入Kabsch对齐后100帧位置误差从0.169降至0.161(步长1),从0.146降至0.136(步长5),从0.121降至0.115(步长10),朝向误差也有一致改善。这表明通过对齐反向传播的梯度确实在减少长期漂移方面有实质贡献,而不仅仅是一个事后的几何约束。

关于锚点数量,从3个增加到4个时各项指标都有提升;从4个增加到8个时,朝向误差在某些设置下略有改善,但平移误差反而有时候变差,而且计算量翻倍。4个锚点被认为是效率和质量的最佳折中点。随机重采样FPS锚点的实验(即每次训练和推理时随机选择FPS锚点,而非固定使用同一组)也显示了相似的性能,说明模型学到的是物体的内在几何特征,而非特定锚点的身份信息。

十、连骨架都能预测——初探关节体控制

作为一个扩展性实验,研究团队将RigidFormer的框架迁移到了有关节约束的可控运动角色上,这部分结果被明确定位为"初步验证"而非主要贡献。思路很直接:把机器人或人体的每一个骨骼节段当作一个独立的"刚体对象",用FiLM调制层把方向控制指令注入到物体特征中,让模型在预测各骨骼节段运动的同时,根据高级指令(如"向左转"、"加速")调整运动模式。

实验在两个数据集上进行。一个是ASE人形角色(带剑盾,共17个骨骼节段,在ASE强化学习框架下生成的运动数据),控制信号包含目标速度、目标移动方向和目标朝向方向,共5个维度。另一个是宇树G1机器人(31个骨骼节段,在AMP框架下生成的转向运动数据),控制信号包含目标速度和目标方向,共3个维度。训练和推理时使用步长10(相当于3 Hz的有效帧率)来捕捉宏观运动模式而非高频接触振荡。

在100步的自回归预测下,RigidFormer在ASE人形角色上得到0.062米和14.47度的误差,在G1机器人上得到0.072米和16.26度的误差。定性结果显示,角色能够在接受不同方向指令时产生相应方向的连贯全身运动,各骨骼节段之间保持了合理的协调性。这说明以对象为中心的设计框架在骨骼节段这一层次上同样适用,为未来更复杂的可控关节体模拟提供了一个初步的概念验证。

十一、速度上的惊喜:快到令对手望尘莫及

在运行速度上,RigidFormer的表现让人印象深刻。在配备NVIDIA GeForce RTX 5080显卡的环境下,以50步自回归推理为基准,RigidFormer每步耗时41.9毫秒,对应23.9 FPS;FIGNet每步需要336毫秒,对应3.0 FPS;而HopNet每步需要4228.7毫秒,对应0.2 FPS。RigidFormer比FIGNet快8倍,比HopNet快101倍。

深入分解这41.9毫秒的时间构成,可以发现模型本身的计算(点编码器+物体级交互+锚点-物体交互)只占18.61毫秒,对应54 FPS的理论速度;另外23.25毫秒用于几何预处理,其中22.80毫秒来自CUDA KNN搜索(用于计算每个顶点到最近邻物体的距离),而可微分Kabsch变换仅需0.45毫秒。这说明当前的主要速度瓶颈不在模型本身,而在KNN搜索这个几何操作,未来如果能优化这一部分,整体速度还有进一步提升的空间。

这种速度优势的根本来源在于以对象为中心的设计。以MOVi-B测试场景为例,场景中有10个物体共4016个顶点。如果在顶点级别做一次自注意力,仅注意力矩阵和值向量乘积就需要大约4×4016?×768≈49.5 GFLOPs;而RigidFormer的物体级解码器只需对10个物体令牌和16个寄存器令牌(共26个令牌)做自注意力,仅需约4×26?×768≈2.1 MFLOPs,减少了约2.4万倍的计算量。

说到底,RigidFormer做的事情,是把物理模拟这件本来高度依赖精确几何模型的任务,变成了一件可以从"粗糙点云"出发、靠数据驱动学习来完成的任务。它不需要网格,不需要手动调物理参数,不需要昂贵的预处理,用同一个模型就能处理不同的时间步长,运行速度比同类方法快了一到两个数量级,而且精度还更好。

这种能力的背后,是几个设计选择的合力:以对象为中心的Transformer让交互建模从顶点级下降到物体级;锚点驱动的状态推进把6自由度的刚体运动压缩到4个锚点的加速度预测;Kabsch刚性投影从数学上保证了输出的物理合法性;ARoPE把三维几何关系注入注意力机制同时保持排列不变性;门控注意力和大步长选项则共同压制长期预测误差的积累。

当然,这个系统目前还需要知道哪些点属于哪个物体,严重遮挡条件下性能会下降,处理的也主要是刚体而非可变形体。这些都是未来值得探索的方向。如果有一天,机器人的眼睛扫到一堆杂乱物品,不需要任何精密建模,就能直接预测出推一把之后会发生什么,很大程度上得归功于这类研究的积累。

感兴趣的读者可以通过arXiv:2605.09196检索完整论文,代码在论文正式发表后也会公开。

Q&A

Q1:RigidFormer不需要网格数据是怎么做到的?

A:RigidFormer通过把每个物体的点云整体编码成一个紧凑的向量令牌,在物体级别建模交互,而不依赖点之间的连接关系。每个物体上选取4个锚点,预测它们的加速度,再用Kabsch算法从锚点运动推导出整个物体的刚性变换,从而完成位置预测。整个过程不涉及任何三角形面片或边连接信息。

Q2:ARoPE相比普通位置编码有什么优势?

A:普通序列索引编码会让模型以为物体的顺序有意义,而刚体模拟要求对输入顺序不敏感。ARoPE用物体上4个锚点的三维坐标均值来生成旋转位置描述符,既反映了物体在空间中的真实几何位置,又对锚点编号顺序完全不敏感,同时不因加入绝对序列编号而破坏物体顺序的等变性。

Q3:RigidFormer支持多大规模的场景?

A:RigidFormer在包含217个物体的WreckingBall数据集上完成了测试,仍能保持稳定运行,推理速度约为20 FPS。由于采用物体级的Transformer,计算复杂度随物体数量的平方增长而非随顶点总数的平方增长,扩展性明显好于顶点级方法。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-