Skip to content

newton-physics/newton

License GitHub commit activity codecov Push Events - AWS GPU Tests

⚠️ Alpha Development Stage ⚠️

This project is in active alpha development. This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.

Newton

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

Newton extends and generalizes Warp's (deprecated) warp.sim module, and integrates MuJoCo Warp as its primary backend. Newton emphasizes GPU-based computation, OpenUSD support, differentiability, and user-defined extensibility, facilitating rapid iteration and scalable robotics simulation.

Newton is a Linux Foundation project that is community-built and maintained. It is permissively licensed under the Apache-2.0 license.

Newton was initiated by Disney Research, Google DeepMind, and NVIDIA.

Quickstart

During the alpha development phase, we recommend using the uv Python package and project manager. You may find uv installation instructions in the Newton Installation Guide.

Once uv is installed, running Newton examples is straightforward:

# Clone the repository
git clone git@github.com:newton-physics/newton.git
cd newton

# set up the uv environment for running Newton examples
uv sync --extra examples

# run an example
uv run -m newton.examples basic_pendulum

See the installation guide for detailed instructions that include steps for setting up a Python environment for use with Newton.

Examples

Before running the examples below, set up the uv environment with:

uv sync --extra examples

Basic Examples

Pendulum URDF Viewer
uv run -m newton.examples basic_pendulum uv run -m newton.examples basic_urdf uv run -m newton.examples basic_viewer
Shapes Joints
uv run -m newton.examples basic_shapes uv run -m newton.examples basic_joints

Robot Examples

Cartpole Humanoid G1
uv run -m newton.examples robot_cartpole uv run -m newton.examples robot_humanoid uv run -m newton.examples robot_g1
H1 Anymal D Anymal C Walk
uv run -m newton.examples robot_h1 uv run -m newton.examples robot_anymal_d uv run --extra torch-cu12 -m newton.examples robot_anymal_c_walk
Policy UR10
uv run -m newton.examples robot_policy uv run -m newton.examples robot_ur10

Cloth Examples

Cloth Bending Cloth Hanging Cloth Style3D
uv run -m newton.examples cloth_bending uv run -m newton.examples cloth_hanging uv run -m newton.examples cloth_style3d

Inverse Kinematics Examples

IK Franka IK H1 IK Benchmark
uv run -m newton.examples ik_franka uv run -m newton.examples ik_h1 uv run -m newton.examples ik_benchmark
Cloth Franka Cloth Twist
uv run -m newton.examples cloth_franka uv run -m newton.examples cloth_twist

MPM Examples

MPM Granular MPM Anymal
uv run -m newton.examples mpm_granular uv run --extra torch-cu12 -m newton.examples mpm_anymal

Selection Examples

Selection Cartpole Selection Materials Selection Articulations
uv run -m newton.examples selection_cartpole uv run -m newton.examples selection_materials uv run -m newton.examples selection_articulations

DiffSim Examples

DiffSim Ball DiffSim Cloth DiffSim Drone
uv run -m newton.examples diffsim_ball uv run -m newton.examples diffsim_cloth uv run -m newton.examples diffsim_drone
DiffSim Spring Cage DiffSim Soft Body
uv run -m newton.examples diffsim_spring_cage uv run -m newton.examples diffsim_soft_body

Example Options

The examples support the following command-line arguments:

Argument Description Default
--viewer Viewer type: gl (OpenGL window), usd (USD file output), rerun (ReRun), or null (no viewer). gl
--device Compute device to use, e.g., cpu, cuda:0, etc. None (default Warp device)
--num-frames Number of frames to simulate (for USD output). 100
--output-path Output path for USD files (required if --viewer usd is used). None

Some examples may add additional arguments (see their respective source files for details).

Example Usage

# List available examples
uv run -m newton.examples

# Run with the USD viewer and save to my_output.usd
uv run -m newton.examples basic_viewer --viewer usd --output-path my_output.usd

# Run on a selected device
uv run -m newton.examples basic_urdf --device cuda:0

# Combine options
uv run -m newton.examples basic_viewer --viewer gl --num-frames 500 --device cpu

Contributing and Development

See the contribution guidelines and the development guide for instructions on how to contribute to Newton.

Support and Community Discussion

For questions, please consult the Newton documentation first before creating a discussion in the main repository.

Code of Conduct

By participating in this community, you agree to abide by the Linux Foundation Code of Conduct.

Project Governance, Legal, and Members

Please see the newton-governance repository for more information about project governance.

About

An open-source, GPU-accelerated physics simulation engine built upon NVIDIA Warp, specifically targeting roboticists and simulation researchers.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Languages