Skip to content

Release v1.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Aug 13:19
· 64 commits to main since this release
cca3bb8

Newton v1.5.0

Newton v1.5.0 is a feature release following v1.4.0. It expands scalable batched simulation and robot-control workflows, improves contact reliability and asset-import fidelity, strengthens cable mechanics, and adds new opt-in MuJoCo and Kamino capabilities.

For the complete list of changes, see the changelog.

Highlights

  • Experimental: vectorized joint control. The new newton.controllers module adds model-based and caller-supplied joint-space impedance controllers for heterogeneous GPU robot batches, with a runnable example. (#3598)

  • Scalable multi-world workflows. Isolated implicit MPM, masked solver resets, and dedicated global-world gravity make batched robot-learning simulations easier to reset, capture, and run without cross-world state loss. Representative replicated humanoid and G1 workloads initialize 11% to 24% faster, while CPU peak initialization memory falls 10% to 15% across Cartpole, Humanoid, and G1. (#3411, #3412, #3415, #3601, #3649, #3656, #3724)

  • MuJoCo Warp sleeping. Opt-in tree sleeping, contact-based wake-up, initial sleep policies, compact nvmax storage, and a runnable example reduce active work and solver memory for scenes where many articulated trees can remain inactive. (#3731)

  • Contact correctness and persistence. Deterministic hydroelastic generation, persistent geometry, selective reset, stable box manifolds, full-surface VBD proxy coupling, and Kamino capacity fixes improve reproducibility in contact-rich simulations. (#3661, #3649, #3775, #3641, #3732, #3776, #3756)

  • Cable shear and twist. Cable helpers and experimental VBD slots model stretch, shear, bend, and twist independently, with corrected isotropic conditioning, more efficient bend/twist solving that remains robust near folds, seven validation examples, and a plectoneme showcase. (#3122, #3783, #3860)

  • USD and MJCF fidelity. Importers preserve purpose, visibility, materials, textures, mass, velocity, physics-scene discovery and selection, collision filtering, sites, and equality constraints more faithfully, while faster terrain and USD construction shorten setup. (#3404, #3712, #3418, #3322, #3628, #3761, #3714, #3785, #3814)

  • Experimental: Kamino DVI dynamics. Users can opt into sparse or dense DVI dynamics with diagnostics, warm starting, bounded recovery, and reusable ordering while PADMM remains the default. (#3570, #3613)

Announcements

Upgrade attention

  • Joint target names. The deprecated joint_target_pos and joint_target_vel aliases have been removed from Model, Control, and ModelBuilder. Use joint_target_q and joint_target_qd; changing these names alone does not require changing the target layout. (#3617)

  • Position-target layout. The legacy DOF-shaped joint_target_q layout is deprecated for models containing free, ball, or distance joints. Set newton.use_coord_layout_targets = True before building models so joint_target_q matches joint_q, keep joint_target_qd DOF-shaped, and index position targets with Model.joint_target_q_start. Models without those joint types have identical layouts. (#3617)

  • USD visual import. Static visual-only geometry now loads by default, and approximated colliders retain their authored render mesh. Pass load_static_visual_shapes=False to preserve body-associated visuals only, filter collision shapes with ShapeFlags.COLLIDE_SHAPES, or pass load_visual_shapes=False when visual shapes are unwanted. (#3694, #3712)

  • Fast math. Tiled-camera render kernels and intersect_ray() now use fast math by default. Set SensorTiledCamera.default_render_config.enable_fast_math = False and pass fast_math=False to preserve bit-exact IEEE-precise output. (#3452, #3521)

  • VBD Dahl friction. Implicit positive Dahl defaults are disabled. Pass dahl_defaults_enabled=True only as a temporary compatibility measure, then explicitly author positive vbd:dahl_eps_max and vbd:dahl_tau values. (#3636)

  • Model replication. ModelBuilder.replicate() now merges copies in one pass and no longer invokes subclass overrides of add_world() or add_builder() per copy. Move required side effects outside those overrides, or call the methods explicitly. (#3656)

  • Kamino speculative contacts. SolverKamino now culls positive-distance speculative contacts by default. No compatibility switch restores the earlier behavior; increase ShapeConfig.margin to move force onset and re-test affected scenes. (#3779)

Breaking changes and removals

The behavior and default changes that require migration are summarized under Upgrade attention. The following APIs deprecated in earlier releases have now been removed:

  • Joint targets and actuator defaults. The joint_target_pos and joint_target_vel aliases are removed from Model, Control, and ModelBuilder, and Actuator now selects joint_target_q and joint_target_qd by default. (#3617)

  • SDF compatibility storage. Deprecated public texture-SDF and block-coordinate attributes on Model and SDF are removed. Use supported geometry APIs instead of relying on internal SDF storage. (#3622)

  • BVH and heightfield helpers. The free build_bvh_* and refit_bvh_* helpers are removed in favor of the corresponding Model.bvh_build_*() and Model.bvh_refit_*() methods. Model.has_heightfields is removed; use Model.heightfield_count. (#3619)

  • Solver flags and options. SolverNotifyFlags is removed in favor of ModelFlags, and the ineffective SolverMuJoCo(ls_parallel=...) option is removed. (#3619)

  • Experimental VBD cable slots. SolverVBD.JointSlot now separates stretch, shear, bend, and twist. Raw slot=1 and JointSlot.ANGULAR now select shear; use JointSlot.BEND, now slot 2, for bending. (#3122, #3783)

New deprecations

  • Scalar gravity. Pass a three-component gravity vector to ModelBuilder instead of a scalar. (#3324)

  • Solver reset masks. Use a wp.bool mask with shape (world_count + 1,); the final entry selects global entities in world -1. (#3726)

  • VBD sticky-contact parameters. rigid_contact_stick_motion_eps, rigid_contact_stick_freeze_translation_eps, and rigid_contact_stick_freeze_angular_eps are ignored and deprecated. Use collision-pipeline sticky matching. (#3652)

  • Model-owned collision helpers. Replace Model.contacts() and Model.collide() with an explicit CollisionPipeline, pipeline.contacts(), and pipeline.collide(). (#3409)

  • DOF-shaped position targets. Opt into coordinate-layout position targets with newton.use_coord_layout_targets = True before building models and index them with Model.joint_target_q_start. (#3617)

Upcoming removals

  • The coordinate layout will become the only joint_target_q layout in a future release, and newton.use_coord_layout_targets will be removed. Opt into the coordinate layout now. (#3617)

  • The temporary dahl_defaults_enabled=True compatibility mode will be removed in a future release. Explicitly author positive vbd:dahl_eps_max and vbd:dahl_tau values where Dahl cable friction is required. (#3636)

Dependency updates

  • Newton now requires warp-lang>=1.16.0.
  • The sim extra moves to MuJoCo and MuJoCo Warp 3.11.
  • USD import workflows require newton-usd-schemas>=0.4.1.
  • No new required dependency names were added.

For complete dependency details, see the pyproject.toml comparison.

Acknowledgments

Thanks to the Newton Project Members and to the following contributors from outside the Newton maintainer, TSC, and project-member groups:

  • @maxkra15 for isolated multi-world implicit MPM, rebuildable sparse grids, and masked coupled-solver resets. (#3411, #3412, #3649)
  • @nvtw for Kamino DVI dynamics and performance, deterministic hydroelastic contacts, stable box manifolds, collision-pipeline migration, and viewer improvements. (#3570, #3613, #3610, #3661, #3776, #3409, #3410)
  • @StafaH for faster startup and model replication, mesh-derived heightfields, ray-query and camera performance, and configurable shape BVHs. (#3656, #3624, #3521, #3452, #3634)
  • @han-xudong for MJCF asset, default-class, material, site, and contact-pair fixes; model validation; and ball-joint damping support. (#3686, #3673, #3687, #3631, #3667, #3671, #3310, #3311, #3458, #3298, #3299)
  • @mmichelis for full-surface VBD proxy coupling and multi-world collision-buffer fixes. (#3756, #3664, #3785)
  • @ooctipus for USD purpose and material-binding behavior and MuJoCo external-contact cache correctness under CUDA graphs. (#3404, #3351, #3768)
  • @daniela-hase for forward-depth camera output, fullscreen ViewerGL sensor-image display, tiled and deformable rendering fixes, and Warp 1.16 integration. (#3519, #3811, #3536, #3551, #3518, #3557)
  • @caugonnet for fixing the lifetime of meshes shared across finalized models and adding explicit cache invalidation. (#3637)
  • @nblauch for tiled-camera cubic and triplanar texture projection modes. (#2312)
  • @jieseattle for warning when mirrored USD rigid-body transforms cannot be decomposed safely. (#3654)
  • @felixmey for fixing small-angle revolute-joint reconstruction. (#3706)
  • @c0d1f1ed for extending portable CPU graph-capture coverage. (#3501)
  • @lyd405121 for adding per-DOF masking to inverse-kinematics optimization. (#3488)
  • @LuyiLi for fixing scale-dependent MPR contacts on large mesh triangles. (#3766)
  • @kioxli for fixing MuJoCo collision-mask overflow at the highest supported graph color. (#3771)
  • @ruziniuuuuu for imported-collider visibility and atomic viewer-texture publication fixes. (#3292, #3289)
  • @aneangel for fixing particle rendering scale in the cloth_franka example. (#2991)
  • @devshahofficial for correcting Robotiq masses through the updated Menagerie asset pin. (#3555)