Solver Differences#

Isaac Lab presents a common asset and task interface across its physics backends, but that interface does not make the underlying solver models interchangeable. PhysX and the Newton solvers can use the same USD asset while producing different trajectories because they construct contacts, represent state, stabilize constraints, and allocate work differently.

This comparison covers the PhysX solver configured by PhysxCfg, Newton MuJoCo-Warp (MJWarp) configured by MJWarpSolverCfg, and Newton Kamino configured by KaminoPADMMSolverCfg or KaminoDVISolverCfg. OvPhysX is a separate, experimental backend with its own limitations; it is not another solver mode of the PhysX backend discussed here.

Use this page to understand the model differences. For the controls and a measured tuning procedure, use Tune MJWarp or Tune Kamino; the generated solver configuration APIs are the reference for exact fields and defaults.

Why solver settings do not translate directly#

A configuration value has meaning only within the solver that consumes it. For example, PhysX scene controls do not configure a Newton solver, and MJWarp’s MuJoCo-specific controls do not configure PhysX. The common Isaac Lab configuration selects a backend and solver; it does not translate a numerical setting into an equivalent physical effect.

Even settings with similar names can participate in different contact models or convergence criteria. Porting therefore starts by preserving the mechanical model, collision geometry, material bindings, reset state, actuator behavior, and control period. Then compare the resulting physical behavior and tune the target solver with its own controls.

Friction and contact#

PhysX uses patch-based Coulomb friction: nearby contacts can be correlated into a friction patch. Its friction-correlation and offset controls are part of PhysxCfg. MJWarp uses MuJoCo’s contact model, including its selectable pyramidal or elliptic friction cone and frictional impedance ratio. Kamino resolves hard frictional contacts in its maximal-coordinate constrained dynamics solve and exposes contact-material mixing and warm-start configuration through its generated API.

The collision path also differs. PhysX exposes continuous collision detection through enable_ccd, but Isaac Lab disables that option when GPU dynamics is enabled. MJWarp can use either its internal MuJoCo contact path or Newton’s collision pipeline; those modes are mutually exclusive. Kamino can use Newton’s collision pipeline or, when enabled, its own internal collision detector. These choices determine which capacity and collision controls are active.

Porting implication. Equal material coefficients do not guarantee equal slip, grasp stability, or contact counts. Revalidate collision geometry and contact behavior before tuning friction. A task that depended on PhysX CCD needs an independently validated timestep and collision strategy on Newton; MJWarp’s ccd_iterations is a convex GJK/EPA convergence limit, not a PhysX-style CCD switch.

Restitution and stabilization#

PhysX applies restitution using per-material properties and a scene-level bounce threshold. Its optional stabilization pass can improve large-timestep behavior, but can make reported contact-sensor forces inaccurate. MJWarp expresses contact compliance through its MuJoCo model and solver formulation; Kamino exposes Baumgarte stabilization separately for bilateral joints, unilateral joint limits, and unilateral contacts.

These are different mechanisms, so copying a restitution or stabilization setting does not preserve resting-contact behavior. The exact configuration surface belongs in the PhysxCfg, MJWarpSolverCfg, and KaminoConstraintsCfg API references.

Porting implication. Validate bounce, penetration, chatter, and measured contact forces in the target solver. Do not use a stabilization or restitution control as a substitute for valid collision geometry, reset state, or material properties.

Coordinates and state consistency#

PhysX articulations and MJWarp use reduced joint coordinates for their articulated state. Kamino solves rigid multi-body systems in maximal coordinates with constraints. Its reset path can reconcile body poses with reduced joint state through forward kinematics; whether that path is used is determined by use_fk_solver and the articulation structure.

Isaac Lab asset APIs maintain the public state interface across the backends, but custom reset code can still write a state that is inconsistent with the target solver’s representation.

Porting implication. Use the asset write APIs for resets and validate the first step with a fixed state. For Kamino, treat disagreement between joint state and body poses as a reset-modeling problem before tuning solver gains.

Timesteps and convergence#

PhysX advances at the simulation timestep and uses actor iteration counts within scene limits. MJWarp and Kamino each run num_substeps solver substeps per physics tick, so their solver timestep is the simulation timestep divided by the substep count. More substeps change integration work; they do not translate a PhysX iteration setting into a Newton equivalent.

Substeps do not inherently refresh Newton-pipeline contacts. When that pipeline is active, collision_decimation can re-collide within a physics tick only when it is positive and less than num_substeps; the default value of zero collides once at the start of each tick. This setting does not apply when MJWarp uses its internal MuJoCo contact path or Kamino uses its internal collision detector.

MJWarp provides outer iterations, line-search iterations, and a residual tolerance. Kamino’s P-ADMM and DVI modes have different iteration and convergence controls. PhysX has its own position and velocity iteration model. Consult the generated APIs and the focused tuning guides for current controls instead of copying another solver’s defaults.

Porting implication. Compare a fixed reproduction at the intended policy period, then separately test timestep, substeps, and solver convergence. An iteration increase cannot correct invalid contact geometry, incompatible reset state, or an unstable controller.

Capacity and memory#

PhysX allocates GPU buffers for scene limits, including rigid-contact capacity. MJWarp has per-world contact and constraint limits such as nconmax and njmax. Kamino has per-world contact allocation controls in addition to the capacity used by its selected collision path. Their units and failure modes are solver-specific, even when every environment contains the same asset.

Porting implication. Measure the target solver’s busiest reset and contact states before scaling environment count. Increase an observed overflowing capacity first; capacity changes cannot repair an invalid contact model or convergence problem.