本节视频
配音由 AI 合成。 视频章节、文字稿与出处
文字稿
文字稿
知行问
在电脑里练得好好的机器人,一搬到现实,怎么就不灵了?这一集讲从仿真到现实。为什么会有落差?两招来补:域随机化,和系统辨识。
现实的落差
还用二点一那个场景:桌子、杯子。这次,给杯子一个水平推力。先在仿真里推一把。杯子滑出去,靠摩擦,慢慢停下来。停在哪儿,看三样:杯子多重、桌面多滑、还有动作晚了多久。同样一推,换个摩擦,落点就变了。这,正是麻烦所在。在仿真里,这三个数你说了算。可到了真机上,它们你说不准。仿真和真机对不上,这就叫现实落差。摩擦、质量、延迟,全都可能有偏差。还有传感器噪声、没建模的摩擦。真机上的意外,数也数不完。举个真机的例子。同一条指令,电机热了,输出的力就变了。还有齿轮间隙、线缆拉扯。这些细节,仿真里默认都没有。仿真里,摩擦是一个干净的数。真机上,它到处都不一样。一个经典办法,来自一篇讲域随机化的论文。这篇论文称:只用仿真里的随机纹理训练。真实世界里的定位精度,能到一点五厘米。它的思路很妙。不追求仿真多真实,而是让仿真足够多样。变化足够多,真实世界,就可能像它见过的又一种变体。论文的设定里,训练只用了仿真图像。原来不是把仿真做得更真,是把它做得更杂!
域随机化
域随机化怎么做?训练每一局,都把仿真参数,随机换一批。注意,随机的不是加点噪声。是每一局,都换一套完整的世界。域随机化,直译就是随机这个域。域,指的就是参数的取值范围。先说摩擦。MuJoCo 默认的滑动摩擦系数是一。真实表面千差万别,所以要随机它。再说延迟。这一课把延迟,按步长的整数倍来模拟。默认一步是两毫秒,延迟就是攒几步再执行。延迟随机,就是每一局,等待不同的步数。有时快一点,有时慢一点。还有质量。杯子轻,一推就飞;杯子重,推着费劲。我们也把它随机。在仿真器里改这些很方便。直接改 model 里的摩擦和质量,再重置就行。延迟也好办。把控制信号,缓一缓再送进去,就模拟出晚到的效果。动手。在 Notebook 里跑很多局,每一局的参数都不一样。看结果散在哪儿。把每局的落点,画成一张分布图。同一个动作,结果散成一整片。这一整片,才是重点。策略要能在整片上都行,才敢往真机上搬。评测也一样。别只在一个环境里测,要在一整片上测。延迟这一项就够呛。真机的反馈,常常比仿真晚半拍。范围怎么定,是门手艺。太窄,没用;太宽,策略变笨。还有一篇论文,专门随机动力学。把仿真里训练的策略,直接搬上真机。论文称,策略不在真机上训练。也能完成它测试的推物体任务。这,就是域随机化的底气。把没底的东西,当成练习题,这招真聪明!
系统辨识
换个思路。与其把范围铺很宽,不如把真实参数,直接量出来。这就叫系统辨识:用真实数据,反推出模型里的参数。目标就一个:让仿真更像真机。做法很直接。让真机做一个动作,录下它的轨迹。记全位置、速度和时间。为什么不多测几次求平均?因为你要的是参数,不是平均落点。再在仿真里调参数。调到仿真的轨迹,和真机的对上为止。我们演示辨识摩擦。先假装某个摩擦值是真的,用它生成一条轨迹。再定义一个损失。候选摩擦跑出的轨迹,和真实轨迹差多少,就是损失。扫一遍候选值。损失最低的那个,就是辨识出来的摩擦。损失曲线,是一个碗。碗底那个点,就对应正确的摩擦。结果很漂亮。拟合出来的摩擦,和当初设的真值,几乎一样。轨迹对上了,说明仿真的动力学,和真机贴近了。这一步,是辨识的关键。辨识出的摩擦,可以喂回仿真。下一次训练,就更靠谱。一个个扫太笨?可以交给优化器,让它自动找到损失最低的点。但辨识有前提。模型结构得对,数据得够,参数还得可辨识。有的参数好辨识,比如摩擦。有的很难,比如藏在噪声里的小量。实践里,两招常常一起用。先辨识缩小范围,再随机兜住剩下的偏差。还能边跑边辨识。一边在真机上收数据,一边更新仿真。这类在线的做法,也叫自适应仿真。仿真跟着真机,慢慢校准。说到底,目标就一句话。让仿真里学到的,真机上也管用。一个铺开、一个收拢,原来是一对搭档!回顾一下,三个要点。一,仿真和真机有落差。二,域随机化,把不确定当练习题。三,系统辨识,把真实参数量出来。仿真和现实之间的缝,原来能这么补!参数对上了,模型装上机器人,延迟和算力又怎么卡?下一集见!
证据与出处
2 毫秒 · MuJoCo 默认仿真步长 0.002 秒 [O] · MuJoCo 文档 · XML Reference(v3.14.0)
动手与自测
小测公开,答案与解析在作答后显示;图文课里的练习答案需登录查看。

