Changelog#

Version 1.0.0 (November 6, 2026)#

Device Layer#

Breaking changes

  • Refactored lifecycle hooks in Device:
    • on_substep is triggered after every physics substep

    • on_step is triggered on the final physics substep, after on_substep and before get_measurements.

    • on_begin_stepping is triggered after resets, once the state is final.

    • get_measurements replaces the now deprecated get_substep_measurements.

  • Refactored lifecycle hooks in SubstepMeasurementsProcessor:
    • on_substep is triggered after every physics substep.

    • on_begin_stepping is triggered after resets, once the state is final.

    • process_measurements replaces the now deprecated process_substep_measurements.

Task Layer#

Common Devices#

Breaking changes

  • Removed ActuatorDevice.configure_spec() and its transmission parameter.

    Migration: Define actuators in the MJCF or MjSpec before device initialization; ActuatorDevice now infers transmission types from the compiled MjModel.

  • Added TactileDevice (mjSENS_TACTILE) with optional Laplacian smoothing and 2D spatial observation plots in the mujoco.studio viewer.

  • Added <dcmotor> and MIMO actuator support to TorchWrapper and ActuatorDevice.

  • After a reset, every history slot of ContactSensorDevice holds the reset reading instead of zeros, and its history also advances while the device is dark.

  • The built-in devices implement get_measurements instead of get_substep_measurements. Subclasses that override get_substep_measurements must override get_measurements instead.

  • Camera devices render in on_substep and on_begin_stepping. Their get_measurements returns the latest frame without rendering, and raises a RuntimeError if nothing was rendered since the last reset.

  • After a reset, delayed StochasticSubstepMeasurements keys read the reset reading until the delay has passed. Keys without delay apply their bias and latest noise sample to the current reading, and readings pass through until the processor has seen a substep or reset.

Bugs Fixed#

  • After a partial reset, DeviceLayer only refreshes the measurements of the reset environments.

  • ContactSensorDevice and StochasticSubstepMeasurements no longer advance their history and delay buffers for environments that are not reset.

  • Features observers and loggers no longer run twice per step when any environment resets.

0.0.1#

Initial open-source release of reaf-sim (reaf.simulation.torch).