论文精读 · Real2Sim & Sim2Real · 动态数字孪生

Real-is-Sim

Bridging the Sim-to-Real Gap with a Dynamic Digital Twin

不让策略去跨越仿真与现实的差距,而是让仿真器去跨。策略永远只看仿真器给的状态、永远只控制仿真里的机器人;真机只是跟着仿真机器人的关节走,真实相机的画面以 60 Hz 不断把仿真里的物体「拽」回真实位置。接上真机就是真机部署,断开就是可以并行跑 20 份的虚拟评估,两者之间策略不需要任何改动。

  • Robotics and AI Institute · 昆士兰科技大学 QUT
  • arXiv 2504.03597v2
  • v1 2025-04-04 · v2 2025-07-02
  • arXiv · 项目页
按原文 Figure 1、4 画的示意。蓝色是真实一侧,橙色是仿真一侧;策略和真实世界之间没有直接连线。

做了什么

用作者自己此前的 Embodied Gaussians 做数字孪生:物理上是刚体粒子(XPBD/Warp),外观上是挂在粒子上的 3D 高斯。每个时间步把渲染图和真实 RGB 比,光度误差变成作用在物体上的「视觉力」,把仿真拉回真实。策略是 flow matching 行为克隆,输入是仿真状态导出的表征,输出仿真机器人的关节轨迹和一个任务进度值。

放在专题里看

这是 Real2Sim2Real 的一种极端形态:real2sim 不是一次性建模,而是部署全程持续进行的同步;sim2real 也不靠域随机化或域适应,而是让真机直接复制仿真机器人的关节。策略的输入分布和训练时一样,因为它从头到尾都只在看仿真。

结果

只有 PushT 一个任务、一台 Franka。离线评估与真机评估对 4 个检查点的排序一致;在离线模式里针对失败状态补 30 条仿真示范,成功率 56.7% → 80.0%(真机多收 30 条是 76.7%);虚拟腕部相机的策略 81.7%,高于用真实图像的策略 61.7%。

最该留意的

离线评估的「成功」由策略自己报告的进度值 > 0.9 判定,不是环境判定,绝对值和真机对不上(10K 步时 12% 对 20%)。每格 60 次真机试验,几个关键对比的差距都在误差棒以内。论文没有任何表格,也没有和别的 sim-to-real 方法比较;Ablations 一节是空的。

问题 · §I

仿真的好处很多,难在让策略在两边表现一样

仿真能持续监测性能、大规模并行、读取完整状态、精确复位、精确控制环境变化,训练和评估都方便得多。难点是让同一个策略在仿真和现实里表现一致,这要求两件事同时成立:

  • 策略在两边看到的输入分布一致;
  • 两边的机器人对同一个策略输出的响应一致。

论文把现有做法分成两类:只用真机(Real-Only),没法在部署前安全地测试策略,评估又慢又费人;sim-to-real,靠域随机化、域适应、对齐动力学来让策略自己扛住差距,迁移效果没有保证。Real-is-Sim 的主张是换一个承担者:把「跨越 sim-to-real 差距」这件事交给数字孪生的同步机制,策略本身不再需要面对它。

原文 Figure 1左:真实世界,真机是「跟随者」(Follower)。右:Embodied Gaussians 里的仿真机器人是「领导者」(Leader),以 60 Hz 运行,右上和右下的小图是真实相机画面。上方两条线:真实图像修正仿真;策略读取仿真导出的状态。下方两条线:策略控制仿真机器人;真机跟踪仿真机器人。两者之间标注的「Sim to Real Gap」只出现在真机与仿真之间,不出现在策略那一侧。
原文 Figure 3三种范式。(a) Real-is-Sim:在线时,真机(跟随者)和观测在左,可修正的物理仿真在中(物理步 + 修正步,60 Hz),策略只连仿真;离线时,左侧真实世界整块变灰,连线结构不变,只是修正步不再接收真实观测。(b) Real-Only:策略直接连真机,没有离线模式。(c) Sim-to-Real:策略在仿真里训练,部署时直接接真机,两边之间隔着 sim-to-real 差距。

