跳转至

第 7 章 仿真到现实

"VLA 出来之后 sim 就不重要了"是 2024 年最流行的一句懒话。事实正相反:sim 在 2026 年比 2020 年更不可替代,只是用法变了三轮。


2025 年春天,做双足人形的初创公司里反复出现过这么一幕。一个 1.4 米高的人形,在 Isaac Sim 里稳定走了八个小时,地形从平地走到 5 度斜坡再到楼梯,从 0.3 m/s 到 1.2 m/s 全速度区间都收敛得非常漂亮。reward 曲线是教科书。CEO 兴奋得不行,要求当周就上实机。

实机上,这个 policy 第一步就摔了。

不是慢慢失去平衡那种摔,是抬腿那一刻就栽。回放慢镜头看,仿真里足底跟地面的摩擦系数预设是 0.8,实机房间地板是抛光木地板,实测 0.35 左右。policy 学到的步态依赖足底有足够静摩擦(friction,物体不滑动时的摩擦力)提供推进力,实机这点摩擦给不出来,第一帧脚就滑了,整个二阶动力学在 80 毫秒里崩。

这是 2026 年 sim2real 最具代表性的一幕。不是视觉对不上,是接触对不上。视觉那一项这两年缩得很厉害,但接触动力学(contact dynamics,物体碰撞挤压时的力学)的 gap 没有缩,还在杀人。这件事很多新进来的研究者没意识到,因为他们看的 demo 视频里 policy 在仿真里走得稳稳的,画面又渲染得非常真,下意识就以为搬到实机也是同一回事。

下面这章讲的就是这件事。Sim 不死,但你必须知道它哪一段还活着、哪一段已经过气、哪一段从来就没好用过。这个判断今天比 2020 年时候更难做,因为 sim 这两年既往前走了一大步(视觉、photorealistic(照片级真实渲染)、世界模型),又有一大块原地没动(接触、柔体、流体)。很多团队的失败都来自把缩了的那一段的成功外推到没缩的那一段


一、十年简史

Sim2real 不是 LLM 来了之后才有的概念。2017 年这个领域就开始系统讨论。

Domain Randomization(DR,训练时把场景物理参数随机化)(Tobin 等,OpenAI,2017)。这是这条线的开山之作。思路一句话讲清楚:既然你不知道仿真和现实差在哪,那就在仿真里把所有你想得到的东西都随机化一遍,纹理、光照、摄像机位置、物体颜色、桌面材质,让网络学会对所有这些差异都不敏感。等到上实机,现实只是这巨大随机分布里的一个样本而已。OpenAI 后来用这一招把模拟里训出来的 6-DoF pose estimator 直接搬到实机抓取,第一次把 sim2real 做成了一种工程范式。

Domain Adaptation(让模型从仿真域迁到真实域)。比 DR 更"显式"的一条路。先在仿真里训一个模型,再用少量真实数据做对抗式对齐(GAN-style)或者 feature alignment(CORAL、DANN)让仿真特征和真实特征在 latent space 重合。2018-2020 这条线被吃得很透,但效果一直不如 DR 干脆。问题是它需要假设真实分布是稳定的,这个假设在机器人现场几乎不成立。

System Identification(SysID,测真机参数填回仿真)。最古典的一招。直接去测你机器人的电机常数、连杆质量、摩擦系数、惯性矩阵,把这些参数尽量精确地写进仿真里。问题是有些东西没法精测:齿轮 backlash(齿轮换向时的空程间隙)、电机温度漂移、夹爪指尖橡胶磨损。所以 SI 永远只能解决一半

