目录

Newton:Disney+Google+NVIDIA联手打造的GPU加速物理仿真引擎

Newton:Disney+Google+NVIDIA联手打造的GPU加速物理仿真引擎

§1 学习目标

通过本文,你将掌握:

  • Newton的核心设计理念与技术架构
  • NVIDIA Warp与MuJoCo Warp的继承关系
  • 完整的仿真功能分类(12大类50+示例)
  • GPU加速的底层原理与CUDA调度机制
  • 机器人仿真完整工作流程(URDF导入、控制器、IK求解)
  • 柔体与软体物理仿真(Cloth/Cable/Softbody)
  • 多物理场耦合仿真(MPM + 刚体)
  • 自定义扩展与二次开发方法
  • 性能优化与最佳实践

§2 背景与项目定位

2.1 物理仿真引擎生态

当前主流物理仿真引擎可分为三类:

类型代表引擎特点适用场景
工业级Isaac Sim, MuJoCo高保真、物理精度自动驾驶、工业机器人
研究级NVIDIA Warp, NewtonGPU加速、可微分化机器人控制、RL训练
游戏引擎Unity, Unreal实时性、渲染游戏、VR

2.2 Newton的独特定位

Newton是什么?

Newton is a GPU-accelerated physics simulation engine built upon NVIDIA Warp, specifically targeting roboticists and simulation researchers.

三位一体发起方:

发起方贡献领域
Disney Research仿真精度、创意应用
Google DeepMind强化学习、策略优化
NVIDIAWarp核心、GPU加速

核心设计哲学:

  1. GPU-First:所有计算在GPU上完成,充分利用并行计算优势
  2. 可微分化:支持JIT自动微分,天然适配强化学习
  3. OpenUSD支持:与工业仿真数据格式无缝对接
  4. 用户可扩展:开放的Python API,支持自定义物理场

§3 技术架构深度解析

3.1 与NVIDIA Warp的关系

Newton构建于NVIDIA Warp之上,继承了Warp的核心优势:

┌─────────────────────────────────────────────────────────────┐
│                        Newton                               │
│  ┌─────────────────────────────────────────────────┐   │
│  │              MuJoCo Warp Backend                  │   │
│  │  ┌───────────────────────────────────────────┐ │   │
│  │  │            NVIDIA Warp                     │ │   │
│  │  │  ┌─────────────────────────────────────┐ │ │   │
│  │  │  │    CUDA Kernels (cuWarp)          │ │ │   │
│  │  │  └─────────────────────────────────────┘ │ │   │
│  │  └───────────────────────────────────────────┘ │   │
│  └─────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

Warp的核心特性(Newton继承):

特性说明Newton支持
GPU加速所有物理计算在CUDA核心✅ 全部
自动微分JIT编译下的梯度计算✅ 全部
MPM求解器Material Point Method✅ 扩展
SDF距离场符号距离函数✅ 全部
Warp Device Abstraction统一CPU/GPU接口✅ 全部

3.2 系统需求

组件要求
Python3.10+
OSLinux (x86-64, aarch64), Windows (x86-64), macOS (CPU only)
GPUNVIDIA GPU (Maxwell or newer)
CUDA Driver545+ (CUDA 12)
本地CUDA Toolkit❌ 不需要

重要说明:macOS仅支持CPU计算,无GPU加速。

§4 功能分类详解

4.1 功能总览

Newton提供12大类仿真功能,覆盖机器人学主要场景:

类别示例数量核心场景
Basic(基础)10+入门级物理演示
Robot(机器人)15+足式机器人、机械臂
Cable(电缆)5+线缆操作、布线仿真
Cloth(布料)10+布料仿真、衣物操作
Inverse Kinematics(IK)5+运动学求解
MPM10+颗粒材料、耦合仿真
Sensors(传感器)3+感知仿真
Selection(选择)5+场景选择逻辑
DiffSim(可微仿真)8+可微分物理
Multi-Physics(多物理场)2+耦合仿真
Contacts(接触)6+精密装配
Softbody(软体)2+软体操作

4.2 基础功能(Basic)

基础示例是Newton的入门必读,包含10+示例:

示例命令说明
Pendulumpython -m newton.examples basic_pendulum单摆系统
URDFpython -m newton.examples basic_urdfURDF模型导入
Viewerpython -m newton.examples basic_viewer可视化窗口
Shapespython -m newton.examples basic_shapes基础几何体
Jointspython -m newton.examples basic_joints关节系统
Conveyorpython -m newton.examples basic_conveyor传送带
Heightfieldpython -m newton.examples basic_heightfield高度场地形
Recordingpython -m newton.examples recording仿真录制
Replay Viewerpython -m newton.examples replay_viewer回放可视化
Plottingpython -m newton.examples basic_plotting数据绘图

4.3 机器人仿真(Robot)

机器人仿真是Newton的核心应用场景:

4.3.1 足式机器人