方法 · 数字孪生 Embodied Gaussians · §II-A · 附录 D

物理用粒子,外观用高斯,误差变成力

Embodied Gaussians 是本文第一作者此前的工作,场景由两套紧密耦合的东西表示:

  • 带朝向的粒子:位置、旋转、质量、半径等物理属性,用基于粒子的物理(XPBD)模拟;
  • 3D 高斯:位置、旋转、尺度、颜色、不透明度等外观属性,用 Gaussian Splatting 渲染。

每个粒子可以刚性地挂多个高斯,物理更新粒子时高斯跟着动。关键的修正机制是:把渲染图和真实相机图比较,光度误差推出一组作用在粒子上的虚拟「视觉力」,持续把仿真往真实拉。这个循环以 60 Hz 运行。

原文 Figure 2(改编自 Embodied Gaussians)一个 60 Hz 循环的六步:① 从行为克隆策略取期望关节;② 设为仿真机器人的期望关节,跑一步物理(推动方块);③ 命令真机跟随仿真机器人,取回新图像;④ 把渲染图和真实图比较,优化高斯;⑤ 由差异算出修正用的视觉力;⑥ 把视觉力加进物理仿真,并重置高斯位置。①② 属于虚拟环境,③ 属于真实世界,④⑤⑥ 是与真实世界的同步。

本文对 Embodied Gaussians 的两处改动(附录 D)

① 去掉了可变形物体的形状匹配约束,所有物体都当成由球形碰撞体组成的刚体,物理从粒子仿真变成刚体仿真,在线模式从 30 Hz 提到 60 Hz。② 原版里机器人是纯运动学的,这里把机器人的连杆和关节当成有质量、有惯量的动力学对象,仿真更稳定,机器人也能对环境作出反应;同时关掉机器人连杆的重力,否则控制器还得加重力补偿。

解读修正只作用在物体上,不作用在机器人上

视觉力加在物体粒子上(状态里的 ut 是每个物体的力和力矩)。仿真机器人完全由策略和物理决定,真机只跟随它,所以机器人这一侧不需要也不接受视觉修正。这让真机与仿真机器人之间的误差全靠底层关节控制器的跟踪精度来保证。

方法 · 框架 · §III-A · 附录 A

三块子系统,两种模式,只差一个开关

真实系统:若干输出 RGB 的相机 orgb,以及一个接收期望关节配置 c ∈ ℝd 的高阻抗关节控制器。仿真器在每个时间步维护:

st = { pit, Rit, vit, ωit }i=1…Nobj,   ut = { fit, τit },   rt = { qt, q̇t }§III-A
st+1, rt+1 = F(st, ut, rt);   在线时:c ← qt,  ut = C(st, orgb)§III-A

注意真机跟随的是仿真机器人的实际关节位置 q,不是策略给出的期望关节 q′。策略 π 读取由仿真状态导出的表征 g(st) 和当前关节 qt,输出 m = 32 个路点的轨迹,每个路点是期望关节 q′ ∈ ℝd 加一个任务进度 p ∈ [0, 1],覆盖 H = 1 秒;仿真机器人每 H/m 秒切到下一个路点,走完再生成新轨迹。

切换模式与配置,数一数跨过 sim–real 边界的数据流

按原文 Figure 3、附录图 1 重画

模式
配置

方法 · 流程 · §III-B

建场景 → 带着仿真收示范 → 训练 → 部署或离线评估

建场景

每个物体从 4 个视角生成,用一个位置 p、一个旋转 R 和一组固定半径的球来表示碰撞几何,外观用 Gaussian Splatting 优化。地面和机器人的几何与外观手工指定(机器人网格已知,地面从点云估计)。

收示范:仿真始终在环

示范时 Embodied Gaussians 一直用实时画面修正仿真,操作者能看到同步质量,并据此调整动作:机器人身体尽量不挡相机,不接触物体时快、接触时慢,物体边缘留足间隙。以 60 Hz 记录完整的仿真状态;随时间变化的只有物体位姿和机器人关节,其余物理参数和高斯只存初始时刻。

训练:进度值来自时间

