From 73fb61e3e2c7de1115cfa4babb0ecf9bf08fd56c Mon Sep 17 00:00:00 2001 From: Kyle Bayes Date: Mon, 5 Dec 2022 12:12:50 -0800 Subject: [PATCH] Bump version number to 2.3.1. PiperOrigin-RevId: 493076656 Change-Id: I48c7a45b503c4a7363ea1455a4a3788262d007f7 --- CMakeLists.txt | 2 +- doc/changelog.rst | 124 +++++++++--------- doc/unity.rst | 4 +- include/mujoco/mujoco.h | 2 +- python/mujoco/CMakeLists.txt | 4 +- python/setup.py | 2 +- sample/CMakeLists.txt | 2 +- simulate/CMakeLists.txt | 2 +- src/engine/engine_support.c | 4 +- test/engine/engine_support_test.cc | 2 +- .../Editor/Bindings/MujocoBinaryRetriever.cs | 4 +- unity/Runtime/Bindings/MujocoBindings.cs | 2 +- unity/package.json | 2 +- 13 files changed, 78 insertions(+), 78 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7473cf3..916fb265 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ set(MSVC_INCREMENTAL_DEFAULT ON) project( mujoco - VERSION 2.3.0 + VERSION 2.3.1 DESCRIPTION "MuJoCo Physics Simulator" HOMEPAGE_URL "https://mujoco.org" ) diff --git a/doc/changelog.rst b/doc/changelog.rst index d572a524..fae35c58 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -3,92 +3,92 @@ Changelog ========= -Upcoming version (not yet released) +Version 2.3.1 (December 5, 2022) ----------------------------------- Python bindings ^^^^^^^^^^^^^^^ -- The ``simulate`` GUI is now available through the ``mujoco`` Python package as ``mujoco.viewer``. - See :ref:`documentation` for details. (Contribution by `Levi Burner `_.) -- The ``Renderer`` class from the MuJoCo tutorial Colab is now available directly in the native Python bindings. +1. The ``simulate`` GUI is now available through the ``mujoco`` Python package as ``mujoco.viewer``. + See :ref:`documentation` for details. (Contribution by `Levi Burner `_.) +#. The ``Renderer`` class from the MuJoCo tutorial Colab is now available directly in the native Python bindings. General ^^^^^^^ -- The tendon :at:`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 :at:`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. +3. The tendon :at:`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 :at:`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. - .. attention:: - This is a minor breaking API change. ``mjModel.tendon_lengthspring`` now has size ``ntendon x 2`` rather than - ``ntendon x 1``. + .. attention:: + This is a minor breaking API change. ``mjModel.tendon_lengthspring`` now has size ``ntendon x 2`` rather than + ``ntendon x 1``. - .. youtube:: -PJ6afdETUg - :align: right - :height: 150px + .. youtube:: -PJ6afdETUg + :align: right + :height: 150px -- Removed the requirement that stateless actuators come before stateful actuators. -- Added :ref:`mju_fill`, :ref:`mju_symmetrize` and :ref:`mju_eye` utility functions. -- Added :at:`gravcomp` attribute to :ref:`body`, implementing gravity compensation and bouyancy. - See `balloons.xml `_ example model. -- Renamed the ``cable`` plugin library to ``elasticity``. -- Added :at:`actdim` attribute to :ref:`general actuators`. Values greater than 1 are only allowed - for dyntype :at-val:`user`, as native activation dynamics are all scalar. Added example test implementing 2nd-order - activation dynamics to - `engine_forward_test.cc `_. -- Improved particle :ref:`composite` type, which now permits a user-specified geometry and multiple - joints. See the two new examples: - `particle_free.xml `_ and - `particle_free2d.xml `_. -- Performance improvements for non-AVX configurations: +#. Removed the requirement that stateless actuators come before stateful actuators. +#. Added :ref:`mju_fill`, :ref:`mju_symmetrize` and :ref:`mju_eye` utility functions. +#. Added :at:`gravcomp` attribute to :ref:`body`, implementing gravity compensation and bouyancy. + See `balloons.xml `_ example model. +#. Renamed the ``cable`` plugin library to ``elasticity``. +#. Added :at:`actdim` attribute to :ref:`general actuators`. Values greater than 1 are only allowed + for dyntype :at-val:`user`, as native activation dynamics are all scalar. Added example test implementing 2nd-order + activation dynamics to + `engine_forward_test.cc `_. +#. Improved particle :ref:`composite` type, which now permits a user-specified geometry and multiple + joints. See the two new examples: + `particle_free.xml `_ and + `particle_free2d.xml `_. +#. Performance improvements for non-AVX configurations: - - 14% faster ``mj_solveLD`` using `restrict `_. See `engine_core_smooth_benchmark_test - `_. - - 50% faster ``mju_dotSparse`` using manual loop unroll. See `engine_util_sparse_benchmark_test - `_. -- Added new :at:`solid` passive force plugin: + - 14% faster ``mj_solveLD`` using `restrict `_. See `engine_core_smooth_benchmark_test + `_. + - 50% faster ``mju_dotSparse`` using manual loop unroll. See `engine_util_sparse_benchmark_test + `_. +#. Added new :at:`solid` passive force plugin: - .. youtube:: AGcTGHbbze4 - :align: right - :height: 150px + .. youtube:: AGcTGHbbze4 + :align: right + :height: 150px - - This is new force field compatible with the :ref:`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. + - This is new force field compatible with the :ref:`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. -- Add 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. -- Add an optional ``visualize`` callback to plugins, which is called during ``mjv_updateScene``. This callback allows - custom plugin visualizations. Enable stree visualization for the Cable plugin as an example. -- Sensors of type :ref:`user` no longer require :at:`objtype`, :at:`objname` and :at:`needstage`. If - unspecified, the objtype is now :ref:`mjOBJ_UNKNOWN`. ``user`` sensors :at:`datatype` default is now - :at-val:`"real"`, :at:`needstage` default is now :at-val:`"acc"`. -- Add support for capsules in URDF import. -- 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.) +#. Add 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. +#. Add 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. +#. Sensors of type :ref:`user` no longer require :at:`objtype`, :at:`objname` and :at:`needstage`. If + unspecified, the objtype is now :ref:`mjOBJ_UNKNOWN`. ``user`` sensors :at:`datatype` default is now + :at-val:`"real"`, :at:`needstage` default is now :at-val:`"acc"`. +#. Add support for capsules in URDF import. +#. 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 ^^^^^^^^^ -- Fixed bug in ``mj_addFileVFS`` that was causing the file path to be ignored (introduced in 2.1.4). +17. Fixed bug in ``mj_addFileVFS`` that was causing the file path to be ignored (introduced in 2.1.4). Simulate ^^^^^^^^ -- Renamed the directory in which the ``simulate`` application searches for plugins from ``plugin`` to ``mujoco_plugin``. -- Mouse force perturbations are now applied at the selection point rather than the body center of mass. +18. Renamed the directory in which the ``simulate`` application searches for plugins from ``plugin`` to ``mujoco_plugin``. +#. Mouse force perturbations are now applied at the selection point rather than the body center of mass. Version 2.3.0 (October 18, 2022) diff --git a/doc/unity.rst b/doc/unity.rst index 59e8827c..761b642b 100644 --- a/doc/unity.rst +++ b/doc/unity.rst @@ -30,14 +30,14 @@ _____ The MuJoCo app needs to be run at least once before the native library can be used, in order to register the library as a trusted binary. Then, copy the dynamic library file from -``/Applications/MuJoCo.app/Contents/Frameworks/mujoco.framework/Versions/Current/libmujoco.2.3.0.dylib`` (it can be +``/Applications/MuJoCo.app/Contents/Frameworks/mujoco.framework/Versions/Current/libmujoco.2.3.1.dylib`` (it can be found by browsing the contents of ``MuJoCo.app``) and rename it as ``mujoco.dylib``. Linux _____ Expand the ``tar.gz`` archive to ``~/.mujoco``. Then copy the dynamic library from -``~/.mujoco/mujoco-2.3.0/lib/libmujoco.so.2.3.0`` and rename it as ``libmujoco.so``. +``~/.mujoco/mujoco-2.3.1/lib/libmujoco.so.2.3.1`` and rename it as ``libmujoco.so``. Windows _______ diff --git a/include/mujoco/mujoco.h b/include/mujoco/mujoco.h index bed579e0..21b150b7 100644 --- a/include/mujoco/mujoco.h +++ b/include/mujoco/mujoco.h @@ -24,7 +24,7 @@ extern "C" { #endif // header version; should match the library version as returned by mj_version() -#define mjVERSION_HEADER 230 +#define mjVERSION_HEADER 231 // needed to define size_t, fabs and log10 #include diff --git a/python/mujoco/CMakeLists.txt b/python/mujoco/CMakeLists.txt index c56541a4..f2b706b5 100644 --- a/python/mujoco/CMakeLists.txt +++ b/python/mujoco/CMakeLists.txt @@ -81,13 +81,13 @@ if(NOT TARGET mujoco) find_path(MUJOCO_FRAMEWORK mujoco.Framework HINTS ${MUJOCO_FRAMEWORK_DIR}) if(MUJOCO_FRAMEWORK) message("MuJoCo framework is at ${MUJOCO_FRAMEWORK}/mujoco.framework") - set(MUJOCO_LIBRARY ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.2.3.0.dylib) + set(MUJOCO_LIBRARY ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.2.3.1.dylib) target_compile_options(mujoco INTERFACE -F${MUJOCO_FRAMEWORK}) endif() endif() if(NOT MUJOCO_FRAMEWORK) - find_library(MUJOCO_LIBRARY mujoco mujoco.2.3.0 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED) + find_library(MUJOCO_LIBRARY mujoco mujoco.2.3.1 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED) find_path(MUJOCO_INCLUDE mujoco/mujoco.h HINTS ${MUJOCO_INCLUDE_DIR} REQUIRED) message("MuJoCo is at ${MUJOCO_LIBRARY}") message("MuJoCo headers are at ${MUJOCO_INCLUDE}") diff --git a/python/setup.py b/python/setup.py index 2327f35c..5675e7dc 100644 --- a/python/setup.py +++ b/python/setup.py @@ -30,7 +30,7 @@ from setuptools import find_packages from setuptools import setup from setuptools.command import build_ext -__version__ = '2.3.0' +__version__ = '2.3.1' MUJOCO_CMAKE = 'MUJOCO_CMAKE' MUJOCO_CMAKE_ARGS = 'MUJOCO_CMAKE_ARGS' diff --git a/sample/CMakeLists.txt b/sample/CMakeLists.txt index fcad6762..f21e597f 100644 --- a/sample/CMakeLists.txt +++ b/sample/CMakeLists.txt @@ -24,7 +24,7 @@ set(MSVC_INCREMENTAL_DEFAULT ON) project( mujoco_samples - VERSION 2.3.0 + VERSION 2.3.1 DESCRIPTION "MuJoCo samples binaries" HOMEPAGE_URL "https://mujoco.org" ) diff --git a/simulate/CMakeLists.txt b/simulate/CMakeLists.txt index 6708fa35..1e6cc1f5 100644 --- a/simulate/CMakeLists.txt +++ b/simulate/CMakeLists.txt @@ -29,7 +29,7 @@ set(MUJOCO_DEP_VERSION_lodepng project( mujoco_simulate - VERSION 2.3.0 + VERSION 2.3.1 DESCRIPTION "MuJoCo simulate binaries" HOMEPAGE_URL "https://mujoco.org" ) diff --git a/src/engine/engine_support.c b/src/engine/engine_support.c index ca52736e..f7414e7d 100644 --- a/src/engine/engine_support.c +++ b/src/engine/engine_support.c @@ -35,8 +35,8 @@ #endif #endif -#define mjVERSION 230 -#define mjVERSIONSTRING "2.3.0" +#define mjVERSION 231 +#define mjVERSIONSTRING "2.3.1" // names of disable flags const char* mjDISABLESTRING[mjNDISABLE] = { diff --git a/test/engine/engine_support_test.cc b/test/engine/engine_support_test.cc index 89bda174..f0a5b3d0 100644 --- a/test/engine/engine_support_test.cc +++ b/test/engine/engine_support_test.cc @@ -155,7 +155,7 @@ TEST_F(JacobianTest, SubtreeJacNoInternalAcc) { using VersionTest = MujocoTest; -const char *const kExpectedVersionString = "2.3.0"; +const char *const kExpectedVersionString = "2.3.1"; TEST_F(VersionTest, MjVersion) { EXPECT_EQ(mj_version(), mjVERSION_HEADER); diff --git a/unity/Editor/Bindings/MujocoBinaryRetriever.cs b/unity/Editor/Bindings/MujocoBinaryRetriever.cs index 9e6a4dc6..c86b43f0 100644 --- a/unity/Editor/Bindings/MujocoBinaryRetriever.cs +++ b/unity/Editor/Bindings/MujocoBinaryRetriever.cs @@ -37,7 +37,7 @@ public class MujocoBinaryRetriever { if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/mujoco.dylib") == null) { File.Copy( "/Applications/MuJoCo.app/Contents/Frameworks" + - "/mujoco.framework/Versions/Current/libmujoco.2.3.0.dylib", + "/mujoco.framework/Versions/Current/libmujoco.2.3.1.dylib", mujocoPath + "/mujoco.dylib"); AssetDatabase.Refresh(); } @@ -45,7 +45,7 @@ public class MujocoBinaryRetriever { if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/libmujoco.so") == null) { File.Copy( Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + - "/.mujoco/mujoco-2.3.0/lib/libmujoco.so.2.3.0", + "/.mujoco/mujoco-2.3.1/lib/libmujoco.so.2.3.1", mujocoPath + "/libmujoco.so"); AssetDatabase.Refresh(); } diff --git a/unity/Runtime/Bindings/MujocoBindings.cs b/unity/Runtime/Bindings/MujocoBindings.cs index ff57998b..661c1913 100644 --- a/unity/Runtime/Bindings/MujocoBindings.cs +++ b/unity/Runtime/Bindings/MujocoBindings.cs @@ -101,7 +101,7 @@ public const int mjMAXLINEPNT = 1000; public const int mjMAXPLANEGRID = 200; public const bool THIRD_PARTY_MUJOCO_MJXMACRO_H_ = true; public const bool THIRD_PARTY_MUJOCO_MUJOCO_H_ = true; -public const int mjVERSION_HEADER = 230; +public const int mjVERSION_HEADER = 231; // ------------------------------------Enums------------------------------------ diff --git a/unity/package.json b/unity/package.json index d51549c3..d5ba3dc3 100644 --- a/unity/package.json +++ b/unity/package.json @@ -1,7 +1,7 @@ { "name": "org.mujoco", "displayName": "MuJoCo", - "version": "2.3.0", + "version": "2.3.1", "description": "MuJoCo importer and runtime plug-in", "dependencies": {}, "author": {