机器人示例命令说明
Cartpolepython -m newton.examples robot_cartpole小车平衡杆
G1python -m newton.examples robot_g1宇树H1人形机器人
H1python -m newton.examples robot_h1华为盘古人形机器人

4.3.2 四足机器人

机器人示例命令说明
Anymal Dpython -m newton.examples robot_anymal_dANYbotics四足D型
Anymal C Walkpython -m newton.examples robot_anymal_c_walkANYbotics四足C型

4.3.3 机械臂

机械臂示例命令说明
UR10python -m newton.examples robot_ur10Universal Robots UR10
Panda + Hydropython -m newton.examples robot_panda_hydroFranka Panda + Hydro
Allegro Handpython -m newton.examples robot_allegro_hand灵巧手仿真

4.3.4 控制器与策略

# 运行预训练策略
python -m newton.examples robot_policy

4.4 布料仿真(Cloth)

布料仿真是柔体物理的核心应用:

示例命令物理现象
Cloth Bendingpython -m newton.examples cloth_bending布料弯曲
Cloth Hangingpython -m newton.examples cloth_hanging悬挂布料
Cloth Style3Dpython -m newton.examples cloth_style3d3D款式设计
Cloth H1python -m newton.examples cloth_h1人形机器人+布料
Cloth Twistpython -m newton.examples cloth_twist布料扭转
Cloth Frankapython -m newton.examples cloth_franka机械臂+布料
Cloth Rollerspython -m newton.examples cloth_rollers辊压布料
Cloth Poker Cardspython -m newton.examples cloth_poker_cards扑克牌+布料

4.5 电缆仿真(Cable)

电缆仿真用于线缆操作和布线分析:

示例命令场景
Cable Twistpython -m newton.examples cable_twist电缆扭转
Cable Y-Junctionpython -m newton.examples cable_y_junctionY型电缆分支
Cable Bundle Hysteresispython -m newton.examples cable_bundle_hysteresis电缆束滞后
Cable Pilepython -m newton.examples cable_pile电缆堆叠

4.6 可微仿真(DiffSim)

DiffSim是Newton的特色功能,支持物理仿真过程的自动微分:

示例命令应用
DiffSim Ballpython -m newton.examples diffsim_ball可微球体碰撞
DiffSim Clothpython -m newton.examples diffsim_cloth可微布料
DiffSim Dronepython -m newton.examples diffsim_drone可微无人机控制
DiffSim Spring Cagepython -m newton.examples diffsim_spring_cage可微弹簧笼
DiffSim Soft Bodypython -m newton.examples diffsim_soft_body可微软体
DiffSim Quadrupedpython -m newton.examples diffsim_bear可微四足

DiffSim的核心价值

# 传统仿真:前向计算
state = simulator.forward(params)

# DiffSim:前向 + 反向梯度
state, grad = simulator.forward_and_backward(params)

4.7 传感器仿真(Sensors)

示例命令传感器类型
Sensor Contactpython -m newton.examples sensor_contact接触力传感器
Sensor Tiled Camerapython -m newton.examples sensor_tiled_camera相机感知
Sensor IMUpython -m newton.examples sensor_imuIMU惯性测量

§5 快速开始

5.1 安装

# 安装Newton(包含示例)
pip install "newton[examples]"

# 验证安装
python -m newton.examples --help

5.2 运行第一个示例

# 运行基础单摆示例
python -m newton.examples basic_pendulum

5.3 查看所有示例

# 列出所有可用示例
python -m newton.examples

5.4 USD格式输出

# 运行并输出为USD文件
python -m newton.examples basic_viewer \
    --viewer usd \
    --output-path my_output.usd

§6 命令行参数详解

6.1 全局参数

参数说明默认值
--viewer可视化类型gl
--device计算设备Warp默认设备
--num-frames仿真帧数100
--output-pathUSD输出路径-

6.2 Viewer类型

类型说明适用场景
glOpenGL实时窗口交互调试
usdUSD文件输出离线渲染
rerunReRun可视化云端查看
null无可视化纯计算

6.3 Device选择

# 使用特定GPU
python -m newton.examples basic_pendulum --device cuda:0

# 使用CPU
python -m newton.examples basic_pendulum --device cpu

§7 机器人仿真进阶

7.1 URDF模型导入

Newton支持直接导入URDF格式的机器人模型:

# 加载URDF模型
python -m newton.examples basic_urdf

URDF支持的机器人模型

模型类型来源
UR10机械臂Universal Robots
Panda机械臂Franka
G1人形机器人宇树科技
H1人形机器人华为
Anymal D/C四足机器人ANYbotics

7.2 逆运动学(IK)求解

Newton提供多种IK求解器:

# 基础IK示例
python -m newton.examples ik_franka    # Franka机械臂IK
python -m newton.examples ik_h1        # H1人形机器人IK
python -m newton.examples ik_custom    # 自定义IK

# 复杂IK任务
python -m newton.examples ik_cube_stacking  # 立方体堆叠IK

7.3 控制器与策略

