林小雨第一次走进飞行模拟器,看着舱外翻滚的云层,手心冒汗。教官老周在旁边说:“别紧张,这架'飞机'值好几百万,但你随便摔,摔一次成本就是几度电。”真飞机一小时油费好几万,一个失误可能机毁人亡;而模拟器里,她练习一万次侧风降落都可以。但她很快发现了问题:模拟器里练得再顺手,上了真机,操纵杆的手感、仪表延迟、气流颠簸全都不一样——这就是“仿真”和“现实”之间那条看不见的鸿沟。这堂课要讲清楚:如何搭一个靠谱的“飞行模拟器”(仿真环境),以及模拟器里练出的本领,如何真正带到真机(Sim2Real 迁移)上去。

岗位关联

掌握仿真环境搭建与 Sim2Real 迁移,是机器人、自动驾驶领域的 AI 工程师把模型从论文推向真实产品的核心技能,也是企业用低成本数据训练高价值策略的关键杠杆。

目录
  1. 可视化演示
  2. 仿真价值概览:为什么先在虚拟世界飞
  3. 物理引擎:模拟器里的“牛顿”
  4. 场景建模:给 AI 一双会“看”的眼睛
  5. 域随机化:教练最爱制造意外
  6. Sim2Real迁移:从模拟器飞向真机
  7. 仿真平台:选一台合适的“飞行模拟器”
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示仿真到真实的策略迁移流程、主流物理引擎MuJoCo/Bullet/Isaac的性能对比,以及RGB深度LiDAR多传感器仿真模拟。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+_captions.sim2real+'

仿真价值概览:为什么先在虚拟世界飞

飞行模拟器不是奢侈品,而是航校的“印钞机替代器”——一台真机一小时成本上万,而模拟器训练一次只要几度电。林小雨可以在一晚上把“盲降”练五十遍,把发动机失火、单侧起落架故障这些一辈子碰不上一次的险情都过一遍。仿真环境的价值正是如此:虚拟世界训练、低成本试错、安全可重复,这三个词是所有 Sim2Real 故事的起点。

但模拟器训练有个隐含代价:虚拟世界再逼真,也和真机有偏差。老周说:“你在模拟器里闭着眼都能落下去,可一到真机,风向、仪表延迟、操纵杆阻尼全变了。”这条“模拟器手感”与“真机手感”之间的差距,就是 Sim2Real 差距。搭建仿真环境的第一性目标,不是把画面做得多华丽,而是在可控成本内把差距压到最小。

从工程视角看,机器人的一次“训练回合”就是一次交互。真机回合需要人盯着、怕摔坏、还要充电,仿真回合则可以在 GPU 上并发跑上千个。总成本可以写成一个简单的账:

所以林小雨的教练手册第一条就是:能在地面练的绝不上天。仿真环境的意义,就是让 AI 先把所有“险情”在虚拟世界里摔够本。

Ctotal=Nsim×csim+Nreal×creal,csim≪creal\displaystyle C_{total} = N_{sim}\times c_{sim} + N_{real}\times c_{real}, \qquad c_{sim} \ll c_{real}
总训练成本 = 仿真交互次数 × 单次仿真成本 + 真机交互次数 × 单次真机成本,后者通常是前者的成百上千倍。
  1. C_total(总成本)训练一个可部署策略要花的全部资源,经费、电费、时间都算进去。
    Ctotal\displaystyle C_{total}
  2. N_sim × c_sim(仿真开销)智能体在虚拟世界交互的次数乘以每次的边际成本,几乎可以忽略。
    Nsim×csim\displaystyle N_{sim}\times c_{sim}
  3. N_real × c_real(真机开销)智能体在真实世界交互的次数乘以单次成本,包含磨损、电力和人工监控。
    Nreal×creal\displaystyle N_{real}\times c_{real}
  4. c_sim ≪ c_real(成本量级差)一次仿真碰撞只耗几度电,真机一次跌倒可能烧毁电机,这就是仿真的根本动力。
    csim≪creal\displaystyle c_{sim} \ll c_{real}

物理引擎:模拟器里的“牛顿”

