Skip to content

mjlab v1.6.0

Latest

Choose a tag to compare

@kevinzakka kevinzakka released this 09 Aug 00:26
· 7 commits to main since this release
Immutable release. Only release title and notes can be modified.
0fb8a68

This release bumps mjlab to MuJoCo and MuJoCo Warp 3.11, broadens visual domain randomization to lights and textures, and fixes a family of partial-reset bugs that caused state leakage between environments.

Breaking changes

  • CollisionCfg no longer silently defaults contype, conaffinity, condim, and priority to MuJoCo's values. All four must be set explicitly; add a ".*" catch-all entry for dict values that should cover every matched geom.
  • CommandTerm._update_command gains an env_ids parameter (None for the regular per-step call, reset ids when called from reset()). Custom command terms must add it; construction raises a TypeError with migration instructions if it is missing.
  • ViewerConfig is now keyword-only.

Visual domain randomization

Six new dr.light_* functions randomize light diffuse, specular, ambient, attenuation, cutoff, and exponent. LightCfg exposes the corresponding static fields. TextureCfg can now load textures from image files, and dr.mat_texid randomizes which texture fills a material slot. A new GeomCfg spec editor patches geom attributes (group, collision fields) by name pattern.

Partial-reset correctness

reset(env_ids=...) previously leaked state into environments that were not reset: commands advanced an extra step, observation buffers received a duplicate frame, and interval-event timers carried over from the previous episode. All three are fixed. auto_reset and an explicit reset() now produce identical state.

Quality of life

  • The offscreen renderer operates on a model copy, so render-only tweaks (extent, shadows, reflections) no longer bleed into the simulation model.
  • ViewerConfig gains geom_group and site_group for controlling which visualization groups the offscreen renderer draws.
  • MetricsTermCfg supports reduce="sum" for reporting accumulated episode totals.
  • init_velocity_prob no longer restores the pre-reset pose or teleports root velocity on mid-episode resamples.
  • CircularBuffer lag retrieval clamps to the oldest retained frame instead of wrapping.
  • Camera sensor caches are invalidated after sense(), fixing stale observations.

This release includes significant contributions from @bd-pmorais (visual domain randomization, GeomCfg, MuJoCo 3.11 bump) and @bd-mlutter (ViewerConfig improvements, offscreen renderer isolation, metrics).

Full changelog: v1.5.3...v1.6.0