Skip to content

2.3.1

Compare
Choose a tag to compare
@kbayes kbayes released this 06 Dec 13:21
· 2074 commits to main since this release

Python bindings

  1. The simulate GUI is now available through the mujoco Python package as mujoco.viewer. See documentation for details. (Contribution by Levi Burner.)
  2. The Renderer class from the MuJoCo tutorial Colab is now available directly in the native Python bindings.

General

  1. The tendon springlength attribute can now take two values. Given two non-decreasing values, springlength specifies a deadband range for spring stiffness. If the tendon length is between the two values, the force is 0. If length is outside this range, the force behaves like a regular spring, with the spring resting length corresponding to the nearest springlength value. This can be used to create tendons whose limits are enforced by springs rather than constraints, which are cheaper and easier to analyse. See tendon_springlength.xml example model. This is a minor breaking API change. mjModel.tendon_lengthspring now has size ntendon x 2 rather than ntendon x 1.

  2. Removed the requirement that stateless actuators come before stateful actuators.

  3. Added mju_fill, mju_symmetrize and mju_eye utility functions.

  4. Added gravcomp attribute to body implementing gravity compensation and buoyancy. See balloons.xml example model.

  5. Renamed the cable plugin library to elasticity.

  6. Added actdim attribute to general actuators. Values greater than 1 are only allowed for user, as native activation dynamics are all scalar. Added example test implementing 2nd-order activation dynamics to engine_forward_test.cc.

  7. Improved particle composite type, which now permits a user-specified geometry and multiple joints. See the two new examples: particle_free.xml and particle_free2d.xml.

  8. Performance improvements for non-AVX configurations:

  9. Added new solid passive force plugin.

    • This is new force field compatible with the composite particles.
    • Generates a tetrahedral mesh having particles with mass concentrated at vertices.
    • Uses a piecewise-constant strain model equivalent to finite elements but expressed in a coordinate-free
      formulation. This implies that all quantities can be precomputed except edge elongation, as in a mass-spring model.
    • Only suitable for small strains (large displacements but small deformations). Tetrahedra may invert if subject to
      large loads.
  10. Added API functions mj_loadPluginLibrary and mj_loadAllPluginLibraries. The first function is identical to dlopen on a POSIX system, and to LoadLibraryA on Windows. The second function scans a specified directory for all dynamic libraries file and loads each library found. Dynamic libraries opened by these functions are assumed to register one or more MuJoCo plugins on load.

  11. Added an optional visualize callback to plugins, which is called during mjv_updateScene. This callback allows custom plugin visualizations. Enable stress visualization for the Cable plugin as an example.

  12. Sensors of type user no longer require objtype, objname and needstage. If unspecified, the objtype is now mjOBJ_UNKNOWN. user sensors datatype default is now real, needstage default is now acc.

  13. Added support for capsules in URDF import.

  14. On macOS, issue an informative error message when run under Rosetta 2 translation on an Apple Silicon machine. Pre-built MuJoCo binaries make use of AVX instructions on x86-64 machines, which is not supported by Rosetta 2. (Before this version, users only get a cryptic "Illegal instruction" message.)

Bug fixes

  1. Fixed bug in mj_addFileVFS that was causing the file path to be ignored (introduced in 2.1.4).

Simulate

  1. Renamed the directory in which the simulate application searches for plugins from plugin to mujoco_plugin.
  2. Mouse force perturbations are now applied at the selection point rather than the body center of mass.

Python bindings 2.3.1.post1 (6 December 2022)

  • Fix type annotations in mujoco.viewer that were causing errors in Python 3.7 and 3.8.