Physics Backends#
Isaac Lab 3.0 supports multiple physics backends through a unified API. Each backend
exposes the same Articulation,
RigidObject, sensor and renderer surfaces, while differing
in solver characteristics, maturity, and feature coverage. See
Multi-Backend Architecture for how the dispatch and factory machinery work
under the hood.
This page summarizes what each backend supports today; the sub-pages document backend-specific configuration, installation, and limitations.
Choosing a Backend#
PhysX — the historical default. Production-ready, broad coverage of Isaac Lab features, and the reference for behavior parity. Selected via
PhysxCfg.Newton — GPU-accelerated, Warp-native, and differentiable. The Newton integration ships with the MuJoCo-Warp solver and beta support for the Kamino solver. Selected via
NewtonCfg.OvPhysX — a highly experimental kit-less PhysX backend that reads scene-level parameters from the USD
PhysicsSceneprim. Selected viaOvPhysxCfg. Not recommended for general use yet.
The active backend is selected at simulation construction time and applies to every asset, sensor, and renderer instantiated thereafter:
from isaaclab.sim import SimulationCfg
from isaaclab_physx.physics import PhysxCfg
from isaaclab_newton.physics import NewtonCfg, MJWarpSolverCfg
# PhysX (default)
sim_cfg = SimulationCfg(physics=PhysxCfg())
# Newton with MuJoCo-Warp
sim_cfg = SimulationCfg(physics=NewtonCfg(solver_cfg=MJWarpSolverCfg()))
Feature Support Matrix#
The matrix below is intentionally coarse-grained. For exhaustive per-asset and
per-task support, see each backend’s own limitations page.
Feature |
PhysX |
Newton |
OvPhysX |
|---|---|---|---|
Maturity |
Stable |
Beta |
Highly experimental |
Default solver |
TGS (rigid body) |
MuJoCo-Warp |
PhysX (TGS / PGS via USD) |
Alternative solvers |
PGS |
Kamino (beta), additional Newton solvers planned |
— |
Differentiable |
No |
Yes (via Warp) |
No |
Articulation API |
Yes |
Yes |
In-flight (PR #5459) |
Rigid Object API |
Yes |
Yes |
Yes |
Contact Sensor |
Yes |
Yes |
In-flight (PR #5422) |
IMU |
Yes |
Yes |
In-flight (PR #5421) |
Frame Transformer / Ray Caster / PVA / Joint-Wrench Sensor |
Yes |
Yes |
Not yet |
Camera / Tiled Rendering |
Yes (RTX) |
Yes (Newton-Warp renderer) |
Not yet |
Requires Isaac Sim |
Yes |
Optional (only for the Omniverse visualizer) |
Yes |
Solver configuration source |
|
|
USD |
Selecting Backends per Task#
Tasks that support more than one backend define a Hydra preset on
SimulationCfg.physics. The example below shows the cartpole task config which
declares all three backends side by side:
from isaaclab_physx.physics import PhysxCfg
from isaaclab_newton.physics import MJWarpSolverCfg, NewtonCfg
from isaaclab_ovphysx.physics import OvPhysxCfg
@configclass
class CartpolePhysicsCfg(PresetCfg):
default: PhysxCfg = PhysxCfg()
physx: PhysxCfg = PhysxCfg()
newton_mjwarp: NewtonCfg = NewtonCfg(solver_cfg=MJWarpSolverCfg())
ovphysx: OvPhysxCfg = OvPhysxCfg()
Users then select the backend at the command line via presets=<name> or by
overriding the physics field directly. See Backend and Solver Presets for
the full Hydra interaction.