# 运行预训练策略
python -m newton.examples robot_policy

# 支持的策略类型:
# - locomotion (行走)
# - manipulation (操作)
# - tracking (跟踪)

§8 物理场详解

8.1 刚体动力学

Newton的刚体求解器支持:

特性说明
碰撞检测SDP + 连续碰撞检测
关节约束Revolute, Prismatic, Ball, Fixed
外力重力、接触力、电机力矩

8.2 柔体物理(Cloth/Cable)

求解器方法适用场景
XPBDPosition Based Dynamics布料、电缆
PBDProjective Dynamics实时仿真
MPMMaterial Point Method颗粒材料

8.3 软体物理(Softbody/MPM)

# 软体仿真示例
python -m newton.examples softbody_hanging    # 悬挂软体
python -m newton.examples softbody_franka      # 机械臂+软体

# MPM示例
python -m newton.examples mpm_granular        # 颗粒材料
python -m newton.examples mpm_snow_ball       # 雪球破碎

§9 多物理场耦合

9.1 耦合仿真示例

示例命令耦合类型
Softbody Giftpython -m newton.examples softbody_gift软体+刚体
Dropping to Clothpython -m newton.examples softbody_dropping_to_cloth软体+布料
MPM Two-Way Couplingpython -m newton.examples mpm_twoway_couplingMPM+刚体

9.2 耦合仿真原理

# Newton的多物理场耦合通过统一的时间步长实现
for t in range(num_frames):
    # 1. 更新刚体状态
    rigid_body.step(dt)
    
    # 2. 更新柔体/软体状态
    soft_body.step(dt)
    
    # 3. 计算耦合接触力
    contact_forces = compute_coupling(rigid_body, soft_body)
    
    # 4. 应用耦合力
    rigid_body.apply(contact_forces)
    soft_body.apply(-contact_forces)

§10 性能优化

10.1 GPU利用率

场景建议GPU性能提升
实时仿真RTX 3080+50-100x vs CPU
高保真仿真A100200x+ vs CPU
批量仿真多卡并行线性扩展

10.2 仿真参数调优

参数影响建议
--num-frames仿真精度精度要求高时增加
--device计算速度优先使用GPU
子步数数值稳定性复杂接触增加

10.3 最佳实践

# 推荐的工作流
# 1. CPU调试(快速迭代)
python -m newton.examples robot_g1 --device cpu --num-frames 50

# 2. GPU最终仿真(高精度)
python -m newton.examples robot_g1 --device cuda:0 --num-frames 500

# 3. USD输出用于可视化
python -m newton.examples robot_g1 \
    --viewer usd \
    --output-path gait.usd

§11 与竞品对比

11.1 Newton vs MuJoCo

维度NewtonMuJoCo
GPU加速✅ 原生CUDA❌ CPU
可微分化✅ JIT自动微分✅ JAX绑定
渲染集成✅ OpenUSD原生⚠️ 需额外配置
学习资源⭐⭐⭐⭐⭐ 丰富示例⭐⭐⭐⭐ 学术为主
机器人模型⭐⭐⭐⭐ 主流支持⭐⭐⭐⭐⭐ 全覆盖
许可Apache-2.0Apache-2.0

11.2 Newton vs Isaac Sim

维度NewtonIsaac Sim
部署难度⭐ 低(pip安装)⭐⭐⭐ 高(Omniverse依赖)
Python优先✅ 原生⚠️ C++/Python混合
物理精度⭐⭐⭐⭐ 高⭐⭐⭐⭐⭐ 极高
实时仿真⭐⭐⭐⭐ 佳⭐⭐⭐⭐⭐ 极佳
成本免费开源需要Omniverse

§12 应用场景

12.1 机器人学

应用Newton优势
强化学习训练GPU加速 + 可微分化
运动控制实时仿真 + IK求解器
灵巧操作柔体/软体 + 多指手

12.2 自动驾驶

应用Newton优势
传感器仿真相机/LiDAR物理
车辆动力学高保真轮胎模型
场景生成OpenUSD导出

12.3 内容创作

应用Newton优势
电影特效布料/柔体物理
游戏开发实时物理
VR/AR低延迟交互

§13 总结

Newton是由Disney Research、Google DeepMind和NVIDIA三大科技巨头联手打造的新一代物理仿真引擎,它:

  • 基于NVIDIA Warp:继承CUDA加速、自动微分等核心能力
  • 覆盖12大仿真领域:刚体、柔体、软体、机器人、IK等
  • GPU加速:50-100x性能提升
  • 可微分化:天然支持强化学习
  • OpenUSD原生:与工业仿真无缝对接
  • 开源Apache-2.0:社区驱动,开放生态

官方资源

  • 官网:newton-physics.github.io
  • GitHub:github.com/newton-physics/newton
  • 文档:newton-physics.github.io/newton/latest
  • 讨论:github.com/newton-physics/newton/discussions

🦞 文档版本:v1.0 | 写作日期:2026-04-09