每个路点的进度 p 按示范中已过时间的比例标注,前提是所有示范都结束在目标位置(引用作者之前的工作验证过这个启发式)。基于状态的策略读物体位置 + 四元数;基于图像的策略用 ResNet 把渲染图编码成 64 维向量,和策略一起训练。

部署与评估

部署时仿真继续和真机同步运行,策略读仿真、控制仿真机器人,真机跟随。关掉真机耦合和视觉力(ut),同一套就变成纯虚拟环境,可以并行:同时跑 20 个环境时,根据表征不同,比实时快 5 到 8 倍。

原文 Figure 5(a) 在线模式:真机推 T 形块,屏幕上是以 60 Hz 实时修正的物理仿真。(b) 离线模式:8 个并行的虚拟环境,T 形块的初始位姿各不相同,右下标注「7x Realtime」。

实验设置 · §IV · 附录 C

PushT,一台 Franka,三台相机

  • 任务:PushT,用推杆把 T 形块推到桌上的指定位置,论文称之为长时程任务。T 形块的几何(一组挂在同一个刚体上的球)由 Embodied Gaussians 的方法自动生成。
  • 硬件:7 自由度 Franka Emika,三台 RealSense D455(90 fps,420 × 270),NVIDIA RTX 6000 Ada。真机用 Ruckig 生成最小加加速度的关节轨迹,配合 Franka 自带的关节控制器。
  • 示范采集:采集时用 Pink 把仿真机器人限制在一个 2D 平面里(只在采集时、只作用于仿真机器人)。部署时没有这个约束,但策略学会了在 2D 里动。
  • 评测:桌上定义 20 个不在示范里的起始位姿。真机评测每个位姿测 3 次,共 60 次,成功指 T 形块被推到目标位置;虚拟评测用相同的起始位姿,成功指策略输出的进度值超过 0.9。
原文 Figure 6四种输入。(a) 物体位姿(x, y, z 与四元数)+ 关节;(b) 挂在仿真机器人末端的虚拟相机渲染图 + 关节;(c) 放在真实相机位置的虚拟相机渲染图 + 关节;(d) 真实相机图像 + 关节。前三种来自仿真(橙色),(d) 是基线(蓝色),真实图像在 Real-is-Sim 里只用来修正仿真,不直接喂给策略。

实验 1 · 离线评估能不能替代真机 · 原文 Figure 7

排序对得上,绝对值对不上

行为克隆的损失不能可靠地反映策略好坏,真机评估又费时费力,所以大家常常直接用最后一个检查点。论文用一个基于状态、30 条示范、训练 5 万步的 flow matching 策略,比较两种评估:

成功率 vs 训练步数

数字按矢量图中点的坐标换算。蓝色为离线(仿真)评估,10K–25K 每 1K 步一个点,之后 30K、40K、50K;橙色为在线(真机)评估,只测了 4 个检查点,每点 60 次。阴影是论文给的 95% 置信区间。

离线评估(仿真,进度 > 0.9 算成功)在线评估(真机,60 次)
点位数字(读自矢量图)

四个真机检查点的排序是 10K < 15K < 50K < 25K,离线评估在这四点上的排序相同。两条曲线都说明越往后训练不一定越好:25K 附近最好,50K 反而回落。论文据此认为,离线评估可以在几分钟内(而不是几小时)完成检查点选择或早停。

疑点离线成功是策略自己说的

离线评估里,「成功」的定义是策略自己输出的进度值超过 0.9,而进度值又是按示范时间标注、由同一个策略预测的。这等于让策略给自己打分:一个策略可能「以为」自己快完成了,T 形块其实不在目标里。论文引用自己的前作说这个代理指标可靠,并提到实践中可以换成更精细的奖励函数,但没有在这里报告用仿真里的真实位姿判定成功的结果,虽然仿真里明明有物体的精确位姿。另外,绝对值差得不小:10K 步离线 12.2%、真机 20.0%,25K 步离线 63.5%、真机 56.7%。只有 4 个点用来说明排序一致,离线评估的试验次数也没写。

实验 2 · 在离线模式里补示范 · 原文 Figure 8a

针对失败状态补 30 条仿真示范,和多收 30 条真机示范差不多

