拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Newton 物理仿真引擎入门指南:基于 NVIDIA Warp 的 GPU 加速机器人仿真平台

Newton 物理仿真引擎入门指南基于 NVIDIA Warp 的 GPU 加速机器人仿真平台【免费下载链接】newtonAn open-source, GPU-accelerated physics simulation engine built upon NVIDIA Warp, specifically targeting roboticists and simulation researchers.项目地址: https://gitcode.com/GitHub_Trending/newton9/newton本篇技术指南以仓库根目录的 README.md 为主体系统介绍 Newton —— 一个构建于 NVIDIA Warp 之上、面向机器人学家与仿真研究者的 GPU 加速物理仿真引擎。你将掌握 Newton 的系统要求与安装方式、开箱即用的示例库与命令行工具、核心 API 工作流ModelBuilder → Model → State → Solver 仿真循环并结合仓库源码理解其底层实现与可扩展架构。项目概览Newton 是什么Newton 是一个基于NVIDIA Warp构建的 GPU 加速物理仿真引擎目标用户是机器人学家roboticists和仿真研究者simulation researchers。从源码层面看newton/init.py 暴露了完整的高层 APIModelBuilder、Model、State、Control、Contacts、CollisionPipeline、SolverXPBD等核心对象以及actuators、controllers、geometry、ik、math、selection、sensors、solvers、usd、utils、viewer十一个功能子模块。Newton 的技术定位可以概括为四点继承并泛化 Warp 的warp.sim模块Warp 官方已将其warp.sim标记为 deprecatedNewton 是其后续与泛化形态。集成 MuJoCo Warp 作为主要后端可将 MuJoCo Warp 的求解能力作为主仿真后端使用。强调 GPU 计算、OpenUSD 支持、可微性与用户自定义扩展性支撑机器人仿真的快速迭代与规模化扩展。Linux Foundation 社区项目代码采用 Apache-2.0 许可文档采用 CC-BY-4.0 许可第三方许可文本位于 newton/licenses。项目由 Disney Research、Google DeepMind、NVIDIA 发起。系统要求根据 README.md 与 docs/guide/installation.rst 中的说明Newton 的系统要求如下项目最低要求说明Python3.10建议 3.11 及以上操作系统Linuxx86-64、aarch64、Windowsx86-64、macOS仅 CPUmacOS 无 GPU 加速GPUNVIDIA GPUMaxwell 或更新Compute capability 5.0如 GeForce GTX 9xx 及以上驱动545 或更新CUDA 12建议 550 或更新CUDA 12.4以获得最佳性能CUDA12 / 13无需本地安装 CUDA ToolkitWarp 自带运行时值得注意的细节在Linux aarch64ARM64上安装importers等额外依赖如examples、dev需要 GLIBC 2.35 或更新版本RHEL 9 的 GLIBC 2.34 只能安装基础包在 NVIDIA Jetson Thor、DGX Spark 等 ARM64 设备上安装examplesextra 还需 X11 开发库libx11-dev等。详细的平台兼容性与版本策略参见 docs/guide/compatibility.rst。安装与快速开始基础安装安装基础包只需一条命令其唯一强制依赖是 NVIDIA Warp在 pyproject.toml 中声明为warp-lang1.17.0pip install newton安装示例依赖并启动要运行内置示例包含仿真与可视化依赖安装examplesextrapip install newton[examples] python -m newton.examples执行后默认启动basic_pendulum双摆示例并打开 OpenGL 查看器查看器侧边栏内置示例浏览器可随时切换其他示例。README 中的快速开始命令与之等价pip install newton[examples] python -m newton.examples建议在虚拟环境中安装以避免依赖冲突python -m venv .venv后激活。注意Python 3.10 用户安装imgui_bundleexamplesextra 的依赖可能遇到问题建议升级 Python 版本或参考 docs/guide/development.rst 使用uv从源码安装。额外依赖extras依赖集定义在 pyproject.toml 的[project.optional-dependencies]中依赖集用途sim仿真依赖含 MuJoComujoco-warp~3.12.0、mujoco~3.12.0importers资产导入与网格处理URDF/MJCF/USD 解析、凸分解、简化等remesh表面重建相关Open3D、pyfqmronnxWarp-NN ONNX 运行时用于神经执行器与 RL 策略示例examples运行示例的全部依赖包含simimportersonnx与可视化rtxNVIDIA OVRTX 实时光线追踪查看器torch-cu12/torch-cu13需要 PyTorchCUDA 12/13的工作流如训练或运行.pt/.pth策略notebookJupyter Notebook 支持含 Rerun 可视化dev开发与测试依赖docs构建文档所需依赖部分 extra 会传递包含其他 extra如examples自动包含sim、importers、onnx只需安装最贴合自己使用场景的那一组。纯 Python 快速上手不依赖任何 extra基础包即可完成建模 → 求解 → 步进的完整闭环示例见 docs/guide/installation.rstimport warp as wp import newton # 1. 构建模型 builder newton.ModelBuilder() body builder.add_body( xformwp.transform((0.0, 1.0, 0.0), wp.quat_identity()), mass1.0, ) builder.add_shape_sphere(body, radius0.25) builder.add_ground_plane() model builder.finalize() # 2. 创建求解器并分配状态 solver newton.solvers.SolverXPBD(model) state_0 model.state() state_1 model.state() control model.control() collision_pipeline newton.CollisionPipeline(model) contacts collision_pipeline.contacts() newton.eval_fk(model, model.joint_q, model.joint_qd, state_0) # 3. 仿真循环 for step in range(120): state_0.clear_forces() collision_pipeline.collide(state_0, contacts) solver.step(state_0, state_1, control, contacts, 1.0 / 60.0) state_0, state_1 state_1, state_0若改用 MuJoCo 后端先安装pip install newton[sim]然后通过builder.add_mjcf(humanoid.xml)加载模型模板再用builder.replicate(template, world_count1024)复制到 1024 个并行世界由newton.solvers.SolverMuJoCo(model)在 GPU 上同时步进全部世界。开箱即用的示例库Newton 的示例按主题分类存放在 newton/examples 目录每个示例都对应一个example_*.py文件可通过python -m newton.examples example_name运行。运行前请先安装pip install newton[examples]若在源码检出环境中使用uv将命令替换为uv run --extra examples -m newton.examples example_name。完整示例清单命令名即示例短名基础Basicbasic_pendulum、basic_urdf、basic_viewer、basic_shapes、basic_joints、basic_conveyor、basic_heightfield、recording、replay_viewer、basic_plotting、basic_dzhanibekov、basic_conveyor_forces、basic_mimic_joint机器人Robotrobot_cartpole、robot_g1、robot_h1、robot_anymal_d、robot_anymal_c_walk、robot_policy、robot_ur10、robot_panda_hydro、robot_allegro_hand、robot_omniwheel、robot_asroballet控制器Controllercontroller_joint_impedance_heterogeneous、controller_operational_space_hybrid_force_motion、controller_differential_ik线缆Cablecable_twist、cable_y_junction、cable_bundle_hysteresis、cable_pile、cable_cross_slide_table、cable_plectoneme布料Clothcloth_bending、cloth_hanging、cloth_style3d、cloth_h1、cloth_twist、cloth_franka、cloth_rollers、cloth_poker_cards逆运动学IKik_franka、ik_h1、ik_custom、ik_cube_stackingMPM物质点法mpm_granular另支持mpm_granular --from-usd、mpm_anymal、mpm_twoway_coupling、mpm_grain_rendering、mpm_multi_material、mpm_viscous、mpm_beam_twist、mpm_snow_ball、mpm_water_dam_break传感器Sensorsensor_contact、sensor_tiled_camera、sensor_imu选择Selectionselection_cartpole、selection_materials、selection_articulations、selection_multiple可微仿真DiffSimdiffsim_ball、diffsim_cloth、diffsim_drone、diffsim_spring_cage、diffsim_soft_body、diffsim_bear多物理Multi-Physicssoftbody_gift、softbody_dropping_to_cloth、rigid_soft_contact、franka_cable_ik_pick_place、mujoco_franka_vbd_cable_admm_solver接触Contactsnut_bolt_hydro、nut_bolt_sdf、brick_stacking、pyramid、contacts_rj45_plug、newton_cradle、balance_bird、domino_spiral软体Softbodysoftbody_hanging、softbody_frankaKamino 求解器kamino_basic_dr_testmech、kamino_basic_fourbar、kamino_basic_heterogeneous、kamino_robot_anymal_d、kamino_robot_dr_legs每个示例的完整源码与命令行参数可从对应文件查看例如 newton/examples/basic/example_basic_pendulum.py、newton/examples/robot/example_robot_anymal_d.py、newton/examples/ik/example_ik_franka.py、newton/examples/mpm/example_mpm_granular.py、newton/examples/kamino/example_kamino_basic_fourbar.py。示例图片可在 docs/images/examples 目录中浏览。示例命令行选项详解所有示例共享一组通用命令行选项。README 中列出的最常用选项如下参数说明默认值--viewer使用的查看器gl、usd、rtx、rerun、viser或nullgl--device计算设备如cpu、cuda:0None使用默认 Warp 设备--num-frames仿真的总帧数100--output-path输出 USD 文件的路径usd查看器使用output.usd查看某示例支持的完整选项含其专属参数随时运行python -m newton.examples example_name --help从源码实现看见 newton/examples/init.py 中的create_parser()实际可用的通用参数比 README 表格更丰富包括--rerun-address连接外部 Rerun 服务器如rerunhttp://127.0.0.1:9876/proxy--render-fps限制渲染帧率上限不影响仿真步进时间--headless以无头模式初始化 OpenGL 查看器--test以测试模式运行示例自动执行test_post_step/test_final并检查模型、状态中的 NaN--quiet抑制 Warp 编译信息--paused查看器以暂停状态启动--benchmark [SECONDS]基准模式预热后测量 FPS可指定运行秒数该模式下强制使用null查看器并提升进程优先级--warp-config KEYVALUE覆盖warp.config属性可重复键必须是 Warp 认可的配置项--realtime基准模式下使用最激进的进程优先级。此外部分示例通过add_broad_phase_arg--broad-phasenxn/sap/explicit、add_world_count_arg--world-count并行世界数、add_max_worlds_arg--max-worlds、add_mujoco_contacts_arg--use-mujoco-contacts、add_kamino_contacts_arg--use-kamino-contacts扩展自己的参数。示例使用实战# 列出全部可用示例 python -m newton.examples --list # 使用 USD 查看器运行并输出到 my_output.usd python -m newton.examples basic_viewer --viewer usd --output-path my_output.usd # 在指定设备上运行 python -m newton.examples basic_urdf --device cuda:0 # 组合多个选项GL 查看器 500 帧 CPU 设备 python -m newton.examples basic_viewer --viewer gl --num-frames 500 --device cpupython -m newton.examples的入口逻辑见 newton/examples/main.py 与main()函数会通过get_examples()扫描newton/examples下所有example_*.py文件将短名映射到完整模块路径未传示例名时默认运行basic_pendulum传入未知示例名时打印示例清单并报错退出。深入示例代码从 ModelBuilder 到仿真循环以默认示例 newton/examples/basic/example_basic_pendulum.py 为例它演示了 Newton 最核心的编程模型构建模型newton.ModelBuilder()创建构建器add_link()添加连杆、add_shape_box()添加盒形碰撞体add_joint_revolute()在两连杆间添加转动副add_articulation([j0, j1], labelpendulum)组合成关节链add_ground_plane()添加地面最后builder.finalize()得到self.model。创建求解器与状态newton.solvers.SolverXPBD(self.model)创建 XPBD 求解器model.state()分配两份状态state_0/state_1双缓冲model.control()分配控制输入newton.eval_fk(...)执行正向运动学。碰撞管线newton.CollisionPipeline(self.model)构建碰撞管线self.collision_pipeline.collide(self.state_0, self.contacts)在每一步更新接触集。仿真步进每帧先state_0.clear_forces()清力再collision_pipeline.collide(...)计算接触随后solver.step(state_0, state_1, control, contacts, sim_dt)推进一个子步最后交换双缓冲状态。CUDA Graph 捕获wp.ScopedCapture将整段simulate()捕获为 CUDA Graph之后每帧通过wp.capture_launch(self.graph)零开销重放这正是 Newton 面向 GPU 高性能仿真设计的体现。渲染与测试render()中调用viewer.begin_frame/log_state/log_contacts/end_frame提交画面test_final()则用newton.examples.test_body_state断言连杆位姿与速度的合理性供 CI 与--test模式使用。整体工作流与 docs/guide/overview.rst 描述的仿真循环完全一致ModelBuilder 建模 → finalize 得到 Model → 分配 State/Control/Contacts → CollisionPipeline.collide 生成接触 → Solver 步进 → 传感器/查看器输出。Newton 提供了多种求解器后端包括 XPBD、VBD、MuJoCo、Featherstone、SemiImplicit、Kamino、ImplicitMPM、Style3D对应 newton/solvers 目录下的各子包支持刚体、软体、布料、线缆与 MPM 多物理耦合。贡献、社区与治理贡献方式参见 CONTRIBUTING.md包含贡献途径与 PR 流程说明开发环境搭建见 docs/guide/development.rst。代码与 API 规范代码及公开 API 变更必须遵循 CODING_GUIDELINES.rst审查者可参考 REVIEW_GUIDELINES.rst。行为准则参与社区即表示同意遵循 Linux Foundation 的 Code of Conduct。治理项目治理、法律与成员信息参见newton-governance仓库项目为 Linux Foundation 项目由社区共建维护。遇到问题建议先查阅 Newton 官方文档docs/index.rst 为文档入口涵盖 docs/guide/overview.rst、docs/guide/installation.rst、docs/faq.rst 等再在仓库 Discussion 中发起讨论。结语Newton 以 NVIDIA Warp 为计算底座、以 MuJoCo Warp 为主要后端为机器人仿真提供了GPU 加速 可微 OpenUSD 可扩展的一体化方案。通过pip install newton[examples]即可在几分钟内跑起默认双摆示例再借助--list与各分类示例机器人、线缆、布料、MPM、可微仿真、Kamino 等快速探索引擎能力深入阅读 newton/examples 下的示例源码与 newton/init.py 暴露的 API即可上手构建自己的规模化并行仿真任务。【免费下载链接】newtonAn open-source, GPU-accelerated physics simulation engine built upon NVIDIA Warp, specifically targeting roboticists and simulation researchers.项目地址: https://gitcode.com/GitHub_Trending/newton9/newton创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门