2. 机器人仿真基础
域随机化与域适应并不是凭空生效的“魔法”,它们建立在仿真系统本身的可控性之上。只有先理解仿真平台如何组织世界、物理引擎如何求解接触、传感器如何被“伪造”、场景如何被搭建,我们才能准确判断:哪些差异可以通过随机化覆盖,哪些差异必须通过系统辨识或真实数据校正。本节从工程视角梳理机器人仿真的四个基础支柱,并给出仿真到现实差距的来源图谱。
一、常用仿真平台:选择取决于任务闭环
机器人仿真平台大致可分为通用物理仿真器、机器人专用仿真器与渲染/合成数据平台三类。通用物理仿真器如 MuJoCo、PyBullet、Isaac Sim/Isaac Lab,强调刚体动力学、接触求解与并行吞吐;机器人专用仿真器如 Gazebo、Webots,强调 ROS 生态、传感器插件与多机器人协同;渲染与合成数据平台如 Blender、Unreal、Omniverse,强调视觉真实感与大规模数据生成。实际工程中常采用“物理引擎 + 渲染前端 + 中间件”的组合,例如 Isaac Sim 使用 PhysX,Gazebo 可切换 ODE、Bullet、DART,MuJoCo 则自带 MJCF 建模与求解器。
选择平台时,关键不是“哪个最真”,而是“哪个能支撑你的任务闭环”。抓取任务关注接触稳定性与摩擦建模;移动机器人关注轮地接触、IMU 与激光雷达;视觉策略关注渲染真实感与域随机化接口。平台若不能暴露质量、摩擦、延迟、噪声等参数,后续域随机化将无从下手。
二、物理引擎:接触、积分与求解器是差异核心
物理引擎决定仿真世界的“物理定律”。其核心包括积分器、碰撞检测、接触求解与约束求解。常见差异来源有:时间步长与积分方式(显式欧拉、半隐式、RK4)、接触模型(软接触、硬接触、惩罚力)、摩擦模型(库仑摩擦、锥摩擦)、求解器迭代次数与容差。MuJoCo 以凸优化接触和高效约束求解著称,适合腿足与灵巧手;PhysX 支持 GPU 并行与大规模场景;Bullet 在游戏与机器人中均有应用,但接触参数敏感。
工程上要特别关注“仿真步长”与“控制频率”的匹配。若控制周期为 1 kHz,而物理步长为 1 ms,则每个控制周期仅一次物理更新,接触力可能突变;若物理步长过大,穿透与抖动会同时出现。域随机化中常对质量、质心、摩擦系数、关节阻尼、电机延迟进行采样,但若引擎本身求解不稳定,随机化只会放大噪声。
# MuJoCo 中常见的域随机化参数示例
mass: 0.8 ~ 1.2 kg
friction: 0.4 ~ 1.0
damping: 0.01 ~ 0.2
armature: 0.001 ~ 0.01
solref: [0.02, 1.0]
solimp: [0.9, 0.95, 0.001]
三、传感器建模:从理想测量到真实退化
传感器建模是仿真到现实差距最集中的环节。真实传感器存在噪声、偏置、延迟、量化、温漂、遮挡与失效模式。仿真中若只输出理想值,策略会过度依赖“干净”观测。常见建模方式包括:高斯噪声、随机游走偏置、固定延迟、丢帧、量程截断、分辨率量化、外参误差与安装误差。
以相机为例,需建模内参、畸变、曝光、运动模糊、滚动快门、光照与材质响应;以激光雷达为例,需建模光束发散、反射率、雨雾衰减、运动畸变与遮挡;以 IMU 为例,需建模零偏、随机游走、尺度因子与轴间非正交。域随机化通常对这些参数按分布采样,而域适应则尝试从真实数据中估计这些参数。
四、场景构建:几何、语义与物理属性缺一不可
场景构建包括几何建模、语义标注、物理属性赋值与光照/材质设置。几何可从 CAD、URDF、USD、MJCF 导入;语义用于分割与检测任务;物理属性包括质量、摩擦、弹性、关节限位与驱动特性。场景构建的常见误区是“只重外观,不重物理”:视觉上逼真,但摩擦系数全为默认值,导致抓取策略在真机上打滑。
场景还应包含随机化接口:物体位姿、数量、纹理、光照、相机位姿、地面摩擦等。域随机化的场景不是“一个固定世界”,而是“一个可采样的世界分布”。
五、仿真到现实的差距来源:一张关系图看清
仿真到现实的差距(Sim-to-Real Gap)可归纳为四类:物理差距、感知差距、执行差距与任务差距。物理差距来自接触、摩擦、质量与动力学;感知差距来自噪声、延迟、光照与材质;执行差距来自电机延迟、摩擦、间隙与通信抖动;任务差距来自目标定义、奖励函数与评估标准。下图给出这些差距来源与对应缓解手段的关系。
六、案例与复盘:抓取任务中的差距定位
假设一个机械臂抓取任务在仿真中成功率 95%,真机仅 60%。按上图的差距来源逐项排查:物理差距方面,检查摩擦系数是否随机化、接触刚度是否合理;感知差距方面,检查相机噪声、曝光与延迟是否建模;执行差距方面,检查电机延迟、关节摩擦与通信抖动;任务差距方面,检查奖励是否鼓励“轻拿轻放”而真机需要“稳定夹持”。常见复盘结论是:仿真中摩擦系数固定为 0.8,而真实物体在 0.3~0.6 之间波动,导致策略在低摩擦物体上打滑。解决方式不是调大夹持力,而是将摩擦系数纳入域随机化,并加入力反馈延迟建模。
| 差距类型 | 典型来源 | 可观测现象 | 优先缓解手段 |
|---|---|---|---|
| 物理差距 | 摩擦、质量、接触刚度、关节阻尼 | 打滑、抖动、穿透、能量不守恒 | 域随机化 + 系统辨识 |
| 感知差距 | 噪声、延迟、光照、材质、畸变 | 检测漂移、深度缺失、颜色偏移 | 传感器建模 + 域适应 |
| 执行差距 | 电机延迟、摩擦、间隙、通信抖动 | 跟踪滞后、振荡、稳态误差 | 延迟建模 + 鲁棒控制 |
| 任务差距 | 奖励函数、目标定义、评估标准 | 仿真高分、真机低分 | 奖励校准 + 真实评估 |
总结来看,仿真平台、物理引擎、传感器建模与场景构建共同决定了仿真世界的“可采样空间”。域随机化与域适应之所以有效,是因为它们在这个空间内主动覆盖真实世界的多样性,并通过系统辨识与真实数据校准缩小残余差距。理解差距来源,才能把随机化用在刀刃上,而不是盲目扩大噪声。