mjlab v1.2.0 #746
kevinzakka
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
mjlab v1.2.0
Our biggest release yet. 60+ pull requests from 12 contributors. A ground up redesign of domain randomization, major viewer improvements, cloud training support, and many bug fixes.
dr_hero.mp4
Domain randomization on the yam lift cube task: cube color, cube size, cube mass, link orientations, link inertias, camera FOV, and lighting all randomized per environment on every reset.
Domain Randomization, Redesigned
Domain randomization is central to sim to real transfer. The new
drmodule replaces the oldrandomize_fieldwith typed, per field functions that automatically recompute derived physics quantities. Randomize body mass and the inertia stays consistent. Randomize geom size and the broadphase bounds update. No manualset_constcalls, no silent physics breakage.The full lineup covers geometry, bodies, visuals, cameras, and lights. Custom operations and distributions are first class: define your own and pass them anywhere a string is accepted. The native viewer syncs all randomized fields from the GPU model on every reset, so DR changes are immediately visible.
Viewer Overhaul
viewer.mp4
The viewer timing model was rewritten. A single sim budget accumulator with a wall time deadline keeps physics and rendering in sync at any speed multiplier (1/32x to 8x). When physics cannot keep up, the deadline caps the burst so the renderer always gets a turn.
New in both viewers:
apply_body_impulseevents in real timeNew in Viser:
Step Events and Body Impulses
The new
"step"event mode fires every environment step, not just on reset. Combine it withapply_body_impulseto throw external forces at your robot during training, with configurable duration, magnitude, and application point.impulse.mp4
Cloud Training
Train on cloud GPUs with a single command. We added SkyPilot integration for Lambda Cloud with docs covering setup, monitoring, and cost management. W&B sweep scripts distribute one agent per GPU across multi GPU instances.
Documentation
The docs have been completely rewritten with improved guides, API reference, and multi versioned support. Check them out at mujocolab.github.io/mjlab.
Also In This Release
export-sceneCLI to dump any task scene or asset zoo entity to a directory or zip for inspection and debuggingrsl-rl-libupgraded to 5.0.1 with automatic checkpoint migration for the new distribution config formatjoint_torques_l2now acceptsactuator_idsfor penalizing a subset of actuatorsBreaking Changes
randomize_fieldis removed. Use typed functions from thedrmodule (e.g.dr.geom_friction,dr.body_mass).EventTermCfgno longer acceptsdomain_randomization.RslRlModelCfgusesdistribution_cfgdict instead ofstochastic/init_noise_std/noise_std_type. Existing checkpoints are migrated automatically on load.Bug Fixes
height_scanreturning ~0 for missed rays (Fix height_scan returning ~0 for missed rays #646)ffmpegviaimageio-ffmpeg, no more system install required (Bundle ffmpeg for mediapy via imageio-ffmpeg #650)New Contributors
Thank you to @Msornerrrr, @rdeits-bd, @jonzamora, @jgueldenstein, @saikishor, @ax-anoop, @chengruiz, @ManuelActisCassa, and @etaoxing!
Full Changelog: v1.1.1...v1.2.0
This discussion was created from the release mjlab v1.2.0.
Beta Was this translation helpful? Give feedback.
All reactions