先用 30 条在线采集的真机示范训练一个基于状态的策略,约 57%。然后把这个策略放进多个并行的离线环境,找出它陷入局部极小的失败状态,让操作者在这些状态下只在仿真里再示范 30 条。合起来重新训练。

不同示范采集方式的真机成功率

按矢量图柱高换算,误差棒为 95% 置信区间。橙色表示仿真里采的示范,蓝色表示带真机在线采的示范,半橙半蓝的柱子两者各半。所有策略都基于状态,都在真机上测 60 次。

30 条真机 + 30 条针对性仿真示范到 80.0%,多收 30 条真机示范(共 60 条)是 76.7%。只用 30 条仿真示范训练,58.3%,和 30 条真机示范的 56.7% 相当。论文对后者的解释是 PushT 本质上是运动学任务,成败主要取决于位姿而不是动力学效应,而位姿正好是 Embodied Gaussians 部署时最容易修正的。

疑点这组对比有两处不对等

① 补的 30 条仿真示范是专门挑失败状态采的,多收的 30 条真机示范没有这样挑,所以 80.0 对 76.7 混着「采在哪里」和「在哪里采」两个因素。② 误差棒很宽:60 次试验、成功率 80% 附近的 95% 置信区间约 ±10 个点,80.0 和 76.7 之间、58.3 和 56.7 之间都分不开。真正清楚的只有一条:补数据(任一种)明显好于不补。

实验 3 · 用哪种表征 · 原文 Figure 8b

虚拟腕部相机最好,真实相机图像最差

不同表征的真机成功率

按矢量图柱高换算,误差棒为 95% 置信区间。前三种表征来自仿真,最后一种是用真实相机图像的基线。

三种仿真表征都能完成任务:物体位姿 76.7%,虚拟静态相机 71.7%,虚拟腕部相机 81.7%,都高于用真实相机图像的 61.7%。腕部虚拟相机的策略还会在 T 形块离开视野时主动去找(论文说视频在项目页)。作者认为这和「腕部相机在某些场景下优于静态相机」的已有结论一致,并强调在 Real-is-Sim 里可以用同一批示范系统地比较各种虚拟相机摆位。

疑点用了多少示范、基线怎么跑,都没写

这组实验没说每个策略用了多少条示范。基于状态的策略 76.7% 正好等于实验 2 里「60 条真机示范」的结果,比「30 条真机示范」的 56.7% 高 20 个点,所以很可能是 60 条,但论文没有说明。真实图像基线是直接接真机、不经过仿真吗?训练数据是同一批示范的真实图像吗?也没交代。虚拟相机的渲染图(原文 Figure 6b)明显模糊,策略仍然表现最好,可能说明它主要靠的是粗略的位置信息。

附录 · 两个设计选择

为什么让真机跟随,为什么要带真机收示范

附录 Figure 1上:领导者配置,真机是领导者、仿真跟随,在线时策略的输出要直接送到真机(蓝线越过 sim–real 边界),离线时连线结构要改。下:跟随者配置(本文),在线和离线的连线完全一样,跨过边界的只有「仿真机器人 → 真机」和「真实观测 → 修正步」两条。

跟随者配置带来一个特点:真实世界总是比仿真孪生略微落后一点,系统因此总能「预览」一点点未来。作者说这一点概念上有意思,但选择它的主要原因很实际:软件结构简单得多,跨越 sim–real 边界的数据流从 3 条减到 2 条。

附录 Figure 2左:一个失败例子,策略动作(橙)把仿真里的 T 形块往一边推,视觉力(蓝)要把它拉向真实位置;物理是硬约束,修正施加不上,仿真和现实分开。右:跟踪失败率,用真机示范训练的策略约 6.7%,用纯仿真示范训练的策略约 38.3%(按矢量图柱高换算)。

纯仿真示范里,操作者可能贴着物体边缘动作,在仿真里撞上了、在现实里却没撞,修正机制恢复不了这种分歧。所以作者建议至少有一部分示范要带着真机采,让操作者和策略都隐式地学会「保持同步的动作方式」。