模拟器里飞机为什么会被气流托起来?为什么一拉杆机头就抬?这不是美术师画出来的,而是一套看不见的“牛顿”在逐帧算账——它就是物理引擎。物理引擎负责回答三个问题:物体受什么力、怎么运动、碰到东西怎么反应。林小雨在模拟器里感受到的每一次颠簸,都是引擎对刚体动力学和接触与摩擦的数值计算结果。

物理引擎把连续世界切成一小段一小段时间片,每个时间片叫一个步长。它先根据合力求出加速度,再用加速度更新速度、用速度更新位置,如此循环。最常见的递推方式叫欧拉积分,公式非常朴素:

除了积分,物理引擎还要处理“接触”:轮子压到跑道、机械爪捏住木块,都要计算接触力和摩擦力。老周说,真机的“手感”一半来自操纵杆,另一半就来自这套接触求解。接触算得准,策略学到的动作才不至于在真机上“手抖”。

vt+1=vt+a Δt,xt+1=xt+vt+1 Δt\displaystyle \mathbf{v}_{t+1} = \mathbf{v}_t + \mathbf{a}\,\Delta t, \qquad \mathbf{x}_{t+1} = \mathbf{x}_t + \mathbf{v}_{t+1}\,\Delta t
下一时刻速度 = 当前速度 + 加速度 × 步长;下一时刻位置 = 当前位置 + 新速度 × 步长。步长越小,模拟越接近真实,但计算量越大。
  1. v_t(当前速度)物理引擎时刻记住物体“现在飞多快、往哪飞”,这是状态的一部分。
    vt\displaystyle \mathbf{v}_t
  2. a = F/m(由力求加速度)把物体所受合力除以质量,得到加速度,这是牛顿第二定律的体现。
    a=F/m\displaystyle \mathbf{a} = \mathbf{F} / m
  3. 速度更新用加速度和步长算出下一时刻速度,模拟气流扰动就是这样一点点改变飞机状态。
    vt+1=vt+a Δt\displaystyle \mathbf{v}_{t+1} = \mathbf{v}_t + \mathbf{a}\,\Delta t
  4. 位置更新用新速度再推一步位置,两个公式交替执行,就构成了一个“仿真时钟”。
    xt+1=xt+vt+1 Δt\displaystyle \mathbf{x}_{t+1} = \mathbf{x}_t + \mathbf{v}_{t+1}\,\Delta t

场景建模:给 AI 一双会“看”的眼睛

飞行员不只看仪表,还要看窗外:跑道灯、云层、地面的楼。AI 也一样——它需要传感器仿真,也就是在虚拟世界里“渲染”出摄像头图像、激光雷达点云。这部分的仿真环境搭建叫场景建模:先创建3D 资产(飞机、仓库、障碍物),再布置世界布局(物体位置、地面、光照),最后决定材质与光照如何反射到“眼睛”里。

林小雨发现,模拟器里跑道上的白线边缘锐利得像刀切,而真机摄像头的画面是带噪点、会过曝的。传感器仿真最关键的不是把图渲染得好看,而是把真实传感器的噪声、延迟、分辨率损失一起建模出来。否则 AI 在仿真里“看得太清楚”,一到真机就“近视”了。

这一切的数学起点是一张“小孔成像”模型:三维世界里的一个点,经过镜头投影到二维图像平面。

场景建模的终极标准不是“像不像照片”,而是“AI 看到的信息是否与真机一致”。老周的比喻很精辟:“模拟器里的跑道,是为了让学员练出真本事,而不是拍大片。”

x=f XZ,y=f YZ\displaystyle x = f\,\frac{X}{Z}, \qquad y = f\,\frac{Y}{Z}
图像上的像素坐标等于焦距乘以物体三维坐标再除以深度。离镜头越远,投影越小,这就是透视。
  1. X, Y, Z(三维坐标)真实世界中物体上某一点的空间位置,Z 表示它离相机镜头的深度。
    (X,Y,Z)\displaystyle (X, Y, Z)
  2. f(焦距)镜头把光线“折”到成像面的程度,单位用像素表示,决定视野大小。
    f\displaystyle f
  3. X / Z、Y / Z(透视除法)把空间坐标按深度缩放,深度越大成像越小,产生近大远小效果。
    X/Z\displaystyle X / Z
  4. x, y(像素坐标)物体最终落在图像传感器上的位置,也是神经网络“看到”的输入。
    x,y\displaystyle x, y