Automatic Domain Randomization(ADR,让随机化范围自己撑大)(OpenAI Rubik's Cube,2019)。把 DR 的随机区间也变成可学习的。任务是用 Shadow Hand 单手解魔方,他们让仿真自动撑大随机化范围,直到 policy 还能撑住。这是 sim2real 当时的天花板,也是这条路第一次被明确证明能解决精细操作任务。但它的成本也劝退了大半个领域:单次训练大概 13000 年仿真时间,几千张 GPU。OpenAI 当时是赌自己有这个算力,赌赢了。

这四条线到 2022 年大致定型。然后 LLM 来了,整个领域被搅了一遍。


二、引擎这一层,2026 年的几家

写一章 sim 不能不点几个引擎的名。

MuJoCo。原本 Emo Todorov 在 Roboti LLC 卖的商业仿真器,2021 年 10 月被 DeepMind 收购并彻底开源。这件事的影响超过当时所有人的预期。MuJoCo 是接触动力学这一项目前最准的开源仿真器,特别是 contact constraint 那一套,比 PhysX 干净。学界做 RL 用 MuJoCo 是默认选择。2023 年 DeepMind 又搞了 MuJoCo MJX 把它跑到 GPU 上做大规模并行,性能跟 Isaac 那一套开始可以比。MJX 这件事在 2024 年学界普及得很快。

PhysX / Isaac Sim / Isaac Lab。NVIDIA 这一套。PhysX 是底层物理引擎,Isaac Sim 是基于 Omniverse 的高保真仿真平台,Isaac Lab(前身 Isaac Gym)是它专门用来做 RL 训练的高性能层。优势是渲染漂亮、并行规模大、生态完整。NVIDIA 自己发的 GR00T 这一线 humanoid 工作几乎都跑在 Isaac Lab 上。2025 年 GTC 之后 NVIDIA 又把 Isaac Lab 跟 Cosmos 这套世界模型对接,下面会讲。劣势:接触动力学没有 MuJoCo 准,PhysX 在多体接触和软体上一直被诟病。

Drake。Russ Tedrake 在 TRI / MIT 那边带的开源项目。Drake 不是给你跑 RL 的。它走的是另一个流派:精确的多体动力学,符号化的 Lagrangian,可微分接触模型。如果你做的是基于优化的控制(trajectory optimization、MPC)、需要严格的物理一致性,Drake 是最干净的选择。代价是学习曲线陡,社区比 MuJoCo 小一个量级。

Genesis。CMU 牵头,2024 年 12 月开源。这个东西出来在学术圈刷了一周屏。卖点是统一架构里同时跑刚体、软体、布、流体、关节体,全部 GPU 加速,号称比 MuJoCo MJX 还快几十倍。声称跑得最快这件事后来有人复现质疑过,但 Genesis 把"一个引擎里同时支持多种物理"这件事推到学界主流的注意力上,是 2024 年底的一件大事。2026 年看 Genesis 还很早,工程稳定性比不过 MuJoCo,文档也不算完善,但这条路是对的。

Habitat。Meta(FAIR)的 navigation 仿真平台。专注于室内导航、场景理解、视觉。如果你做的是 mobile manipulation 或者 home robot,Habitat 的 3D 室内场景库(HM3D、Replica)是别的家给不了的资产。

SAPIEN。UCSD Hao Su 那边出的,专门做 articulated objects。所有"打开抽屉、转开瓶盖、按按钮"这一类任务最早跑通的高质量数据集(PartNet-Mobility)就在 SAPIEN 上。

Bullet / PyBullet。老牌选择。十年前几乎所有 RL 论文都在 PyBullet 上跑。今天它的角色是学习用、教学用、原型用。生产环境基本被 MuJoCo 和 Isaac 替掉了。

如果你今天起手新项目要选一家,给一句粗糙的建议:做 RL 选 Isaac Lab 或 MuJoCo MJX,做精确控制选 Drake,做家庭场景选 Habitat 拼 SAPIEN,想试新东西就装一份 Genesis 跟着看一年


三、"VLA 出来 sim 就死了"是一句外行话

2024 年底开始,一种说法在 VC 圈和一部分新进来的研究者里流行:既然 π0 这一线证明了大量真实 teleop 数据 + 互联网视频 = 通用具身策略,那 sim 就是上一代留下的拐杖,可以扔了

错。错得离谱。讲三个原因。

第一,长尾边缘 case 的真实数据永远收不齐。一台机器人在客户家里需要面对的情况:家里养的猫突然窜出来、地上有水、孩子伸手过来挡、桌上掉下一根头发缠在夹爪上。这一类事情在你部署的前三个月可能一次都不会发生,但累计部署 1000 台、运行 6 个月后就一定会发生几百次。你不可能 teleop 一万次"猫突然冲出来"的演示数据。这种数据只能从 sim 里来。

第二,安全测试只能在 sim 里做。一台 60 公斤的人形机器人 fine-tune 完一个新版本之后,谁来验证它不会在某个角落 case 里把使用者撞翻?真实测试做不来。你不能在客户家里"测试" policy 会不会失控。这一项 sim 不是首选,是唯一选。这件事在自动驾驶界过去十年的教训已经很清楚了。Waymo 每开一公里真实路对应仿真里 100 公里,原因不是省钱,是真实路上跑不了 corner case。具身机器人这条路要走的是同一遍。

第三,大规模 RL 还是只能 sim。teleop 给你的只是模仿学习的数据,没有人会去 teleop 一千万次让你做 PPO。任何需要在搜索空间里自己 reward 出来的能力,动态平衡、跌倒恢复、被推一下还能稳住、阻抗下的力控策略,这些到今天为止全部只能在 sim 里训。HumanPlus(Stanford 2024)、ASAP(CMU 2024)、ANYmal 那一线(ETH Hutter,从 2018 一路到 2024 的 ANYmal-X)训出来的所有脚下能力,都是 sim-only RL 然后 distill 到实机的。

所以下次再听到"VLA 出来 sim 就死了",你可以反问一句:那你的安全验证打算怎么做。这个问题没有人能用真实数据回答。再补一刀:你的下一代 humanoid 上面那条新腿,你怎么训它跌倒之后翻身爬起来。这件事真实数据也给不了,你不能把一台 60 公斤的人形真摔几万次让它学。这两个问题加一起,sim 的根就立住了,谁都拔不掉。


四、视觉这一项确实缩了

要承认的也得承认。视觉的 sim2real gap 在 2023-2025 这两年缩得很厉害,几乎可以说"基本消失"了。三件事叠起来的结果。

第一,渲染质量。Isaac Sim 用 RTX path tracing,Omniverse 那一套,渲染出来的 RGB 跟真实图像在 ImageNet 类的 perceptual metric 上几乎打平。

第二,DR 仍然有效,而且更便宜。Tobin 那一套思路在大模型时代变得更划算,因为下游 policy 网络已经用了海量 ImageNet / CLIP / DINO 预训过,对纹理变化的鲁棒性是先天的。你只需要随机化几何和光照,纹理那一项几乎不用管

第三,VLM 的 backbone。OpenVLA、π0、Helix 用的 vision backbone 都是在数十亿张互联网图上预训过的。在仿真里看的图,对它来说就是分布里的一个普通样本。网络从来没把仿真视为一个独立的域

这一项缩到什么程度?2025 年中 Berkeley 那篇 SimplerEnv 做了一件事:让同一个 VLA policy 在仿真和实机里跑同一个任务,结果之间的相关系数能到 0.9 以上。这意味着以后你不用再每次都拉到实机才能评估一个 policy 改动好不好,仿真已经是一个有效的 leaderboard。

所以视觉这一项,感知、识别、scene understanding,sim 是真东西,能用,能放心用。


五、接触这一项没缩,还在杀人

但视觉只是 sim2real 的一半。另一半,接触动力学,这一项在 2026 年还跟 2020 年一样难。开篇那个双足摔在抛光木地板的故事就是接触 sim2real 的一个标本。

为什么没缩?

摩擦。Coulomb friction 这个模型在物理课本里看着很干净,写进引擎里它会从五个不同的地方泄漏:静摩擦和动摩擦的过渡、各向异性、temperature dependence、表面光泽度跟摩擦系数的非线性关系、湿度。一台机器人在家里跑,地板上有一滴橙汁没擦干,仿真里你不会建模这一滴。

柔体。把毛巾叠起来这件事,仿真里的布料模型有十几种(Position Based Dynamics、XPBD、FEM),每一种在不同变形量下都有不同程度的失真。最常用的 PBD 在大变形时会出现穿透和扭曲,最准的 FEM 跑不到 RL 需要的 1000Hz。到 2026 年还没有一种"既准又快"的布料模型

流体和粒状物。倒水、撒盐、抓豆子、抓米。SPH 和 MPM 在仿真里是真东西,但跑速跟 RL 需要的并行度差几个数量级。NVIDIA Flex 在游戏行业很好用,机器人需要的精度它给不出。

夹爪指尖橡胶磨损。这是最阴险的一项。一对硅胶指尖在你 sim 里被建模成一个完美的弹性体,刚度系数恒定。实机上这对指尖第一周磨损 5%,第二周磨损 10%,半年后表面变滑、刚度下降。你 sim 里那个 policy 训出来对应的是新指尖的世界,部署一个月之后机器人在抓同一个杯子上开始打滑

这一类问题汇起来一句话:接触是一个高频、强非线性、极度局部的现象,仿真里的离散化、积分器步长、约束求解都给不出 1:1 的复刻。所以接触敏感的精细操作策略,到 2026 年仍然必须以真实数据为主。这件事到下一代触觉传感器(GelSight、DIGIT 这一类视觉触觉)和差分接触建模成熟之前,不会改变。


六、这一波新东西

2024-2025 这一年半 sim2real 多了几个重要工具。一一点名。

Real2Sim2Real。NVIDIA 的 Cosmos(2025 年 1 月发布的世界基础模型)就是这条路的代表。流程是:用相机拍一段真实场景的视频,让 Cosmos 从视频反推一个可以在 sim 里跑的 3D 世界,然后在这个世界里用 RL 大量增广数据,最后 distill 回实机 policy。RoboCasa(CMU+NVIDIA,2024)走的是类似的思路,专门做厨房场景的 real2sim2real 数据增广。

这一招的关键是让你不再从零搭仿真场景。以前一个仿真厨房要美工建几周,现在你拍一段视频几分钟搞定。代价是物理还得另外补,因为视频反推出来的几何对,但是质量、惯量、关节限位这些东西视频里看不出来。所以 real2sim2real 这一套到 2026 年仍然是视觉真,物理半假,对视觉为主的任务有效,对接触为主的任务还要再走一段路。

Procedural worlds。ProcTHOR(AI2,2022)和 Holodeck(UPenn+AI2,2024)走另一条路:用程序化生成大量随机室内场景。Holodeck 用 LLM 生成场景描述,然后用规则化的 layout 生成器摆家具。一夜之间可以生成上万个不同的家。任何需要场景多样性而不需要场景精确性的任务(导航、scene understanding),这条路非常划算。

Photorealistic via Gaussian Splatting。3D Gaussian Splatting 是 2023 年视觉那边的大事,2024 年迅速被机器人借走。流程:在真实场景里转一圈相机录视频,重建出一个 Gaussian Splatting 表示,把这个表示嵌进仿真器当作背景渲染。结果是几乎跟原场景视觉无差,但是机器人可以在里面交互。NeRF 那一代做不到,是因为 NeRF 渲染太慢,跑不到机器人需要的 30Hz+。GS 改了这件事。

这三样东西凑一起,视觉端的 sim 数据成本从"几万美元一个场景"降到"一个研究生一周做几十个"


七、RL in sim → distill to real

这是 2024-2025 年低层运动控制的主流范式,必须单独讲一节。

具体长这样:

  1. 在仿真里跑大规模 PPO 或 SAC,训练一个 teacher policy。teacher 拿到 privileged observation:仿真里能拿到的所有 ground-truth(精确的关节速度、地面摩擦、外力)。
  2. teacher 学好以后,冻住它
  3. 在仿真里跑一个 student policy,输入只是机器人能拿到的真实传感器(IMU、关节编码器、视觉),用 supervised learning 让它去模仿 teacher 的输出。这一步叫 distillation
  4. student distill 完以后直接搬到实机,配合 DR、ADR、再加一点 system identification 微调。

为什么不直接训 student?因为传感器看不到的状态太多,直接训收敛太慢。先用 teacher 把策略学出来,再让 student 学怎么从有限传感器里复现这个策略,分两步比一步走快得多。

代表工作几条线:

ANYmal(ETH Hutter)。这条线从 2018 的 ANYmal-B 一路做到 2024 的 ANYmal-X,是四足机器人 sim2real 的范式样板。每一代都是 Isaac Lab + RL + distill 的组合。盲走、跨障碍、爬楼梯、被踢一脚还能站住,都是这一套训出来的。Hutter 自己后来开了 Anybotics 公司,瑞士那家。

HumanPlus(Stanford,2024)。把这一套搬到双足人形上。teacher 在 sim 里学的是从 motion capture 数据里 retarget 过来的人类动作,student 学怎么从 ego-vision 复现。结果是一台 1.4 米的人形能在户外做开合跳、深蹲、打拳,全部 sim2real。

ASAP(CMU,2024)。专门解决这条范式的一个老问题:sim 里训出来的步态在实机上 timing 总是差一点。ASAP 的做法是在 sim 里 augment 一些"动作时间被随机拉长缩短"的数据,让 student 学到时序鲁棒性。这一招看起来小,但实测把双足人形从 sim 到实机的成功率从 60% 拉到 85%。

这一线工作的共同特征是:底层运动控制完全 sim-only,没用任何 teleop 数据。这件事跟 VLA 那一线形成强烈对比,也是为什么"sim 死了"这个判断如此荒谬。底层 locomotion 没有 sim 就没有这两年的人形革命。Figure、1X、Unitree、宇树、智元这一波公司里所有能稳走、能爬楼、能被推一脚还稳住的双足,底下跑的都是这一套范式的某种变种。没有一家是靠 teleop 教会双足怎么平衡的,那条路根本不通。


八、立场

整理一下我自己用了两年的判断。

视觉这一项用 sim 训没问题。perception、scene understanding、object detection、6-DoF pose estimation 这些环节,2026 年的 sim 数据已经足够支撑你训出一个能直接上实机的网络。photorealistic + DR + 大模型预训这三件事叠起来,视觉 sim2real gap 已经小到可以忽略。这一段你尽情用。

底层 locomotion 用 sim RL + distill。双足、四足、躯干平衡、跌倒恢复、被推恢复,这一类高频低层控制 2026 年的最佳实践就是 ANYmal / HumanPlus / ASAP 那一套。不要尝试用 teleop 收集这一类数据,做不到

接触相关的精细操作 policy 必须以真实数据为主。抓杯子、折毛巾、剥橘子、按按钮、转瓶盖、装订书钉这一类,sim 仍然不靠谱。teleop 真实数据 + π0 那一套 fine-tune 是 2026 年的现实选项。sim 在这一段的角色是辅助:先在 sim 里把 policy bootstrap 到能动的水平,再用少量真实数据对齐。主菜是真实数据,sim 是配菜。

长尾边缘 case 和安全验证用 sim。这两件事真实数据无法覆盖,必须 sim。这是 sim 在 VLA 时代不可替代的根

下面这张表是我自己用顺手的一张判断尺:

任务类型 sim-only 真实数据 + sim 增广 real-only
双足/四足 locomotion
跌倒恢复、动态平衡
室内导航、避障
物体识别、scene understanding
抓刚体物体
折布、抓食物、剥水果
力控装配(USB、螺丝)
长程家务任务
安全验证、red team
边缘 case 数据增广
客户现场最后调优

注意这张表跟第 1 章那张端到端/分层的表的关系:它不是替代关系。一个家务机器人可能既需要分层架构,又需要在底层 locomotion 用 sim、在抓取那一段用真实数据。这两张表叠起来用。

最后一句话送给所有还在纠结 sim 死没死的同学:仿真不是替代真实数据的工具,它是真实数据收不到的那一段的唯一工具。这两件事不冲突,永远不冲突。把它们对立起来谈的人,要么没在工业现场部署过具身机器人,要么在卖一种特定的叙事。两种情况都跟你怎么把项目做成无关。


练习

找 ASAP、HumanPlus、ANYmal-X 这三篇 paper 里的失败 case 章节(不要看主结果),把它们各自承认的"在实机上还是会失败的情况"列出来。三家失败的共同特征是什么?这个共同特征对应着这一章里讨论的哪一种 sim2real 难点?

把你最熟悉的一个 demo video 按这一章的判断表打分:它的任务里哪些子环节该 sim、哪些该 real-only、哪些该混合。视频里的公司实际上选了哪一种?如果不一致,是公司选错了,还是 demo 里没有展示出他们其实做了混合?

重读一遍 Tobin 等 2017 那篇 Domain Randomization。这一篇出来快十年了,它当年没法解决的问题里,哪些今天已经被 photorealistic + 大模型 + Gaussian Splatting 解掉了?哪些还没解? 注意这是两个不同的问题,不要笼统地回答"DR 还活着"。

找一台你正在用的或者准备买的机器人,列出它身上你估计 sim 建模会失真的所有部位:减速器 backlash、电机摩擦、夹爪指尖材质、皮带张力、传感器噪声分布、线缆牵引力。这张表里有几样是你能精测的?精测不到的那几样,你打算怎么在 policy 里 hedge?

下一章:第 8 章 数据