Tech Station

理论基础 › 🧪 仿真工具

🧪

仿真工具 Simulation Tools

仿真是机器人学习与控制的「训练场」:控制器先在仿真里验证,RL 策略几乎全在仿真里训练。要用好仿真,需要理解物理引擎在每一步做什么(积分、约束、接触),知道 MuJoCo / Isaac / Drake / Genesis 各自适合什么,会用 GPU 并行与可微仿真,并能把机器人模型与场景资产做对。

4 个主题 约 60 小时 先修:🦾 运动学与动力学建模
已掌握 0/4

学完你将能够

1物理引擎原理:积分、约束与接触求解 Physics Engine Internals

⏱ 约 20 小时

仿真器的一步 = 算动力学 + 检测碰撞 + 求解约束 / 接触 + 积分。不同引擎在「接触怎么算」上分歧最大:刚性 LCP、软约束(MuJoCo)、罚函数(早期 Bullet)、可微的压力场(Drake hydroelastic)。理解这些决定了你的策略能否迁移到真机,以及仿真为什么会「爆炸」。

核心要点

  • 广义坐标 vs 最大坐标;正动力学(ABA / CRBA)与约束的拼接
  • 积分器:显式 / 半隐式欧拉、RK4、隐式积分;时间步长、子步与稳定性
  • 碰撞检测:宽相(BVH)与窄相(GJK / MPR / SAT),凸分解,接触点生成
  • 接触求解:LCP / PGS / TGS 迭代、MuJoCo 的软约束与凸优化、Drake 的 hydroelastic;参数(solref / solimp、ERP / CFM)的物理含义
  • 仿真的「作弊」与假象:穿透、抖动、能量注入、过大的摩擦锥近似;如何验证仿真质量
自测:学完应该能回答
  1. 把 MuJoCo 的时间步从 2 ms 改到 10 ms,哪些现象会先出问题?
  2. 软接触参数调「硬」为什么会让仿真不稳定?

推荐资料(全部免费)

2主流仿真器与选型 Simulator Landscape & Selection

⏱ 约 15 小时

没有「最好的仿真器」,只有最适合任务的:MuJoCo 接触与速度俱佳、生态最好;Isaac Sim / Lab 有 GPU 并行与光线追踪渲染;Drake 强在建模严谨与优化工具;Genesis / SAPIEN / ManiSkill 面向操作与生成式场景;Gazebo 与 ROS 集成紧密;RaiSim 曾是足式 RL 的主力。学会按接触精度、速度、渲染、生态四个维度取舍。

核心要点

  • MuJoCo(+ MJX、Menagerie、Playground):接触、速度、Python 生态、官方机器人模型库
  • Isaac Sim / Isaac Lab:PhysX GPU 并行、RTX 渲染、USD 资产;需要 NVIDIA GPU
  • Drake:多体动力学 + 优化 + 系统框架,适合模型验证与 MPC / 轨迹优化研究
  • Genesis、SAPIEN / ManiSkill、robosuite、PyBullet:操作、生成式场景、benchmark
  • Gazebo(ROS 集成)、Webots;选型清单:接触精度、吞吐、渲染 / 传感器、资产、许可
自测:学完应该能回答
  1. 训练一个灵巧手抓取策略与验证一个 MPC 控制器,分别更适合哪类仿真器?为什么?
  2. Isaac Lab 与 MJX 都能并行上万环境,主要区别是什么?

推荐资料(全部免费)

  • 🧰
    MuJoCo 首选
    Google DeepMind
    开源、Apache 2.0、Python 绑定完善
  • 🧰
    MuJoCo Menagerie
    Google DeepMind
    高质量官方机器人模型库(机械臂、四足、人形、手)
  • 🧰
    Isaac Lab
    NVIDIA
    GPU 并行机器人学习框架(Isaac Sim 之上)
  • 🧰
    Drake
    Toyota Research Institute / MIT
    Tedrake 教材配套,建模 + 优化 + 仿真一体
  • 🧰
    Genesis
    Genesis Embodied AI
    统一多物理(刚体、软体、流体)+ 生成式场景
  • 🧰
    ManiSkill
    Hao Su Lab · UCSD
    基于 SAPIEN 的 GPU 并行操作 benchmark
  • 🧰
    robosuite
    ARISE Initiative
    MuJoCo 之上的操作任务套件
  • 🧰
    Gazebo
    Open Robotics
    ROS 2 集成最好的仿真器
  • 🧰
    Bullet / PyBullet
    Erwin Coumans

3GPU 并行仿真与可微仿真 GPU-Parallel & Differentiable Simulation

⏱ 约 15 小时

把几千个环境放到 GPU 上一起仿真,让 RL 训练从几天缩到几分钟;把仿真写成可微函数,则能直接用梯度做策略优化或系统辨识。可微仿真在光滑动力学上很强,但接触带来的不连续让梯度失真——什么时候该用零阶(RL)什么时候该用一阶,是一个活跃的研究问题。

核心要点

  • GPU 并行的结构:批量化动力学、按环境重置、观测 / 奖励在 GPU 上计算;吞吐 vs 单步精度
  • MJX(JAX)、Isaac Lab(PhysX)、Brax、Warp:各自的编程模型
  • 可微仿真:自动微分穿过积分器与接触求解器;软化接触以获得有用梯度
  • 一阶策略优化(SHAC、Brax APG)vs 零阶(PPO);梯度的方差与偏差(Suh 等 2022)
  • 可微仿真用于系统辨识与 real-to-sim
自测:学完应该能回答
  1. 为什么接触会让仿真梯度「不可靠」?软化接触解决了什么、又带来了什么?
  2. GPU 并行仿真里「每个环境独立重置」为什么是性能关键?

推荐资料(全部免费)

4机器人模型、资产与场景构建 Robot Descriptions, Assets & Scene Generation

⏱ 约 10 小时

模型不对,仿真再准也没用。URDF / MJCF / USD 是三种主流描述格式,各有语义差异;惯量、关节限位、执行器与传感器参数决定了仿真与真机的一致性;训练数据的多样性来自程序化场景生成、随机化材质与光照、以及从真实扫描得到的资产。

核心要点

  • URDF(ROS)、MJCF(MuJoCo)、USD(Isaac):树结构、惯量、碰撞体 vs 视觉体;格式转换的坑
  • 惯性参数怎么来(CAD、辨识);执行器模型(位置伺服 PD、力矩、齿轮比、限幅)与传感器(IMU、相机、接触)
  • 碰撞几何简化:凸分解、基元近似、接触对过滤
  • 程序化场景生成、域随机化(材质、光照、相机位姿)、渲染管线与合成数据
  • 真实到仿真的资产:扫描、NeRF / 3DGS 重建、物体数据集(YCB、Objaverse)
自测:学完应该能回答
  1. 为什么碰撞体要比视觉体简单?过于精细的碰撞网格会带来什么问题?
  2. URDF 的 joint 与 MJCF 的 joint 在语义上有什么不同?

推荐资料(全部免费)