域随机化:教练最爱制造意外

老周是个“难缠”的教练:今天的模拟器里侧风 8 米每秒,明天就变成 15 米,有时还随机安排一场暴雨。林小雨起初抱怨“教练故意刁难”,后来才明白,这恰恰是模拟器最有价值的部分——域随机化。既然我们无法把真实世界 100% 建进仿真里,那就反过来:在训练时随机改变环境参数,让策略在各种“意外”里都练过一遍。

域随机化主要有四招:参数随机化(重力、摩擦系数、质量)、物理随机化(接触刚度、电机扭矩)、外观随机化(颜色、纹理、光照)、动态随机化(初始位置、干扰力)。每一招的本质都是同一个思想:别把宝押在一个“精确”的仿真上,而是押在一整片“可能的世界”上。

形式化地说,我们不再只优化“某一个环境”下的表现,而是优化“一整类随机环境”下的平均表现:

域随机化的好处是:策略不再“背下”某个固定环境的答案,而是学会了在所有环境里都通用的规律。林小雨后来在真机上遇到大风时,手一点都不抖——因为这种大风,她在模拟器里已经“摔”过几百次了。

J(π)=Eξ∼Ξ[R(π,ξ)]≈1K∑k=1KR(π,ξk)\displaystyle J(\pi) = \mathbb{E}_{\xi \sim \Xi}\left[ R(\pi, \xi) \right] \approx \frac{1}{K}\sum_{k=1}^{K} R(\pi, \xi_k)
策略的总得分 = 在所有随机环境参数 ξ 上的期望奖励。工程实现时,用 K 次随机采样求平均来估计这个期望。
  1. ξ(环境参数)重力、摩擦、光照等一切可以被“随机化”的变量,是教练每天改的“刁难清单”。
    ξ\displaystyle \xi
  2. Ξ(参数分布)这些参数的取值范围和分布,比如“重力在 8.5 到 9.9 之间均匀分布”。
    Ξ\displaystyle \Xi
  3. R(π, ξ)(单环境奖励)策略 π 在某个具体环境 ξ 下完成任务拿到的得分。
    R(π,ξ)\displaystyle R(\pi, \xi)
  4. K 次采样平均(蒙特卡洛估计)随机抽 K 个环境分别测试再取平均,作为“整片世界”表现的近似。
    1K∑k=1KR(π,ξk)\displaystyle \frac{1}{K}\sum_{k=1}^{K} R(\pi, \xi_k)

Sim2Real迁移:从模拟器飞向真机

从模拟器毕业那天,林小雨以为万事大吉,结果第一次真机起飞手忙脚乱。差距来源比她想象的多:仿真里的电机响应是理想化的,真机有延迟;仿真里的摩擦力是固定值,真机却随温度变化;甚至相机的曝光时间都不同。老周说:“模拟器和真机之间,永远隔着一层'翻译误差'。”

缩小差距的第一步是系统辨识:给真机做一次“体检”,测量它的实际响应延迟、最大扭矩、摩擦系数,然后把仿真参数“拧”到和真机一致。第二步是迁移策略:先在仿真里把基础能力练好,再上真机做少量微调,最后用真机数据回填仿真,形成闭环。整个过程中,评估指标只有一个——策略在真实世界上的成功率,而不再看仿真里的花哨分数。

如果把仿真环境的状态转移记为 p_sim,真实世界的记为 p_real,这条鸿沟可以被数学化地度量:

老周最后送林小雨一句话:“模拟器是驾校,真机是考场。驾校练得再好,也要留出足够的路考时间。”Sim2Real 迁移不是一步到位的魔法,而是“仿真训练 + 差距度量 + 真机微调”的反复迭代。

