Bump version number to 2.3.1.

PiperOrigin-RevId: 493076656
Change-Id: I48c7a45b503c4a7363ea1455a4a3788262d007f7
This commit is contained in:
Kyle Bayes
2022-12-05 12:12:50 -08:00
committed by Copybara-Service
parent ef695bb8a8
commit 73fb61e3e2
13 changed files with 78 additions and 78 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ set(MSVC_INCREMENTAL_DEFAULT ON)
project( project(
mujoco mujoco
VERSION 2.3.0 VERSION 2.3.1
DESCRIPTION "MuJoCo Physics Simulator" DESCRIPTION "MuJoCo Physics Simulator"
HOMEPAGE_URL "https://mujoco.org" HOMEPAGE_URL "https://mujoco.org"
) )
+62 -62
View File
@@ -3,92 +3,92 @@ Changelog
========= =========
Upcoming version (not yet released) Version 2.3.1 (December 5, 2022)
----------------------------------- -----------------------------------
Python bindings Python bindings
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
- The ``simulate`` GUI is now available through the ``mujoco`` Python package as ``mujoco.viewer``. 1. The ``simulate`` GUI is now available through the ``mujoco`` Python package as ``mujoco.viewer``.
See :ref:`documentation<PyViewer>` for details. (Contribution by `Levi Burner <https://github.com/aftersomemath>`_.) See :ref:`documentation<PyViewer>` for details. (Contribution by `Levi Burner <https://github.com/aftersomemath>`_.)
- The ``Renderer`` class from the MuJoCo tutorial Colab is now available directly in the native Python bindings. #. The ``Renderer`` class from the MuJoCo tutorial Colab is now available directly in the native Python bindings.
General General
^^^^^^^ ^^^^^^^
- The tendon :at:`springlength` attribute can now take two values. Given two non-decreasing values, `springlength` 3. The tendon :at:`springlength` attribute can now take two values. Given two non-decreasing values, `springlength`
specifies a `deadband <https://en.wikipedia.org/wiki/Deadband>`_ range for spring stiffness. If the tendon length is specifies a `deadband <https://en.wikipedia.org/wiki/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 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 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 whose limits are enforced by springs rather than constraints, which are cheaper and easier to analyse. See
`tendon_springlength.xml <https://github.com/deepmind/mujoco/tree/main/test/engine/testdata/tendon_springlength.xml>`_ `tendon_springlength.xml <https://github.com/deepmind/mujoco/tree/main/test/engine/testdata/tendon_springlength.xml>`_
example model. example model.
.. attention:: .. attention::
This is a minor breaking API change. ``mjModel.tendon_lengthspring`` now has size ``ntendon x 2`` rather than This is a minor breaking API change. ``mjModel.tendon_lengthspring`` now has size ``ntendon x 2`` rather than
``ntendon x 1``. ``ntendon x 1``.
.. youtube:: -PJ6afdETUg .. youtube:: -PJ6afdETUg
:align: right :align: right
:height: 150px :height: 150px
- Removed the requirement that stateless actuators come before stateful actuators. #. Removed the requirement that stateless actuators come before stateful actuators.
- Added :ref:`mju_fill`, :ref:`mju_symmetrize` and :ref:`mju_eye` utility functions. #. Added :ref:`mju_fill`, :ref:`mju_symmetrize` and :ref:`mju_eye` utility functions.
- Added :at:`gravcomp` attribute to :ref:`body<body>`, implementing gravity compensation and bouyancy. #. Added :at:`gravcomp` attribute to :ref:`body<body>`, implementing gravity compensation and bouyancy.
See `balloons.xml <https://github.com/deepmind/mujoco/tree/main/model/balloons/balloons.xml>`_ example model. See `balloons.xml <https://github.com/deepmind/mujoco/tree/main/model/balloons/balloons.xml>`_ example model.
- Renamed the ``cable`` plugin library to ``elasticity``. #. Renamed the ``cable`` plugin library to ``elasticity``.
- Added :at:`actdim` attribute to :ref:`general actuators<actuator-general>`. Values greater than 1 are only allowed #. Added :at:`actdim` attribute to :ref:`general actuators<actuator-general>`. 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 for dyntype :at-val:`user`, as native activation dynamics are all scalar. Added example test implementing 2nd-order
activation dynamics to activation dynamics to
`engine_forward_test.cc <https://github.com/deepmind/mujoco/blob/main/test/engine/engine_forward_test.cc>`_. `engine_forward_test.cc <https://github.com/deepmind/mujoco/blob/main/test/engine/engine_forward_test.cc>`_.
- Improved particle :ref:`composite<body-composite>` type, which now permits a user-specified geometry and multiple #. Improved particle :ref:`composite<body-composite>` type, which now permits a user-specified geometry and multiple
joints. See the two new examples: joints. See the two new examples:
`particle_free.xml <https://github.com/deepmind/mujoco/tree/main/model/composite/particle_free.xml>`_ and `particle_free.xml <https://github.com/deepmind/mujoco/tree/main/model/composite/particle_free.xml>`_ and
`particle_free2d.xml <https://github.com/deepmind/mujoco/tree/main/model/composite/particle_free2d.xml>`_. `particle_free2d.xml <https://github.com/deepmind/mujoco/tree/main/model/composite/particle_free2d.xml>`_.
- Performance improvements for non-AVX configurations: #. Performance improvements for non-AVX configurations:
- 14% faster ``mj_solveLD`` using `restrict <https://en.wikipedia.org/wiki/Restrict>`_. See `engine_core_smooth_benchmark_test - 14% faster ``mj_solveLD`` using `restrict <https://en.wikipedia.org/wiki/Restrict>`_. See `engine_core_smooth_benchmark_test
<https://github.com/deepmind/mujoco/tree/main/test/benchmark/engine_core_smooth_benchmark_test.cc>`_. <https://github.com/deepmind/mujoco/tree/main/test/benchmark/engine_core_smooth_benchmark_test.cc>`_.
- 50% faster ``mju_dotSparse`` using manual loop unroll. See `engine_util_sparse_benchmark_test - 50% faster ``mju_dotSparse`` using manual loop unroll. See `engine_util_sparse_benchmark_test
<https://github.com/deepmind/mujoco/tree/main/test/benchmark/engine_util_sparse_benchmark_test.cc>`_. <https://github.com/deepmind/mujoco/tree/main/test/benchmark/engine_util_sparse_benchmark_test.cc>`_.
- Added new :at:`solid` passive force plugin: #. Added new :at:`solid` passive force plugin:
.. youtube:: AGcTGHbbze4 .. youtube:: AGcTGHbbze4
:align: right :align: right
:height: 150px :height: 150px
- This is new force field compatible with the :ref:`composite<body-composite>` particles. - This is new force field compatible with the :ref:`composite<body-composite>` particles.
- Generates a tetrahedral mesh having particles with mass concentrated at vertices. - 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 - 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. 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 - Only suitable for small strains (large displacements but small deformations). Tetrahedra may invert if subject to
large loads. large loads.
- Add API functions ``mj_loadPluginLibrary`` and ``mj_loadAllPluginLibraries``. The first function is identical to #. 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 ``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 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. register one or more MuJoCo plugins on load.
- Add an optional ``visualize`` callback to plugins, which is called during ``mjv_updateScene``. This callback allows #. 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. custom plugin visualizations. Enable stress visualization for the Cable plugin as an example.
- Sensors of type :ref:`user<sensor-user>` no longer require :at:`objtype`, :at:`objname` and :at:`needstage`. If #. Sensors of type :ref:`user<sensor-user>` no longer require :at:`objtype`, :at:`objname` and :at:`needstage`. If
unspecified, the objtype is now :ref:`mjOBJ_UNKNOWN<mjtObj>`. ``user`` sensors :at:`datatype` default is now unspecified, the objtype is now :ref:`mjOBJ_UNKNOWN<mjtObj>`. ``user`` sensors :at:`datatype` default is now
:at-val:`"real"`, :at:`needstage` default is now :at-val:`"acc"`. :at-val:`"real"`, :at:`needstage` default is now :at-val:`"acc"`.
- Add support for capsules in URDF import. #. Add support for capsules in URDF import.
- On macOS, issue an informative error message when run under `Rosetta 2 <https://support.apple.com/en-gb/HT211861>`_ #. On macOS, issue an informative error message when run under `Rosetta 2 <https://support.apple.com/en-gb/HT211861>`_
translation on an Apple Silicon machine. Pre-built MuJoCo binaries make use of translation on an Apple Silicon machine. Pre-built MuJoCo binaries make use of
`AVX <https://en.wikipedia.org/wiki/Advanced_Vector_Extensions>`_ instructions on x86-64 machines, which is not `AVX <https://en.wikipedia.org/wiki/Advanced_Vector_Extensions>`_ instructions on x86-64 machines, which is not
supported by Rosetta 2. (Before this version, users only get a cryptic "Illegal instruction" message.) supported by Rosetta 2. (Before this version, users only get a cryptic "Illegal instruction" message.)
Bug fixes 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 Simulate
^^^^^^^^ ^^^^^^^^
- Renamed the directory in which the ``simulate`` application searches for plugins from ``plugin`` to ``mujoco_plugin``. 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. #. Mouse force perturbations are now applied at the selection point rather than the body center of mass.
Version 2.3.0 (October 18, 2022) Version 2.3.0 (October 18, 2022)
+2 -2
View File
@@ -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 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 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``. found by browsing the contents of ``MuJoCo.app``) and rename it as ``mujoco.dylib``.
Linux Linux
_____ _____
Expand the ``tar.gz`` archive to ``~/.mujoco``. Then copy the dynamic library from 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 Windows
_______ _______
+1 -1
View File
@@ -24,7 +24,7 @@ extern "C" {
#endif #endif
// header version; should match the library version as returned by mj_version() // 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 // needed to define size_t, fabs and log10
#include <stdlib.h> #include <stdlib.h>
+2 -2
View File
@@ -81,13 +81,13 @@ if(NOT TARGET mujoco)
find_path(MUJOCO_FRAMEWORK mujoco.Framework HINTS ${MUJOCO_FRAMEWORK_DIR}) find_path(MUJOCO_FRAMEWORK mujoco.Framework HINTS ${MUJOCO_FRAMEWORK_DIR})
if(MUJOCO_FRAMEWORK) if(MUJOCO_FRAMEWORK)
message("MuJoCo framework is at ${MUJOCO_FRAMEWORK}/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}) target_compile_options(mujoco INTERFACE -F${MUJOCO_FRAMEWORK})
endif() endif()
endif() endif()
if(NOT MUJOCO_FRAMEWORK) 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) find_path(MUJOCO_INCLUDE mujoco/mujoco.h HINTS ${MUJOCO_INCLUDE_DIR} REQUIRED)
message("MuJoCo is at ${MUJOCO_LIBRARY}") message("MuJoCo is at ${MUJOCO_LIBRARY}")
message("MuJoCo headers are at ${MUJOCO_INCLUDE}") message("MuJoCo headers are at ${MUJOCO_INCLUDE}")
+1 -1
View File
@@ -30,7 +30,7 @@ from setuptools import find_packages
from setuptools import setup from setuptools import setup
from setuptools.command import build_ext from setuptools.command import build_ext
__version__ = '2.3.0' __version__ = '2.3.1'
MUJOCO_CMAKE = 'MUJOCO_CMAKE' MUJOCO_CMAKE = 'MUJOCO_CMAKE'
MUJOCO_CMAKE_ARGS = 'MUJOCO_CMAKE_ARGS' MUJOCO_CMAKE_ARGS = 'MUJOCO_CMAKE_ARGS'
+1 -1
View File
@@ -24,7 +24,7 @@ set(MSVC_INCREMENTAL_DEFAULT ON)
project( project(
mujoco_samples mujoco_samples
VERSION 2.3.0 VERSION 2.3.1
DESCRIPTION "MuJoCo samples binaries" DESCRIPTION "MuJoCo samples binaries"
HOMEPAGE_URL "https://mujoco.org" HOMEPAGE_URL "https://mujoco.org"
) )
+1 -1
View File
@@ -29,7 +29,7 @@ set(MUJOCO_DEP_VERSION_lodepng
project( project(
mujoco_simulate mujoco_simulate
VERSION 2.3.0 VERSION 2.3.1
DESCRIPTION "MuJoCo simulate binaries" DESCRIPTION "MuJoCo simulate binaries"
HOMEPAGE_URL "https://mujoco.org" HOMEPAGE_URL "https://mujoco.org"
) )
+2 -2
View File
@@ -35,8 +35,8 @@
#endif #endif
#endif #endif
#define mjVERSION 230 #define mjVERSION 231
#define mjVERSIONSTRING "2.3.0" #define mjVERSIONSTRING "2.3.1"
// names of disable flags // names of disable flags
const char* mjDISABLESTRING[mjNDISABLE] = { const char* mjDISABLESTRING[mjNDISABLE] = {
+1 -1
View File
@@ -155,7 +155,7 @@ TEST_F(JacobianTest, SubtreeJacNoInternalAcc) {
using VersionTest = MujocoTest; using VersionTest = MujocoTest;
const char *const kExpectedVersionString = "2.3.0"; const char *const kExpectedVersionString = "2.3.1";
TEST_F(VersionTest, MjVersion) { TEST_F(VersionTest, MjVersion) {
EXPECT_EQ(mj_version(), mjVERSION_HEADER); EXPECT_EQ(mj_version(), mjVERSION_HEADER);
@@ -37,7 +37,7 @@ public class MujocoBinaryRetriever {
if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/mujoco.dylib") == null) { if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/mujoco.dylib") == null) {
File.Copy( File.Copy(
"/Applications/MuJoCo.app/Contents/Frameworks" + "/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"); mujocoPath + "/mujoco.dylib");
AssetDatabase.Refresh(); AssetDatabase.Refresh();
} }
@@ -45,7 +45,7 @@ public class MujocoBinaryRetriever {
if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/libmujoco.so") == null) { if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/libmujoco.so") == null) {
File.Copy( File.Copy(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + 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"); mujocoPath + "/libmujoco.so");
AssetDatabase.Refresh(); AssetDatabase.Refresh();
} }
+1 -1
View File
@@ -101,7 +101,7 @@ public const int mjMAXLINEPNT = 1000;
public const int mjMAXPLANEGRID = 200; public const int mjMAXPLANEGRID = 200;
public const bool THIRD_PARTY_MUJOCO_MJXMACRO_H_ = true; public const bool THIRD_PARTY_MUJOCO_MJXMACRO_H_ = true;
public const bool THIRD_PARTY_MUJOCO_MUJOCO_H_ = true; public const bool THIRD_PARTY_MUJOCO_MUJOCO_H_ = true;
public const int mjVERSION_HEADER = 230; public const int mjVERSION_HEADER = 231;
// ------------------------------------Enums------------------------------------ // ------------------------------------Enums------------------------------------
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "org.mujoco", "name": "org.mujoco",
"displayName": "MuJoCo", "displayName": "MuJoCo",
"version": "2.3.0", "version": "2.3.1",
"description": "MuJoCo importer and runtime plug-in", "description": "MuJoCo importer and runtime plug-in",
"dependencies": {}, "dependencies": {},
"author": { "author": {