疑点38% 的跟踪失败,和 58% 的成功率怎么同时成立

正文实验 2 里,纯仿真示范训练的策略在真机上成功 58.3%,和真机示范相当;附录说纯仿真示范的策略跟踪失败率约 38%。图注称附录的例子是一个「夸张的情形」,所以两者可能来自不同的示范集,但论文没说清楚。如果是同一个策略,那么 58% 的成功里有多少是在跟踪失败之后侥幸完成的,值得追问。

读懂它

这篇真正说明了什么

关键 insight

1. 把差距从策略挪给仿真器

sim-to-real 通常要求策略对差距鲁棒;Real-is-Sim 要求仿真器持续追上现实。策略的输入永远是仿真状态,训练和部署的输入分布天然一致。代价是一切取决于同步质量:同步跟不上,策略就在一个错的世界里做对的事。

2. 在线和离线是同一套连线

跟随者配置下,接真机和不接真机只差两个开关:真机是否跟随、视觉力是否计算。这让「真机上收的示范」「仿真里补的示范」「仿真里的评估」都处在同一个状态空间,可以随意混用。

3. 仿真给了免费的观测设计空间

同一批示范可以渲染出任意视角的虚拟相机,也可以直接读出精确的物体位姿。论文用这一点比较了四种表征,结果是虚拟腕部相机最好。换真实相机摆位通常要重新采数据,这里不用。

4. 好的示范要「对仿真友好」

带真机收示范时,操作者能看到同步质量,会自然地放慢接触、留足间隙。附录显示纯仿真示范的跟踪失败率高得多。也就是说,在这个框架里,示范不仅要完成任务,还要让同步机制能跟上。

容易误解的地方

  • 不是一次性 real2sim 建模。场景只建一次,但部署时仿真每秒被修正 60 次,这才是「动态」数字孪生的含义。
  • 不是在仿真里训练、到真机上迁移。论文刻意避免只用仿真示范,所有轨迹都要求是真机能可靠执行、同时同步不掉的动作。
  • 不处理动力学差距。修正只作用在物体位姿上,PushT 又是准静态的推动任务。对依赖力、摩擦、形变的任务,这套机制能否同样有效,论文没有证据。
  • 「消除了 sim-to-real 差距」是框架层面的说法。差距没有消失,只是被交给了同步机制;附录里的跟踪失败就是它没被跨过去的情形。

FAQ

真机跟随仿真机器人,会不会因为跟踪误差越走越偏?

真机每个时间步都被设为仿真机器人当前的关节位置 qt,用高阻抗控制器 + Ruckig 平滑轨迹跟踪,误差不会在机器人这一侧累积。但如果真机推物体的实际效果和仿真不同,物体位姿就会分开,这时要靠视觉力把仿真物体拉回真实位置。论文没有报告真机与仿真机器人之间的关节跟踪误差,也没有报告物体位姿的同步误差。

为什么跟随 q 而不是 q′?

q′ 是策略给仿真机器人的期望关节,q 是仿真机器人在物理仿真里实际到达的关节。仿真机器人可能被物体挡住、被碰撞约束限制,q 才代表仿真里真正发生的事。让真机跟随 q,真机复现的就是仿真里的实际运动,而不是策略的意图,这样两边更容易保持一致。

为什么不把真实图像直接喂给策略?

真实图像在这里只用来修正仿真。如果策略读真实图像,它的输入就重新带上了真实世界的分布,离线模式下也没有真实图像可读,框架的统一性就没了。实验里真实图像基线 61.7%,低于三种仿真表征,但论文没有说明这个基线的具体训练和部署方式。

离线并行快 5–8 倍,瓶颈在哪?

论文只给了「20 个环境并行、比实时快 5 到 8 倍,取决于表征」这一句,图 5 标注 7 倍。图像表征要渲染虚拟相机,比基于状态的表征慢,这大概是倍数区间的来源,但没有给出各自的数字。

局限与疑点

作者承认的,和我们读出来的