DKL(psim∥preal)=∑s,apsim(s,a) log⁡psim(s,a)preal(s,a)\displaystyle D_{KL}(p_{sim}\parallel p_{real}) = \sum_{s,a} p_{sim}(s,a)\, \log \frac{p_{sim}(s,a)}{p_{real}(s,a)}
这个指标叫 KL 散度,衡量“仿真环境”与“真实环境”在同样状态下做出同样动作的概率分布差异。数值越小,Sim2Real 越容易。
  1. p_sim(s,a)(仿真分布)在仿真环境里,处于状态 s 并选择动作 a 的概率。
    psim(s,a)\displaystyle p_{sim}(s,a)
  2. p_real(s,a)(真实分布)同样的状态 s、同样的动作 a,在真实世界里发生的概率。
    preal(s,a)\displaystyle p_{real}(s,a)
  3. log 比值(逐点差异量)对每个 (s,a) 计算两个概率的比值再取对数,得到该点上的差异“距离”。
    log⁡psim(s,a)preal(s,a)\displaystyle \log \frac{p_{sim}(s,a)}{p_{real}(s,a)}
  4. 加权求和(总体差距)把所有点的差异按仿真概率加权汇总成一个数,用来指导我们该重点校准哪些参数。
    ∑s,apsim(s,a) log⁡psim(s,a)preal(s,a)\displaystyle \sum_{s,a} p_{sim}(s,a)\,\log \frac{p_{sim}(s,a)}{p_{real}(s,a)}

仿真平台:选一台合适的“飞行模拟器”

航校的模拟器也分三六九等:有只练仪表的小型训练器,有带 360 度环幕的高级舱。仿真平台同样如此,选型取决于任务。MuJoCo 像一台轻巧精确的“仪表训练器”——刚体动力学算得快、接触模型准,适合机械臂、四足机器人的强化学习训练。Isaac Sim 像豪华的“全动模拟舱”——画面逼真、传感器仿真完整,并且支持 GPU 并行跑上千个环境,适合需要视觉感知的具身智能任务。Gazebo 则像航校里那台老旧但皮实的公用模拟器——开源、生态成熟,和 ROS 深度绑定,适合学术研究与快速原型。

平台选完不等于万事大吉,最后一步是真机部署:把仿真里训练好的策略搬到真机器人上,验证、微调、再回灌仿真。这形成了一个完整闭环,而闭环的效率取决于仿真能跑多快。GPU 并行技术让这个速度有了量级提升:

林小雨的毕业总结只有一句话:没有最好的平台,只有最合适的平台。轻任务选轻引擎,重感知选重平台,而无论选哪个,最终都要回到真机上接受检验。

Ssim=TserialTparallel≈Nenvs\displaystyle S_{sim} = \frac{T_{serial}}{T_{parallel}} \approx N_{envs}
并行加速比 ≈ 同时并行的仿真环境数量。原本串行跑 1000 个环境需要 1000 份时间,GPU 上同时跑,时间几乎不增加。
  1. T_serial(串行时间)只用单个仿真环境,逐个跑完所有训练回合消耗的墙钟时间。
    Tserial\displaystyle T_{serial}
  2. T_parallel(并行时间)GPU 同时开 N_envs 个仿真环境跑完同样回合数所需的时间。
    Tparallel\displaystyle T_{parallel}
  3. N_envs(并行环境数)一个 GPU 上同时运行的仿真环境数量,Isaac Sim 等平台可以开到上千。
    Nenvs\displaystyle N_{envs}
  4. 加速比近似理想情况下吞吐量随环境数线性增长,这也是“仿真比真机快一万倍”的来源。
    Ssim≈Nenvs\displaystyle S_{sim} \approx N_{envs}

AI 应用场景

机械臂抓取:工厂里的“仿真练兵场”

阶段:仿真训练与策略迁移

解决的问题:真实机械臂抓取一个动作的试错成本高、安全风险大,传统方式靠人工示教,泛化能力差且耗时长。AI 在仿真里用域随机化训练抓取策略,让机械臂见过各种颜色、光照、摆放角度的物体,再迁移到真机,大幅提升抓取成功率。