第 2.5 集的视频讲从仿真到真机(sim2real)。它讲了三件事:仿真和真机之间有“现实落差”,摩擦、质量、延迟和传感器噪声都可能对不上;域随机化在训练的每一局把仿真参数随机换一批,求杂不求真,让策略在一整片情况上都成立;系统辨识反过来用真机数据反推参数,片中演示从一条轨迹拟合摩擦,实践里常先辨识收窄范围,再随机兜住剩下的偏差。片中四张数字卡出自三份公开材料(MuJoCo XML Reference 的两处属性说明各对应一张):Tobin 等的域随机化论文(arXiv 1703.06907)称,只用带随机纹理的仿真数据训练,真实世界里的物体定位精度达到 1.5 cm;MuJoCo XML Reference(v3.14.0)写明默认滑动摩擦系数为 1、默认步长为 0.002 秒;Peng 等的动力学随机化论文(arXiv 1710.06537)称,策略不在真机上训练,也能完成它测试的机械臂推物体任务。本篇是这一集的图文课与练习,不重复文字稿,而是做三件视频只点到的事:把两篇论文的数字放回各自的任务与设定,看清一篇随机的是渲染、一篇随机的是动力学;读那两段 MuJoCo 文档,弄清在杯子场景里“随机摩擦、质量和延迟”各要改哪个量、用什么单位;再用一只假想的杯子手算一条损失曲线,看为什么只看停止位置分不开摩擦和质量,而带时间的速度可以。贯穿全文的规则:一个随机范围或辨识值,要写清它改的是模型里哪个量、单位是什么、来自哪份数据;论文里的数字只属于它自己的任务。
本节视频、文字稿与出处在本页上方,全季安排见课程大纲。上一课物理AI实验室 2.4:在 Isaac Lab 里并行练走路,读懂基准表的三列 FPS,再从训练命令算出总步数结尾问:可仿真中走得稳,真机上摔了怎么办?本课接着回答。桌子加杯子的场景沿用物理AI实验室 2.1:用 MuJoCo 搭抓取场景,把 XML 里没写的质量、单位、步长和碰撞规则算出来,那一课已经把 MJCF 里没写出来的默认质量、密度和步长算过;评测时怎样配对、怎样记失败标签与随机种子,物理AI实验室 1.8:评测,把“净增 2”拆成配对表,再给失败标签和随机种子算一笔账已经练过。本课不再重复这些。真机上的延迟、量化与控制频率是下一集(2.6)的内容,本课只把延迟当作仿真里的一个参数。
公开小测的 5 道题附完整解析;登录后可完成三项练习:为一只虚构杯子写一份域随机化规格,把每个参数落到 MuJoCo 模型里的具体量,把毫秒延迟换算成步数,并检查改步长之后范围的含义;用一条虚构的推杯轨迹手算损失扫描,分别判断摩擦、质量和延迟能不能从这份数据里辨识;审一份引用两篇论文的虚构 sim2real 计划,把每句话放回原文条件,再按“先辨识、再随机”改写范围与评测方案。每项都附分步解法、常见错误与 20 分评分标准。
一、两篇论文,各自随机了什么、报告了什么
两篇都是 arXiv 预印本,按本课程的分级属 R 级;下面的数字都是作者报告,本站没有复现。本课读的是两篇论文 HTML 版的摘要和前几节:Tobin 等读到方法一节模型结构的开头,Peng 等读到状态与动作的定义为止。
Tobin 等:域随机化,随机的是渲染。片中“1.5 厘米”那张数字卡对应摘要里的一句:
We find that it is possible to train a real-world object detector that is accurate to 1.5 cm and robust to distractors and partial occlusions using only data from a simulator with non-realistic random textures.
这句话说的是一个物体检测器:输入是一台单目相机的一帧画面,输出是每个目标物体的笛卡尔坐标。论文把物体定位看作通往一般操作技能的一步,并用检测器演示了在杂乱环境里抓取。因为相机未标定、只用单张图像,论文把仿真里的桌面高度固定,实际上变成了二维位置估计。方法一节列出每个训练样本都要随机的七项:
- 桌上干扰物体的数量和形状(每个场景 0 到 10 个);
- 桌上所有物体的位置和纹理;
- 桌子、地面、天空盒和机器人的纹理;
- 相机的位置、朝向和视场;
- 场景里灯光的数量;
- 灯光的位置、朝向和高光特性;
- 加到图像上的随机噪声的类型和大小。
纹理从三种里随机取:一个随机 RGB 值、两个随机 RGB 值之间的渐变、两个随机 RGB 值组成的棋盘格。相机在一个手工放置的初始点周围 10 × 5 × 10 cm 的盒子里随机放置,视角在指向桌面固定点的基础上每个方向最多偏 0.1 弧度,视场最多缩放 5%。图像用 MuJoCo 自带的渲染器生成,论文说这个渲染器并不追求照片级真实。所以视频里“只用随机纹理训练”是摘要的说法,方法里随机的远不止纹理。论文的引言还说,即使系统辨识做得很好,真实世界里仍有当前仿真器没有捕捉的效应,例如非刚性、齿轮间隙、磨损和流体动力学;这篇论文只处理其中低保真相机图像这一部分现实落差。方法一节列出的随机项里没有摩擦、质量或延迟,1.5 cm 是在它那几种几何物体、那张桌子和那台相机上测出的定位精度。
Peng 等:动力学随机化,随机的是物理。片中“真机零训练”那张数字卡对应摘要里的两句:
This adaptivity enables the policies to generalize to the dynamics of the real world without any training on the physical system. Our approach is demonstrated on an object pushing task using a robotic arm.
论文的任务是用一台 7 自由度的 Fetch Robotics 机械臂把桌上的圆盘形物块(puck)推到每局随机给定的目标位置;物块离目标在给定距离之内奖励为 0,否则为 −1,并用 Hindsight Experience Replay 处理这种稀疏奖励。策略是循环神经网络,仿真模型用的是 MuJoCo。训练目标从在一个动力学模型下最大化回报,改成在动力学参数 μ 的一个分布上最大化期望回报。摘要说,尽管只在仿真中训练,策略部署到真机时能保持相近的表现,并且对显著的标定误差鲁棒;正文还说,带记忆的策略比无记忆的前馈策略更能应对训练时的变化,也更能泛化到真实世界的动力学。这些都是作者的说法。注意“不在真机上训练”不等于“不在真机上测试”:论文的结论正是部署到真机后得出的。本课读到的文本在方法一节定义状态与动作处结束,不包括随机化参数的清单、各自的范围、成功率和试验次数,所以本课不替论文列出这些。
| 论文 | 随机的是什么 | 训练出的是什么 | 报告的结果(R,作者报告) | 不能据此推出什么 |
|---|---|---|---|---|
| Tobin 等,arXiv 1703.06907 | 渲染:纹理、相机、灯光、干扰物、图像噪声 | 从单张图像估计物体位置的检测器 | 真实世界定位精度约 1.5 cm,对干扰物和部分遮挡鲁棒 | 任何关于摩擦、质量、延迟的结论;推杯落点的误差 |
| Peng 等,arXiv 1710.06537 | 仿真的动力学(本课读到的文本没有列出参数清单) | 推物块的循环神经网络策略 | 不经真机训练,部署到真机仍能完成推物块任务 | 上真机前可以不做真机测试;本课读到的文本之外的参数、范围与成功率 |
登录后继续阅读本课其余各节、自测题与答案。
局限 / 注意
- Tobin 等与 Peng 等都是 arXiv 预印本,属 R 级;文中的数字都是作者报告,本站没有复现。本课读的是两篇论文 HTML 版的摘要和前几节(Tobin 等读到方法一节模型结构的开头,Peng 等读到状态与动作的定义),没有读到 Peng 等的随机化参数清单、范围、成功率与试验次数,也没有读到 Tobin 等的消融结果。
- MuJoCo 文档绑定 v3.14.0。接触对的摩擦按 solmix、priority 合成的规则在 Contact parameters 一节,本课没有读,也不说明默认的合成方式;其他版本的默认值和属性可能不同。
- 以下是本课的建模选择或推断,原文没有这样写:延迟按步长的整数倍模拟(片中也注明这是本课的做法);第三节与练习里的简化模型(瞬时冲量、恒定滑动摩擦、g = 10 m/s²)和 Δv 损失;“这条轨迹只能辨识 J ÷ m”“延迟的信息不在数据里”都是在这个模型下的推断;随机范围的余量与评测的分档方案。
- 第三节与练习里的杯子 B、杯子 C、团队 Q,以及所有摩擦、质量、冲量、速度、距离、延迟、步长选择、局数和成功率都是虚构的;0.41、0.30、0.246 kg 等只在这些假设下成立。
- 片中画面标注的延迟范围 0–40 步注明与 Notebook 相同;本课没有运行 Notebook,也没有核对它的步长,折算成 0–80 ms 只在默认步长下成立。视频说真机的反馈“常常”晚半拍,本课读到的材料里没有对应的数字。
- 纸面计算与仿真结果都不是硬件安全验证;在真机上试验要另做安全准备。
链接
- 物理AI实验室:一套每个数字都能核对的物理 AI 课程(课程大纲)
- 物理AI实验室 2.4:在 Isaac Lab 里并行练走路,读懂基准表的三列 FPS,再从训练命令算出总步数
- 物理AI实验室 2.1:用 MuJoCo 搭抓取场景,把 XML 里没写的质量、单位、步长和碰撞规则算出来
- 物理AI实验室 1.8:评测,把“净增 2”拆成配对表,再给失败标签和随机种子算一笔账
- Tobin 等:Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World(arXiv 1703.06907)
- Peng 等:Sim-to-Real Transfer of Robotic Control with Dynamics Randomization(arXiv 1710.06537)
- MuJoCo 文档 XML Reference(v3.14.0):geom 的 friction
- MuJoCo 文档 XML Reference(v3.14.0):option 的 timestep



