diff --git a/CMakeLists.txt b/CMakeLists.txt index 916fb265d7..e34b07ead0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ set(MSVC_INCREMENTAL_DEFAULT ON) project( mujoco - VERSION 2.3.1 + VERSION 2.3.2 DESCRIPTION "MuJoCo Physics Simulator" HOMEPAGE_URL "https://mujoco.org" ) diff --git a/cmake/CheckAvxSupport.cmake b/cmake/CheckAvxSupport.cmake index ab8ad644e3..52e8b23d86 100644 --- a/cmake/CheckAvxSupport.cmake +++ b/cmake/CheckAvxSupport.cmake @@ -20,6 +20,9 @@ function(get_avx_compile_options OUTPUT_VAR) if(MSVC) set(CMAKE_REQUIRED_FLAGS "/arch:AVX") + elseif(WIN32) + # Abseil LTS 20230125.0 assumes that AVX implies PCLMUL on Windows. + set(CMAKE_REQUIRED_FLAGS "-mavx" "-mpclmul") else() set(CMAKE_REQUIRED_FLAGS "-mavx") endif() diff --git a/cmake/MujocoDependencies.cmake b/cmake/MujocoDependencies.cmake index c61bbc64df..9c12ef7364 100644 --- a/cmake/MujocoDependencies.cmake +++ b/cmake/MujocoDependencies.cmake @@ -23,7 +23,7 @@ set(MUJOCO_DEP_VERSION_lodepng CACHE STRING "Version of `lodepng` to be fetched." ) set(MUJOCO_DEP_VERSION_tinyxml2 - 1dee28e51f9175a31955b9791c74c430fe13dc82 # 9.0.0 + 9a89766acc42ddfa9e7133c7d81a5bda108a0ade CACHE STRING "Version of `tinyxml2` to be fetched." ) set(MUJOCO_DEP_VERSION_tinyobjloader @@ -39,17 +39,17 @@ set(MUJOCO_DEP_VERSION_qhull CACHE STRING "Version of `qhull` to be fetched." ) set(MUJOCO_DEP_VERSION_Eigen3 - 3bb6a48d8c171cf20b5f8e48bfb4e424fbd4f79e + 3460f3558e7b469efb8a225894e21929c8c77629 CACHE STRING "Version of `Eigen3` to be fetched." ) set(MUJOCO_DEP_VERSION_abseil - 8c0b94e793a66495e0b1f34a5eb26bd7dc672db0 # LTS 20220623.1 + 78be63686ba732b25052be15f8d6dee891c05749 # LTS 20230125.0 CACHE STRING "Version of `abseil` to be fetched." ) set(MUJOCO_DEP_VERSION_gtest - 58d77fa8070e8cec2dc1ed015d66b454c8d78850 # release-1.12.1 + b796f7d44681514f58a683a3a71ff17c94edb0c1 # release-1.13.0 CACHE STRING "Version of `gtest` to be fetched." ) diff --git a/cmake/MujocoOptions.cmake b/cmake/MujocoOptions.cmake index 388a69a835..9abbd8d2a1 100644 --- a/cmake/MujocoOptions.cmake +++ b/cmake/MujocoOptions.cmake @@ -95,12 +95,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang -Wno-stringop-overflow -Wno-stringop-truncation ) - elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0") - # Needed for https://github.com/abseil/abseil-cpp/issues/1201, until a new - # version of abseil is released with the fix. - set(EXTRA_COMPILE_OPTIONS "${EXTRA_COMPILE_OPTIONS}" - -Wno-deprecated-builtins - ) endif() endif() diff --git a/dist/mujoco.rc b/dist/mujoco.rc index 9dd205f796..d07955a747 100644 --- a/dist/mujoco.rc +++ b/dist/mujoco.rc @@ -1,6 +1,6 @@ 1 VERSIONINFO -FILEVERSION 2,3,1,0 -PRODUCTVERSION 2,3,1,0 +FILEVERSION 2,3,2,0 +PRODUCTVERSION 2,3,2,0 FILEOS 0x4 FILETYPE 0x1 { @@ -9,9 +9,9 @@ FILETYPE 0x1 BLOCK "040904b0" { VALUE "ProductName", "MuJoCo" - VALUE "ProductVersion", "2.3.1" + VALUE "ProductVersion", "2.3.2" VALUE "FileDescription", "MuJoCo" - VALUE "FileVersion", "2.3.1" + VALUE "FileVersion", "2.3.2" VALUE "InternalName", "mujoco.dll" VALUE "OriginalFilename", "mujoco.dll" VALUE "CompanyName", "DeepMind" diff --git a/dist/simulate.rc b/dist/simulate.rc index 805f6613da..19e31e2cf0 100644 --- a/dist/simulate.rc +++ b/dist/simulate.rc @@ -1,8 +1,8 @@ MUJOCO ICON "mujoco.ico" 1 VERSIONINFO -FILEVERSION 2,3,1,0 -PRODUCTVERSION 2,3,1,0 +FILEVERSION 2,3,2,0 +PRODUCTVERSION 2,3,2,0 FILEOS 0x4 FILETYPE 0x1 { @@ -11,9 +11,9 @@ FILETYPE 0x1 BLOCK "040904b0" { VALUE "ProductName", "MuJoCo" - VALUE "ProductVersion", "2.3.1" + VALUE "ProductVersion", "2.3.2" VALUE "FileDescription", "MuJoCo" - VALUE "FileVersion", "2.3.1" + VALUE "FileVersion", "2.3.2" VALUE "InternalName", "simulate.exe" VALUE "OriginalFilename", "simulate.exe" VALUE "CompanyName", "DeepMind" diff --git a/doc/changelog.rst b/doc/changelog.rst index fbfa48caa8..31211c83c3 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -2,55 +2,55 @@ Changelog ========= -Upcoming version (not yet released) +Version 2.3.2 (February 7, 2023) ----------------------------------- General ^^^^^^^ -- A more performant mju_transposeSparse has been implemented that doesn't require dense memory allocation. - For a constraint Jacobian matrix from the - `humanoid100.xml `_ model, - this function is 35% faster. -- The function :ref:`mj_name2id` is now implemented using a hash function instead of a linear search for better - performance. -- Geom names are now parsed from URDF. Any duplicate names are ignored. -- ``mj_printData`` output now contains contacting geom names. +1. A more performant mju_transposeSparse has been implemented that doesn't require dense memory allocation. + For a constraint Jacobian matrix from the + `humanoid100.xml `_ model, + this function is 35% faster. +#. The function :ref:`mj_name2id` is now implemented using a hash function instead of a linear search for better + performance. +#. Geom names are now parsed from URDF. Any duplicate names are ignored. + ``mj_printData`` output now contains contacting geom names. Bug fixes ^^^^^^^^^ -- Fixed a bug that for :at:`shellinertia` equal to ``true`` caused the mesh orientation to be overwritten by the - principal components of the shell inertia, while the vertex coordinates are rotated using the volumetric inertia. - Now the volumetric inertia orientation is used also in the shell case. -- Fixed misalignment bug in mesh-to-primitive fitting when using the bounding box fitting option :at:`fitaabb`. +4. Fixed a bug that for :at:`shellinertia` equal to ``true`` caused the mesh orientation to be overwritten by the + principal components of the shell inertia, while the vertex coordinates are rotated using the volumetric inertia. + Now the volumetric inertia orientation is used also in the shell case. +#. Fixed misalignment bug in mesh-to-primitive fitting when using the bounding box fitting option :at:`fitaabb`. .. image:: images/changelog/meshfit.png :align: right :width: 300px -- The ``launch_repl`` functionality in the Python viewer has been fixed. -- Set ``time`` correctly in ``mjd_transitionFD``, to support time-dependent user code. -- Fixed sensor data dimension validation when ``user`` type sensors are present. -- Fixed incorrect plugin error message when a null ``nsensordata`` callback is encountered during model compilation. -- Correctly end the timer (``TM_END``) ``mj_fwdConstraint`` returns early. -- Fixed an infinite loop in ``mj_deleteFileVFS``. +#. The ``launch_repl`` functionality in the Python viewer has been fixed. +#. Set ``time`` correctly in ``mjd_transitionFD``, to support time-dependent user code. +#. Fixed sensor data dimension validation when ``user`` type sensors are present. +#. Fixed incorrect plugin error message when a null ``nsensordata`` callback is encountered during model compilation. +#. Correctly end the timer (``TM_END``) ``mj_fwdConstraint`` returns early. +#. Fixed an infinite loop in ``mj_deleteFileVFS``. Simulate ^^^^^^^^ -- Increased precision of simulate sensor plot y-axis by 1 digit - (`#719 `_). -- Body labels are now drawn at the body frame rather than inertial frame, unless inertia is being visualised. +12. Increased precision of simulate sensor plot y-axis by 1 digit + (`#719 `_). +#. Body labels are now drawn at the body frame rather than inertial frame, unless inertia is being visualised. Plugins ^^^^^^^ -- The ``reset`` callback now receives instance-specific ``plugin_state`` and ``plugin_data`` as arguments, rather than - the entire ``mjData``. Since ``reset`` is called inside ``mj_resetData`` before any physics forwarding call has been - made, it is an error to read anything from ``mjData`` at this stage. -- The ``capabilities`` field in ``mjpPlugin`` is renamed ``capabilityflags`` to more clearly indicate that this is a - bit field. +14. The ``reset`` callback now receives instance-specific ``plugin_state`` and ``plugin_data`` as arguments, rather than + the entire ``mjData``. Since ``reset`` is called inside ``mj_resetData`` before any physics forwarding call has been + made, it is an error to read anything from ``mjData`` at this stage. +#. The ``capabilities`` field in ``mjpPlugin`` is renamed ``capabilityflags`` to more clearly indicate that this is a + bit field. Version 2.3.1 (December 6, 2022) diff --git a/doc/unity.rst b/doc/unity.rst index 761b642b18..8d8aa3f393 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.1.dylib`` (it can be +``/Applications/MuJoCo.app/Contents/Frameworks/mujoco.framework/Versions/Current/libmujoco.2.3.2.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.1/lib/libmujoco.so.2.3.1`` and rename it as ``libmujoco.so``. +``~/.mujoco/mujoco-2.3.2/lib/libmujoco.so.2.3.2`` and rename it as ``libmujoco.so``. Windows _______ diff --git a/include/mujoco/mujoco.h b/include/mujoco/mujoco.h index a6ef36b7b1..a1864c66e1 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 231 +#define mjVERSION_HEADER 232 // needed to define size_t, fabs and log10 #include diff --git a/python/mujoco/CMakeLists.txt b/python/mujoco/CMakeLists.txt index f2b706b557..9160f4ccb8 100644 --- a/python/mujoco/CMakeLists.txt +++ b/python/mujoco/CMakeLists.txt @@ -46,12 +46,6 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Cl add_compile_options(-fdata-sections -ffunction-sections) endif() -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0") - # Needed for https://github.com/abseil/abseil-cpp/issues/1201, until a new - # version of abseil is released with the fix. - add_compile_options(-Wno-deprecated-builtins) -endif() - include(MujocoLinkOptions) get_mujoco_extra_link_options(EXTRA_LINK_OPTIONS) add_link_options(${EXTRA_LINK_OPTIONS}) @@ -81,13 +75,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.1.dylib) + set(MUJOCO_LIBRARY ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.2.3.2.dylib) target_compile_options(mujoco INTERFACE -F${MUJOCO_FRAMEWORK}) endif() endif() if(NOT MUJOCO_FRAMEWORK) - find_library(MUJOCO_LIBRARY mujoco mujoco.2.3.1 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED) + find_library(MUJOCO_LIBRARY mujoco mujoco.2.3.2 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}") @@ -134,7 +128,7 @@ findorfetch( GIT_REPO https://github.com/abseil/abseil-cpp GIT_TAG - 8c0b94e793a66495e0b1f34a5eb26bd7dc672db0 # LTS 20220623.1 + 78be63686ba732b25052be15f8d6dee891c05749 # LTS 20230125 TARGETS ${MUJOCO_PYTHON_ABSL_TARGETS} EXCLUDE_FROM_ALL @@ -167,7 +161,7 @@ findorfetch( GIT_REPO https://gitlab.com/libeigen/eigen GIT_TAG - 3bb6a48d8c171cf20b5f8e48bfb4e424fbd4f79e + 3460f3558e7b469efb8a225894e21929c8c77629 TARGETS Eigen3::Eigen EXCLUDE_FROM_ALL @@ -184,7 +178,7 @@ findorfetch( GIT_REPO https://github.com/pybind/pybind11 GIT_TAG - 33fb7a6bd849653445b6ae37a8c274d3de9519cc + 8ece7d641ca6ce316e59fec6744b8517073bbe32 TARGETS pybind11::pybind11_headers EXCLUDE_FROM_ALL diff --git a/python/setup.py b/python/setup.py index 0cccb764b8..610b85816d 100644 --- a/python/setup.py +++ b/python/setup.py @@ -30,7 +30,7 @@ from setuptools import setup from setuptools.command import build_ext -__version__ = '2.3.1.post1' +__version__ = '2.3.2' MUJOCO_CMAKE = 'MUJOCO_CMAKE' MUJOCO_CMAKE_ARGS = 'MUJOCO_CMAKE_ARGS' diff --git a/sample/CMakeLists.txt b/sample/CMakeLists.txt index f21e597f8b..0f04853b8e 100644 --- a/sample/CMakeLists.txt +++ b/sample/CMakeLists.txt @@ -24,7 +24,7 @@ set(MSVC_INCREMENTAL_DEFAULT ON) project( mujoco_samples - VERSION 2.3.1 + VERSION 2.3.2 DESCRIPTION "MuJoCo samples binaries" HOMEPAGE_URL "https://mujoco.org" ) diff --git a/sample/cmake/CheckAvxSupport.cmake b/sample/cmake/CheckAvxSupport.cmake index ab8ad644e3..52e8b23d86 100644 --- a/sample/cmake/CheckAvxSupport.cmake +++ b/sample/cmake/CheckAvxSupport.cmake @@ -20,6 +20,9 @@ function(get_avx_compile_options OUTPUT_VAR) if(MSVC) set(CMAKE_REQUIRED_FLAGS "/arch:AVX") + elseif(WIN32) + # Abseil LTS 20230125.0 assumes that AVX implies PCLMUL on Windows. + set(CMAKE_REQUIRED_FLAGS "-mavx" "-mpclmul") else() set(CMAKE_REQUIRED_FLAGS "-mavx") endif() diff --git a/sample/cmake/SampleOptions.cmake b/sample/cmake/SampleOptions.cmake index 388a69a835..9abbd8d2a1 100644 --- a/sample/cmake/SampleOptions.cmake +++ b/sample/cmake/SampleOptions.cmake @@ -95,12 +95,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang -Wno-stringop-overflow -Wno-stringop-truncation ) - elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0") - # Needed for https://github.com/abseil/abseil-cpp/issues/1201, until a new - # version of abseil is released with the fix. - set(EXTRA_COMPILE_OPTIONS "${EXTRA_COMPILE_OPTIONS}" - -Wno-deprecated-builtins - ) endif() endif() diff --git a/simulate/CMakeLists.txt b/simulate/CMakeLists.txt index a39c6226cb..c120a1f0a7 100644 --- a/simulate/CMakeLists.txt +++ b/simulate/CMakeLists.txt @@ -29,7 +29,7 @@ set(MUJOCO_DEP_VERSION_lodepng project( mujoco_simulate - VERSION 2.3.1 + VERSION 2.3.2 DESCRIPTION "MuJoCo simulate binaries" HOMEPAGE_URL "https://mujoco.org" ) diff --git a/simulate/cmake/CheckAvxSupport.cmake b/simulate/cmake/CheckAvxSupport.cmake index ab8ad644e3..52e8b23d86 100644 --- a/simulate/cmake/CheckAvxSupport.cmake +++ b/simulate/cmake/CheckAvxSupport.cmake @@ -20,6 +20,9 @@ function(get_avx_compile_options OUTPUT_VAR) if(MSVC) set(CMAKE_REQUIRED_FLAGS "/arch:AVX") + elseif(WIN32) + # Abseil LTS 20230125.0 assumes that AVX implies PCLMUL on Windows. + set(CMAKE_REQUIRED_FLAGS "-mavx" "-mpclmul") else() set(CMAKE_REQUIRED_FLAGS "-mavx") endif() diff --git a/simulate/cmake/SimulateOptions.cmake b/simulate/cmake/SimulateOptions.cmake index 388a69a835..9abbd8d2a1 100644 --- a/simulate/cmake/SimulateOptions.cmake +++ b/simulate/cmake/SimulateOptions.cmake @@ -95,12 +95,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang -Wno-stringop-overflow -Wno-stringop-truncation ) - elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "15.0.0") - # Needed for https://github.com/abseil/abseil-cpp/issues/1201, until a new - # version of abseil is released with the fix. - set(EXTRA_COMPILE_OPTIONS "${EXTRA_COMPILE_OPTIONS}" - -Wno-deprecated-builtins - ) endif() endif() diff --git a/src/engine/engine_support.c b/src/engine/engine_support.c index ffff9dd45f..e794116dde 100644 --- a/src/engine/engine_support.c +++ b/src/engine/engine_support.c @@ -36,8 +36,8 @@ #endif #endif -#define mjVERSION 231 -#define mjVERSIONSTRING "2.3.1" +#define mjVERSION 232 +#define mjVERSIONSTRING "2.3.2" // names of disable flags const char* mjDISABLESTRING[mjNDISABLE] = { diff --git a/unity/Editor/Bindings/MujocoBinaryRetriever.cs b/unity/Editor/Bindings/MujocoBinaryRetriever.cs index c86b43f08a..cf1c904c20 100644 --- a/unity/Editor/Bindings/MujocoBinaryRetriever.cs +++ b/unity/Editor/Bindings/MujocoBinaryRetriever.cs @@ -37,7 +37,7 @@ static void RegisteredPackagesEventHandler( if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/mujoco.dylib") == null) { File.Copy( "/Applications/MuJoCo.app/Contents/Frameworks" + - "/mujoco.framework/Versions/Current/libmujoco.2.3.1.dylib", + "/mujoco.framework/Versions/Current/libmujoco.2.3.2.dylib", mujocoPath + "/mujoco.dylib"); AssetDatabase.Refresh(); } @@ -45,7 +45,7 @@ static void RegisteredPackagesEventHandler( if (AssetDatabase.LoadMainAssetAtPath(mujocoPath + "/libmujoco.so") == null) { File.Copy( Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + - "/.mujoco/mujoco-2.3.1/lib/libmujoco.so.2.3.1", + "/.mujoco/mujoco-2.3.2/lib/libmujoco.so.2.3.2", mujocoPath + "/libmujoco.so"); AssetDatabase.Refresh(); } diff --git a/unity/Runtime/Bindings/MjBindings.cs b/unity/Runtime/Bindings/MjBindings.cs index 8a563066bf..0539c1ec77 100644 --- a/unity/Runtime/Bindings/MjBindings.cs +++ b/unity/Runtime/Bindings/MjBindings.cs @@ -101,7 +101,7 @@ public static class MujocoLib { 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 = 231; +public const int mjVERSION_HEADER = 232; // ------------------------------------Enums------------------------------------ diff --git a/unity/package.json b/unity/package.json index d5ba3dc383..21832ea910 100644 --- a/unity/package.json +++ b/unity/package.json @@ -1,7 +1,7 @@ { "name": "org.mujoco", "displayName": "MuJoCo", - "version": "2.3.1", + "version": "2.3.2", "description": "MuJoCo importer and runtime plug-in", "dependencies": {}, "author": {