具体案例:某物流分拣公司使用 Isaac Sim 搭建仓库场景,随机化物体材质、相机噪声和摩擦系数,训练抓取模型后部署到真实机械臂上。原本需要工程师手工调试两周的新品抓取,现在一天内完成仿真训练并上线。

自动驾驶感知:用合成数据“预习”路况

阶段:数据生成与模型预训练

解决的问题:真实路采数据需要车队、牌照、里程,成本极高而且长尾场景(暴雨、逆光、罕见事故)难以凑齐。仿真平台可以大规模生成带标注的合成图像,并通过外观随机化让模型在虚拟世界里预习各种极端路况。

具体案例:某自动驾驶团队在仿真环境里随机化天气、光照和路面材质,生成了 5000 万张带 3D 标注框的合成图像,用来预训练目标检测模型,再在真实数据上微调。该模型在夜间和雨雾场景的检测精度提升了约 18%。

四足机器人步态:从 MuJoCo 走向草地

阶段:策略迁移与真机闭环

解决的问题:四足机器人学走路如果直接在真机上用强化学习,电机会过热、机身会摔坏。先在 MuJoCo 里用随机化的地形摩擦、电机扭矩训练步态,再迁移到真机,最后用真机数据回填仿真校准参数。

具体案例:某高校机器人实验室在 MuJoCo 中随机化地形坡度与负载重量,训练出适应多种地形的步态策略。部署到 Unitree 真机后,经过约 30 分钟的实机微调,即可在草地、碎石路和斜坡上稳定行走。

Python 演示

python68 行
# -*- coding: utf-8 -*-"""域随机化小实验: 仿真里投掷小球, 检验迁移到真实世界的命中率"""import mathimport random V = 30.0                 # 初速度(米/秒)CENTER = 80.0            # 目标区中心(米)HALF = 10.0              # 目标区半宽(米)G_SIM = 9.8              # 仿真里测得的重力(存在误差)G_REAL = 8.6             # 真实世界的等效重力(未知)  def landing(theta_deg, g):    """给定发射角度和重力, 计算水平落地距离"""    th = math.radians(theta_deg)    return V * V * math.sin(2.0 * th) / g  def hit(theta_deg, g):    """判定是否落入目标区"""    return math.fabs(landing(theta_deg, g) - CENTER) <= HALF  def eval_rate(theta_deg, g_list, rounds):    """在一组环境参数上评估策略命中率"""    hits = 0    for _ in range(rounds):        if hit(theta_deg, random.choice(g_list)):            hits += 1    return hits / rounds  def build_dist(a, b, step):    """把 [a, b] 按 step 离散成参数分布"""    n = int(round((b - a) / step)) + 1    return [round(a + i * step, 1) for i in range(n)]  def search_theta(g_list, rounds):    """在仿真环境里搜索命中率最高的发射角"""    best_theta, best_rate = 0.0, -1.0    for theta_deg in range(20, 51):        rate = eval_rate(theta_deg, g_list, rounds)        if rate > best_rate:            best_theta, best_rate = theta_deg, rate    return best_theta, best_rate  def aim_center(g):    """传统做法: 假设已知重力, 直接瞄准目标中心"""    th = math.asin(CENTER * g / (V * V)) / 2.0    return math.degrees(th)  random.seed(7)dist_dr = build_dist(8.5, 9.9, 0.1)   # 域随机化: 不知道真值就用分布 fixed_theta = aim_center(G_SIM)               # 固定物理策略fixed_sim = eval_rate(fixed_theta, [G_SIM], 400)fixed_real = eval_rate(fixed_theta, [G_REAL], 800) dr_theta, dr_sim = search_theta(dist_dr, 400) # 域随机化策略dr_real = eval_rate(dr_theta, [G_REAL], 800) print("固定物理仿真: 角度=%.1f 度, 仿真命中率=%.1f%%" % (fixed_theta, fixed_sim * 100))print("固定物理迁移到真实世界: 命中率=%.1f%%" % (fixed_real * 100))print("域随机化仿真: 角度=%.1f 度, 仿真命中率=%.1f%%" % (dr_theta, dr_sim * 100))print("域随机化迁移到真实世界: 命中率=%.1f%%" % (dr_real * 100))
目的:用一个小球投掷任务演示域随机化的威力——固定物理参数训练的策略在“真实世界”命中率暴跌,而域随机化训练的策降低更稳。
  1. return V * V * math.sin(2.0 * th) / g这是“物理引擎”的运动方程:初速度、角度和重力共同决定落地距离。
  2. dist_dr = build_dist(8.5, 9.9, 0.1)域随机化的核心动作:不知道真实重力,就假设它落在某个区间内并均匀采样。
  3. for theta_deg in range(20, 51):策略搜索:把 20 到 50 度的发射角挨个试射一遍。
  4. if rate > best_rate:只保留命中率最高的角度,相当于在仿真里“训练出一个策略”。
  5. fixed_theta = aim_center(G_SIM)传统做法:把仿真里测到的重力当成真理,直接瞄准目标中心。
  6. fixed_real = eval_rate(fixed_theta, [G_REAL], 800)把固定物理策略拿到真实重力下考核,揭示“仿真里准、真机上偏”的问题。
  7. dr_real = eval_rate(dr_theta, [G_REAL], 800)把域随机化策略拿到真实重力下考核,验证鲁棒性。