论文自己提到的(附录 E 未来工作)

  • 仿真器虽然能用观测自我修正,但精度可以通过反传到物理参数或学一个残差物理网络来提高,减少对显式修正的依赖。
  • 更准确的仿真器可以支持在模仿学习策略上做强化学习微调。
  • 本文只做了离线评估,未来可以在部署时做在线规划。
  • 可以让 Embodied Gaussians 编码 DINO 等更高层的语义特征。
  • 离线评估用了与真机相同的初始状态,实际使用中可以随机化。

我们读出来的

  • 疑点离线成功由策略自己预测的进度 > 0.9 判定,没有用仿真里现成的真实位姿判定;绝对值与真机最多相差约 8 个点。
  • 疑点补数据实验中仿真示范是针对失败状态采的,真机示范不是;关键差距都在 95% 置信区间内。
  • 疑点表征实验的示范数和真实图像基线的做法未披露。
  • 疑点纯仿真示范的成功率(58%)与跟踪失败率(38%)的关系没有说明。
  • 只有 PushT 一个准静态、近似 2D、单刚体的任务,一台机器人;没有和任何 sim-to-real 或 real2sim2real 方法比较。
  • 没有任何表格;同步误差、跟踪误差、在线时延都没有量化。Ablations 一节标题存在但内容为空。
  • Embodied Gaussians 是作者自己的前作,「第一个能实时、通用地与物理环境同步的仿真器」这一说法没有给出对比依据。

放到专题里看

Real2Sim & Sim2Real 专题的第一篇

在 Real2Sim & Sim2Real 专题里,Real-is-Sim 代表一种思路:real2sim 不是建模阶段的一步,而是贯穿部署全程的持续同步;sim2real 不靠让策略变鲁棒,而靠让真机复制仿真机器人。专题目前只收了这一篇,下面借站内其他专题的论文做个参照。

Real-is-Simτ₀-WM 的 ACVSTT-VLA
「仿真器」是什么物理仿真(刚体 + 3D 高斯),由真实图像持续修正学出来的动作条件视频生成模型不用仿真器
和现实怎么对齐每秒 60 次光度误差 → 视觉力只在训练数据层面对齐,部署时不修正—
用来做什么策略的唯一接口;离线评估;补示范部署前为候选动作想象后果、打进度分—
怎么判断「成功」离线时:策略自己预测的进度 > 0.9奖励头预测的逐帧进度外部 VLAC 估计的进度差
  • 和 τ₀-WM:两者都把一个「仿真器」放进部署流程,但 τ₀-WM 的仿真器是学出来的视频模型,物理只隐含在生成里,部署时也不会被真实观测修正;Real-is-Sim 的仿真器有显式的物理和几何,并且一直被拉回现实。前者能处理开放场景,后者只在建好模型的物体上成立。
  • 和 TT-VLA:三篇都用「任务进度」当成功的代理。TT-VLA 用外部的进度估计器,τ₀-WM 训练专门的奖励头,Real-is-Sim 直接让策略自己报告进度。后者最省事,也最容易出现「自己给自己打高分」的问题。

术语表

读这篇会遇到的词

展开术语表
数字孪生
与真实场景保持同步的仿真副本。本文的孪生是「动态」的:部署时被持续修正。
Embodied Gaussians
作者前作的仿真器,物理用粒子(本文改为刚体),外观用 3D 高斯,以光度误差产生的视觉力与真实世界同步。
视觉力
由渲染图与真实图之间的光度误差推出、作用在仿真物体上的虚拟力和力矩(状态里的 ut)。
在线 / 离线模式
在线:接真机,仿真被真实图像修正,真机跟随;离线:不接真机、不算视觉力,可并行。
跟随者 / 领导者配置
跟随者:真机复制仿真机器人的关节(本文);领导者:仿真跟随真机。
q / q′
仿真机器人的实际关节 / 策略给出的期望关节。真机跟随的是 q。
进度值 p
策略输出中的标量,按示范已过时间的比例标注;离线评估中 p > 0.9 视为成功。
PushT
用推杆把 T 形块推到目标位置的经典模仿学习任务。
XPBD
扩展的基于位置的动力学,一种粒子/约束物理求解方法。
Ruckig / Pink
在线轨迹生成库 / 基于优化的逆运动学库。