常见误区

误区我一直以为只要把仿真画面做得跟照片一样、物理调得一模一样,AI 到真机上就一定行。所以我把大量时间花在精细建模上,结果迁移效果还是很差。

正解仿真越逼真,通常意味着越贵、越慢,而且永远无法做到 100% 复刻真实世界。老周不会花一年时间复刻某条跑道,而是让学员在多种随机侧风里训练。域随机化的哲学恰恰是“承认仿真不完美”:与其追求精确,不如用随机化覆盖不确定性,让策略在真实世界里“怎么都能飞”。

为何常见:人脑直觉认为“像 = 好”,而且渲染效果可以肉眼看到、容易获得成就感,于是低估了随机化这种“看起来更粗糙”的方法。

误区仿真环境不就是把机器人放进一个 3D 游戏里吗?Unity 画面那么好,直接用游戏引擎不就能当物理引擎用?

正解游戏引擎的首要目标是“看起来真实”,会为了让画面流畅而牺牲物理精度;而物理引擎(如 MuJoCo)的首要目标是“动力学精确”,保证接触、摩擦、关节力矩的数值贴近真实。林小雨练降落需要知道“拉杆多少度、飞机抬头多少”,游戏引擎算不出来这个量级的手感。选错引擎,策略学到的是“假的物理规律”。

为何常见:初学者接触仿真往往从画面精美的游戏引擎开始,看到的是视觉反馈,忽略了数值解算才是物理仿真的灵魂。

误区我给仿真里的每个参数都加了随机噪声,为什么训练出来的策略还是那么呆?是不是随机化没用?

正解域随机化的关键是“随机化的范围和分布要覆盖真实世界的不确定性”。如果真实重力偏差在 8% 左右,你却随机到 ±50%,策略会为了适应夸张环境而变得极度保守,动作畏手畏脚。反之,随机化范围太小,又覆盖不到真实参数。所以要先用系统辨识摸清真机参数的大致区间,再设计随机化分布,像教练研究学员弱项一样有的放矢。

为何常见:“随机”听起来没有技术含量,让人觉得随便设个区间就行,忽视了分布设计本身是个需要数据支撑的工程问题。

误区既然域随机化这么强,那我在仿真里把策略练好,直接拷到真机上应该就能跑了吧?

正解域随机化只能缩小差距,不能消除差距。真实世界里还有仿真里根本没建模的因素:线缆拉扯、温度漂移、传感器坏点。老周说“模拟器毕业只是拿了驾照,上路还是要老司机带”——正确的流程是仿真预训练 → 真机小规模微调 → 真机数据回填仿真,反复迭代几个闭环。

为何常见:看到论文里“Sim2Real 零样本迁移成功”的标题,容易把极端案例当成普遍规律,忽略了背后大量的系统辨识和鲁棒设计工作。

面试题

Q1. 关于仿真环境在 Sim2Real 中的价值,下列说法正确的是?

单选题 · easy

  • A.让智能体在虚拟世界大量试错← 正确答案
  • B.让真实机器人完全离线运行
  • C.替代所有真实世界的测试
  • D.只能用于游戏画面渲染

答案:A。仿真环境的根本价值是让 AI 在虚拟世界以极低成本大量试错,像飞行模拟器让学员随便摔飞机。B 错在“完全离线”不现实,C 夸大了作用,真机测试永远不可替代,D 则完全误解了仿真的用途。

Q2. 物理引擎最核心的职责是?

单选题 · easy

  • A.绘制高精度的三维模型
  • B.计算运动与碰撞响应← 正确答案
  • C.生成逼真的声音特效
  • D.管理网络数据的传输

答案:B。物理引擎负责刚体运动、接触与摩擦等力学计算,相当于模拟器里的“牛顿”。绘制模型是渲染模块的职责,声音和网络都不是物理引擎的关注点。

Q3. 域随机化通过什么方式提升迁移成功率?

单选题 · mid

  • A.把仿真画面渲染得更精美
  • B.训练时随机改变环境参数← 正确答案
  • C.增加真机采集的数据量
  • D.缩小物理引擎的时间步长

答案:B。域随机化在训练时随机改变重力、摩擦、光照等参数,让策略见过“一整片可能的世界”,从而在真实环境中更稳健。它不依赖渲染画质,也不增加真机数据,和物理引擎步长没有直接关系。

Q4. 传感器仿真中最容易被忽略但影响迁移的是?

单选题 · mid

  • A.传感器的噪声与延迟← 正确答案
  • B.传感器外壳的颜色
  • C.传感器的品牌型号
  • D.传感器安装的螺丝数量

答案:A。真实摄像头和雷达都有噪声、延迟、曝光差异,如果仿真里“看得太完美”,策略一到真机就相当于突然近视。外壳颜色、品牌和螺丝数量与感知质量无关。这就像模拟器里跑道太清晰,真机降落才发现画面带噪点。

Q5. Sim2Real 训练中“系统辨识”指的是?

单选题 · hard

  • A.识别仿真环境中的物体
  • B.用真机数据校准仿真参数← 正确答案
  • C.让机器人辨认人类手势
  • D.统计随机化参数的分布

答案:B。系统辨识就是给真机做“体检”,测量它的实际延迟、扭矩、摩擦等参数,再回头校准仿真环境,让模拟器更接近真机。A、C 属于感知任务,D 只是随机化的一部分,不是系统辨识的本质。

Q6. 下列哪些做法可以缩小 Sim2Real 差距?

多选题 · mid

  • A.采用域随机化训练策略← 正确答案
  • B.用真机数据微调仿真模型← 正确答案
  • C.只追求渲染画质提升
  • D.使用系统辨识校准参数← 正确答案

答案:ABD。域随机化让策略适应不确定性,真机数据微调和系统辨识都在“校准”仿真与现实的偏差,三者都能缩小差距。只提升渲染画质是典型误区——画面好看不等于物理和传感器仿真准确。

Q7. 关于物理引擎数值求解器,下列说法正确的有?

多选题 · hard

  • A.步长越小时结果通常越准← 正确答案
  • B.固定步长利于训练过程稳定← 正确答案
  • C.接触求解越精确计算开销越大← 正确答案
  • D.数值求解器可以完全消除误差

答案:ABC。步长越小,欧拉积分对连续运动的近似越好,但计算越慢;强化学习常用固定步长保证训练稳定性;接触求解涉及迭代,精度高必然更耗时。D 错在任何数值求解器都有离散化误差,不可能完全消除。

Q8. 随机化范围设置过大的主要风险是?

单选题 · hard

  • A.策略变得过度保守缺乏灵活性← 正确答案
  • B.仿真画面变得模糊难以辨认
  • C.物理引擎运行速度反而变快
  • D.真机数据采集成本大幅降低

答案:A。随机化范围过大时,策略为了在“极端世界”里生存会采取保守动作,畏手畏脚、动作僵硬,反而在正常环境下表现差。这就像教练天天让你在 15 级侧风里起飞,你会变得只敢贴地滑行。B、C、D 都与随机化范围无直接因果关系。