mujoco 3.7.0__tar.gz → 3.8.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. {mujoco-3.7.0/mujoco.egg-info → mujoco-3.8.0}/PKG-INFO +4 -3
  2. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/CMakeLists.txt +3 -3
  3. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/bindings_test.py +8 -4
  4. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/MujocoOptions.cmake +5 -1
  5. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/enum_traits.h +1 -1
  6. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/function_traits.h +33 -0
  7. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/functions.cc +1 -0
  8. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/enums.py +4 -4
  9. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/enums_test.py +2 -3
  10. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/functions.py +72 -0
  11. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/structs.py +43 -1
  12. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/mjpython/Info.plist +4 -4
  13. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/CMakeLists.txt +1 -1
  14. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/SimulateOptions.cmake +5 -1
  15. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/simulate.cc +2 -2
  16. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/specs.cc.inc +670 -653
  17. {mujoco-3.7.0 → mujoco-3.8.0/mujoco.egg-info}/PKG-INFO +4 -3
  18. {mujoco-3.7.0 → mujoco-3.8.0}/pyproject.toml +4 -3
  19. {mujoco-3.7.0 → mujoco-3.8.0}/LICENSE +0 -0
  20. {mujoco-3.7.0 → mujoco-3.8.0}/LICENSES_THIRD_PARTY.md +0 -0
  21. {mujoco-3.7.0 → mujoco-3.8.0}/MANIFEST.in +0 -0
  22. {mujoco-3.7.0 → mujoco-3.8.0}/README.md +0 -0
  23. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/__init__.py +0 -0
  24. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/callbacks.cc +0 -0
  25. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cgl/__init__.py +0 -0
  26. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cgl/cgl.py +0 -0
  27. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/CheckAvxSupport.cmake +0 -0
  28. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/FindOrFetch.cmake +0 -0
  29. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/MujocoDependencies.cmake +0 -0
  30. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/MujocoHarden.cmake +0 -0
  31. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/MujocoLinkOptions.cmake +0 -0
  32. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/MujocoMacOS.cmake +0 -0
  33. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/ShellTests.cmake +0 -0
  34. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/cmake/TargetAddRpath.cmake +0 -0
  35. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/constants.cc +0 -0
  36. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/egl/__init__.py +0 -0
  37. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/egl/egl_ext.py +0 -0
  38. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/enums.cc +0 -0
  39. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/errors.cc +0 -0
  40. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/errors.h +0 -0
  41. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/functions.h +0 -0
  42. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/gl_context.py +0 -0
  43. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/glfw/__init__.py +0 -0
  44. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/indexer_xmacro.h +0 -0
  45. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/indexers.cc +0 -0
  46. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/indexers.h +0 -0
  47. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/__init__.py +0 -0
  48. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/ast_nodes.py +0 -0
  49. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/ast_nodes_test.py +0 -0
  50. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/codegen/formatter.py +0 -0
  51. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/codegen/generate_enums.py +0 -0
  52. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/codegen/generate_functions.py +0 -0
  53. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/codegen/generate_structs.py +0 -0
  54. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/functions_test.py +0 -0
  55. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/mjxmacro.py +0 -0
  56. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/structs_test.py +0 -0
  57. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/type_parsing.py +0 -0
  58. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/introspect/type_parsing_test.py +0 -0
  59. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/memory_leak_test.py +0 -0
  60. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/minimize.py +0 -0
  61. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/minimize_test.py +0 -0
  62. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/mjpython/mjpython.icns +0 -0
  63. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/mjpython/mjpython.mm +0 -0
  64. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/mjpython/mjpython.py +0 -0
  65. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/msh2obj.py +0 -0
  66. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/msh2obj_test.py +0 -0
  67. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/osmesa/__init__.py +0 -0
  68. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/private.h +0 -0
  69. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/raw.h +0 -0
  70. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/render.cc +0 -0
  71. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/render_test.py +0 -0
  72. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/renderer.py +0 -0
  73. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/renderer_test.py +0 -0
  74. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/rendering/classic/__init__.py +0 -0
  75. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/rendering/classic/gl_context.py +0 -0
  76. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/rendering/classic/renderer.py +0 -0
  77. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/rollout.cc +0 -0
  78. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/rollout.py +0 -0
  79. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/rollout_test.py +0 -0
  80. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/serialization.h +0 -0
  81. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/array_safety.h +0 -0
  82. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/CheckAvxSupport.cmake +0 -0
  83. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/FindOrFetch.cmake +0 -0
  84. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/MujocoHarden.cmake +0 -0
  85. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/MujocoLinkOptions.cmake +0 -0
  86. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/MujocoMacOS.cmake +0 -0
  87. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/cmake/SimulateDependencies.cmake +0 -0
  88. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/glfw_adapter.cc +0 -0
  89. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/glfw_adapter.h +0 -0
  90. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/glfw_corevideo.h +0 -0
  91. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/glfw_corevideo.mm +0 -0
  92. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/glfw_dispatch.cc +0 -0
  93. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/glfw_dispatch.h +0 -0
  94. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/macos_gui.mm +0 -0
  95. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/main.cc +0 -0
  96. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/platform_ui_adapter.cc +0 -0
  97. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/platform_ui_adapter.h +0 -0
  98. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate/simulate.h +0 -0
  99. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/simulate.cc +0 -0
  100. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/specs.cc +0 -0
  101. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/specs_test.py +0 -0
  102. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/specs_wrapper.cc +0 -0
  103. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/specs_wrapper.h +0 -0
  104. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/structs.cc +0 -0
  105. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/structs.h +0 -0
  106. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/structs_wrappers.cc +0 -0
  107. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/__init__.py +0 -0
  108. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/__init__.py +0 -0
  109. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/io.py +0 -0
  110. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/model_modifier.py +0 -0
  111. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/optimize.py +0 -0
  112. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/parameter.py +0 -0
  113. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/plotting.py +0 -0
  114. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/residual.py +0 -0
  115. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/signal_modifier.py +0 -0
  116. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/signal_transform.py +0 -0
  117. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/timeseries.py +0 -0
  118. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/_src/trajectory.py +0 -0
  119. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/py.typed +0 -0
  120. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/builder.py +0 -0
  121. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/defaults.py +0 -0
  122. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/__init__.py +0 -0
  123. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/base.py +0 -0
  124. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/covariance.py +0 -0
  125. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/group.py +0 -0
  126. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/insights.py +0 -0
  127. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/optimization_trace.py +0 -0
  128. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/parameter_distribution.py +0 -0
  129. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/parameters.py +0 -0
  130. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/row.py +0 -0
  131. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/signals.py +0 -0
  132. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/sections/video.py +0 -0
  133. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/covariance.html +0 -0
  134. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/group.html +0 -0
  135. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/insights.html +0 -0
  136. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/layout.html +0 -0
  137. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/optimization_trace.html +0 -0
  138. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/parameter_confidence.html +0 -0
  139. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/parameters_table.html +0 -0
  140. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/plot_generic.html +0 -0
  141. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/row.html +0 -0
  142. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/signals.html +0 -0
  143. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/templates/video.html +0 -0
  144. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/report/utils.py +0 -0
  145. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/__init__.py +0 -0
  146. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/conftest.py +0 -0
  147. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/test_integration.py +0 -0
  148. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/test_model_modifier.py +0 -0
  149. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/test_parameter.py +0 -0
  150. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/test_signal.py +0 -0
  151. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/test_timeseries.py +0 -0
  152. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/sysid/tests/test_trajectory.py +0 -0
  153. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/MJCF_NoRoot.zip +0 -0
  154. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/MJCF_Root.zip +0 -0
  155. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/abdomen_1_body.msh +0 -0
  156. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/model.urdf +0 -0
  157. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/model.xml +0 -0
  158. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/msh.xml +0 -0
  159. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/simple_usd_preview_surface.usda +0 -0
  160. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/testdata/usd_golden.usda +0 -0
  161. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/threadpool.cc +0 -0
  162. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/threadpool.h +0 -0
  163. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/camera.py +0 -0
  164. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/demo.py +0 -0
  165. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/exporter.py +0 -0
  166. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/exporter_test.py +0 -0
  167. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/lights.py +0 -0
  168. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/objects.py +0 -0
  169. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/shapes.py +0 -0
  170. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/usd/utils.py +0 -0
  171. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/CMakeLists.txt +0 -0
  172. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/array_traits.h +0 -0
  173. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/array_traits_test.cc +0 -0
  174. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/crossplatform.h +0 -0
  175. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/func_traits.h +0 -0
  176. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/func_traits_test.cc +0 -0
  177. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/func_wrap.h +0 -0
  178. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/func_wrap_test.cc +0 -0
  179. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/tuple_tools.h +0 -0
  180. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/util/tuple_tools_test.cc +0 -0
  181. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/viewer.py +0 -0
  182. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco/viewer_test.py +0 -0
  183. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco.egg-info/SOURCES.txt +0 -0
  184. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco.egg-info/dependency_links.txt +0 -0
  185. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco.egg-info/requires.txt +0 -0
  186. {mujoco-3.7.0 → mujoco-3.8.0}/mujoco.egg-info/top_level.txt +0 -0
  187. {mujoco-3.7.0 → mujoco-3.8.0}/setup.cfg +0 -0
  188. {mujoco-3.7.0 → mujoco-3.8.0}/setup.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mujoco
3
- Version: 3.7.0
3
+ Version: 3.8.0
4
4
  Summary: MuJoCo Physics Simulator
5
5
  Author-email: Google DeepMind <mujoco@deepmind.com>
6
6
  License-Expression: Apache-2.0
7
7
  Project-URL: Homepage, https://github.com/google-deepmind/mujoco
8
- Project-URL: Documentation, https://mujoco.readthedocs.io/en/3.7.0
8
+ Project-URL: Documentation, https://mujoco.readthedocs.io/en/3.8.0
9
9
  Project-URL: Repository, https://github.com/google-deepmind/mujoco
10
- Project-URL: Changelog, https://mujoco.readthedocs.io/en/3.7.0/changelog.html
10
+ Project-URL: Changelog, https://mujoco.readthedocs.io/en/3.8.0/changelog.html
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Intended Audience :: Science/Research
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
20
21
  Classifier: Topic :: Scientific/Engineering
21
22
  Requires-Python: >=3.10
22
23
  Description-Content-Type: text/markdown
@@ -86,7 +86,7 @@ if(NOT TARGET mujoco)
86
86
  if(MUJOCO_FRAMEWORK)
87
87
  message("MuJoCo framework is at ${MUJOCO_FRAMEWORK}/mujoco.framework")
88
88
  set(MUJOCO_LIBRARY
89
- ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.3.7.0.dylib
89
+ ${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.3.8.0.dylib
90
90
  )
91
91
  target_compile_options(mujoco INTERFACE -F${MUJOCO_FRAMEWORK})
92
92
  endif()
@@ -94,7 +94,7 @@ if(NOT TARGET mujoco)
94
94
 
95
95
  if(NOT MUJOCO_FRAMEWORK)
96
96
  find_library(
97
- MUJOCO_LIBRARY mujoco mujoco.3.7.0 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED
97
+ MUJOCO_LIBRARY mujoco mujoco.3.8.0 HINTS ${MUJOCO_LIBRARY_DIR} REQUIRED
98
98
  )
99
99
  find_path(MUJOCO_INCLUDE mujoco/mujoco.h HINTS ${MUJOCO_INCLUDE_DIR} REQUIRED)
100
100
  message("MuJoCo is at ${MUJOCO_LIBRARY}")
@@ -193,7 +193,7 @@ findorfetch(
193
193
  GIT_REPO
194
194
  https://github.com/pybind/pybind11
195
195
  GIT_TAG
196
- d0f1a2168f3335426f544171a3463c36edbd5cc3 # v3.0.3
196
+ c7fb32eea8c92bebeea9f0735041a72aa20c75f5 # v3.0.4
197
197
  TARGETS
198
198
  pybind11::pybind11_headers
199
199
  EXCLUDE_FROM_ALL
@@ -966,7 +966,7 @@ Euler integrator, semi-implicit in velocity.
966
966
  self.assertEqual(mujoco.mjtEnableBit.mjENBL_OVERRIDE, 1 << 0)
967
967
  self.assertEqual(mujoco.mjtEnableBit.mjENBL_ENERGY, 1 << 1)
968
968
  self.assertEqual(mujoco.mjtEnableBit.mjENBL_FWDINV, 1 << 2)
969
- self.assertEqual(mujoco.mjtEnableBit.mjNENABLE, 6)
969
+ self.assertEqual(mujoco.mjtEnableBit.mjNENABLE, 5)
970
970
  self.assertEqual(mujoco.mjtGeom.mjGEOM_PLANE, 0)
971
971
  self.assertEqual(mujoco.mjtGeom.mjGEOM_HFIELD, 1)
972
972
  self.assertEqual(mujoco.mjtGeom.mjGEOM_SPHERE, 2)
@@ -1216,13 +1216,15 @@ Euler integrator, semi-implicit in velocity.
1216
1216
  mujoco.set_mjcb_control(lambda m, d: None)
1217
1217
  mujoco.mj_step(model_instances[-1], data_instances[-1])
1218
1218
  mujoco.set_mjcb_control(None)
1219
+ # Reference counting changed in Python 3.14.
1220
+ expected_refcount = 2 if sys.version_info < (3, 14) else 1
1219
1221
  while data_instances:
1220
1222
  d = data_instances.pop()
1221
- self.assertEqual(sys.getrefcount(d), 2)
1223
+ self.assertEqual(sys.getrefcount(d), expected_refcount)
1222
1224
  del d
1223
1225
  while model_instances:
1224
1226
  m = model_instances.pop()
1225
- self.assertEqual(sys.getrefcount(m), 2)
1227
+ self.assertEqual(sys.getrefcount(m), expected_refcount)
1226
1228
 
1227
1229
  # This test is disabled on PyPy as it uses sys.getrefcount
1228
1230
  # However PyPy is not officially supported by MuJoCo
@@ -1236,7 +1238,9 @@ Euler integrator, semi-implicit in velocity.
1236
1238
  # passed to getrefcount.
1237
1239
  self.assertEqual(sys.getrefcount(data.model), 3)
1238
1240
  del data
1239
- self.assertEqual(sys.getrefcount(model), 2)
1241
+ # Reference counting changed in Python 3.14.
1242
+ expected_refcount = 2 if sys.version_info < (3, 14) else 1
1243
+ self.assertEqual(sys.getrefcount(model), expected_refcount)
1240
1244
 
1241
1245
  def test_can_initialize_mjv_structs(self):
1242
1246
  self.assertIsInstance(mujoco.MjvScene(), mujoco.MjvScene)
@@ -18,7 +18,11 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
18
18
  set(CMAKE_CXX_STANDARD 20)
19
19
  set(CMAKE_CXX_STANDARD_REQUIRED ON)
20
20
  set(CMAKE_CXX_EXTENSIONS OFF)
21
- set(CMAKE_C_EXTENSIONS OFF)
21
+ if(EMSCRIPTEN)
22
+ set(CMAKE_C_EXTENSIONS ON)
23
+ else()
24
+ set(CMAKE_C_EXTENSIONS OFF)
25
+ endif()
22
26
  set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # For LLVM tooling
23
27
 
24
28
  if(NOT CMAKE_CONFIGURATION_TYPES)
@@ -46,6 +46,7 @@ struct mjtDisableBit {
46
46
  std::make_pair("mjDSBL_AUTORESET", ::mjtDisableBit::mjDSBL_AUTORESET),
47
47
  std::make_pair("mjDSBL_NATIVECCD", ::mjtDisableBit::mjDSBL_NATIVECCD),
48
48
  std::make_pair("mjDSBL_ISLAND", ::mjtDisableBit::mjDSBL_ISLAND),
49
+ std::make_pair("mjDSBL_MULTICCD", ::mjtDisableBit::mjDSBL_MULTICCD),
49
50
  std::make_pair("mjNDISABLE", ::mjtDisableBit::mjNDISABLE)};
50
51
  };
51
52
 
@@ -57,7 +58,6 @@ struct mjtEnableBit {
57
58
  std::make_pair("mjENBL_ENERGY", ::mjtEnableBit::mjENBL_ENERGY),
58
59
  std::make_pair("mjENBL_FWDINV", ::mjtEnableBit::mjENBL_FWDINV),
59
60
  std::make_pair("mjENBL_INVDISCRETE", ::mjtEnableBit::mjENBL_INVDISCRETE),
60
- std::make_pair("mjENBL_MULTICCD", ::mjtEnableBit::mjENBL_MULTICCD),
61
61
  std::make_pair("mjENBL_SLEEP", ::mjtEnableBit::mjENBL_SLEEP),
62
62
  std::make_pair("mjNENABLE", ::mjtEnableBit::mjNENABLE)};
63
63
  };
@@ -88,6 +88,28 @@ struct mj_deleteFileVFS {
88
88
  }
89
89
  };
90
90
 
91
+ struct mj_containsBufferVFS {
92
+ static constexpr char name[] = "mj_containsBufferVFS";
93
+ static constexpr char doc[] = "Check if buffer exists in VFS; return 1: exists, 0: not found.";
94
+ using type = int (mjVFS *, const char *);
95
+ static constexpr auto param_names = std::make_tuple("vfs", "name");
96
+
97
+ MUJOCO_ALWAYS_INLINE static type& GetFunc() {
98
+ return ::mj_containsBufferVFS;
99
+ }
100
+ };
101
+
102
+ struct mj_containsFileVFS {
103
+ static constexpr char name[] = "mj_containsFileVFS";
104
+ static constexpr char doc[] = "Check if file exists in VFS; return 1: exists, 0: not found.";
105
+ using type = int (mjVFS *, const char *, const char *);
106
+ static constexpr auto param_names = std::make_tuple("vfs", "directory", "filename");
107
+
108
+ MUJOCO_ALWAYS_INLINE static type& GetFunc() {
109
+ return ::mj_containsFileVFS;
110
+ }
111
+ };
112
+
91
113
  struct mj_deleteVFS {
92
114
  static constexpr char name[] = "mj_deleteVFS";
93
115
  static constexpr char doc[] = "Delete all files from VFS and deallocates VFS internal memory.";
@@ -1210,6 +1232,17 @@ struct mj_rnePostConstraint {
1210
1232
  }
1211
1233
  };
1212
1234
 
1235
+ struct mj_maxContact {
1236
+ static constexpr char name[] = "mj_maxContact";
1237
+ static constexpr char doc[] = "Return the maximum number of contacts that can be generated between two geoms. If has_margin is -1, then the margin is pulled from the model, otherwise if has_margin > 0 indicates that the geoms have a positive margin.";
1238
+ using type = int (const mjModel *, int, int, int);
1239
+ static constexpr auto param_names = std::make_tuple("m", "g1", "g2", "has_margin");
1240
+
1241
+ MUJOCO_ALWAYS_INLINE static type& GetFunc() {
1242
+ return ::mj_maxContact;
1243
+ }
1244
+ };
1245
+
1213
1246
  struct mj_collision {
1214
1247
  static constexpr char name[] = "mj_collision";
1215
1248
  static constexpr char doc[] = "Run collision detection.";
@@ -304,6 +304,7 @@ PYBIND11_MODULE(_functions, pymodule) {
304
304
  m, d, flg_acc, result.data());
305
305
  });
306
306
  Def<traits::mj_rnePostConstraint>(pymodule);
307
+ Def<traits::mj_maxContact>(pymodule);
307
308
  Def<traits::mj_collision>(pymodule);
308
309
  Def<traits::mj_makeConstraint>(pymodule);
309
310
  Def<traits::mj_island>(pymodule);
@@ -46,7 +46,8 @@ ENUMS: Mapping[str, EnumDecl] = dict([
46
46
  ('mjDSBL_AUTORESET', 65536),
47
47
  ('mjDSBL_NATIVECCD', 131072),
48
48
  ('mjDSBL_ISLAND', 262144),
49
- ('mjNDISABLE', 19),
49
+ ('mjDSBL_MULTICCD', 524288),
50
+ ('mjNDISABLE', 20),
50
51
  ]),
51
52
  )),
52
53
  ('mjtEnableBit',
@@ -58,9 +59,8 @@ ENUMS: Mapping[str, EnumDecl] = dict([
58
59
  ('mjENBL_ENERGY', 2),
59
60
  ('mjENBL_FWDINV', 4),
60
61
  ('mjENBL_INVDISCRETE', 8),
61
- ('mjENBL_MULTICCD', 16),
62
- ('mjENBL_SLEEP', 32),
63
- ('mjNENABLE', 6),
62
+ ('mjENBL_SLEEP', 16),
63
+ ('mjNENABLE', 5),
64
64
  ]),
65
65
  )),
66
66
  ('mjtJoint',
@@ -42,9 +42,8 @@ class EnumsTest(absltest.TestCase):
42
42
  ('mjENBL_ENERGY', 1<<1),
43
43
  ('mjENBL_FWDINV', 1<<2),
44
44
  ('mjENBL_INVDISCRETE', 1<<3),
45
- ('mjENBL_MULTICCD', 1<<4),
46
- ('mjENBL_SLEEP', 1<<5),
47
- ('mjNENABLE', 6)))
45
+ ('mjENBL_SLEEP', 1<<4),
46
+ ('mjNENABLE', 5)))
48
47
 
49
48
  # values mostly increment by one with occasional overrides
50
49
  def test_mjtGeom(self): # pylint: disable=invalid-name
@@ -162,6 +162,52 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
162
162
  ),
163
163
  doc='Delete file from VFS; return 0: success, -1: not found in VFS.',
164
164
  )),
165
+ ('mj_containsBufferVFS',
166
+ FunctionDecl(
167
+ name='mj_containsBufferVFS',
168
+ return_type=ValueType(name='int'),
169
+ parameters=(
170
+ FunctionParameterDecl(
171
+ name='vfs',
172
+ type=PointerType(
173
+ inner_type=ValueType(name='mjVFS'),
174
+ ),
175
+ ),
176
+ FunctionParameterDecl(
177
+ name='name',
178
+ type=PointerType(
179
+ inner_type=ValueType(name='char', is_const=True),
180
+ ),
181
+ ),
182
+ ),
183
+ doc='Check if buffer exists in VFS; return 1: exists, 0: not found.',
184
+ )),
185
+ ('mj_containsFileVFS',
186
+ FunctionDecl(
187
+ name='mj_containsFileVFS',
188
+ return_type=ValueType(name='int'),
189
+ parameters=(
190
+ FunctionParameterDecl(
191
+ name='vfs',
192
+ type=PointerType(
193
+ inner_type=ValueType(name='mjVFS'),
194
+ ),
195
+ ),
196
+ FunctionParameterDecl(
197
+ name='directory',
198
+ type=PointerType(
199
+ inner_type=ValueType(name='char', is_const=True),
200
+ ),
201
+ ),
202
+ FunctionParameterDecl(
203
+ name='filename',
204
+ type=PointerType(
205
+ inner_type=ValueType(name='char', is_const=True),
206
+ ),
207
+ ),
208
+ ),
209
+ doc='Check if file exists in VFS; return 1: exists, 0: not found.',
210
+ )),
165
211
  ('mj_deleteVFS',
166
212
  FunctionDecl(
167
213
  name='mj_deleteVFS',
@@ -2407,6 +2453,32 @@ FUNCTIONS: Mapping[str, FunctionDecl] = dict([
2407
2453
  ),
2408
2454
  doc='RNE with complete data: compute cacc, cfrc_ext, cfrc_int.',
2409
2455
  )),
2456
+ ('mj_maxContact',
2457
+ FunctionDecl(
2458
+ name='mj_maxContact',
2459
+ return_type=ValueType(name='int'),
2460
+ parameters=(
2461
+ FunctionParameterDecl(
2462
+ name='m',
2463
+ type=PointerType(
2464
+ inner_type=ValueType(name='mjModel', is_const=True),
2465
+ ),
2466
+ ),
2467
+ FunctionParameterDecl(
2468
+ name='g1',
2469
+ type=ValueType(name='int'),
2470
+ ),
2471
+ FunctionParameterDecl(
2472
+ name='g2',
2473
+ type=ValueType(name='int'),
2474
+ ),
2475
+ FunctionParameterDecl(
2476
+ name='has_margin',
2477
+ type=ValueType(name='int'),
2478
+ ),
2479
+ ),
2480
+ doc='Return the maximum number of contacts that can be generated between two geoms. If has_margin is -1, then the margin is pulled from the model, otherwise if has_margin > 0 indicates that the geoms have a positive margin.', # pylint: disable=line-too-long
2481
+ )),
2410
2482
  ('mj_collision',
2411
2483
  FunctionDecl(
2412
2484
  name='mj_collision',
@@ -972,6 +972,11 @@ STRUCTS: Mapping[str, StructDecl] = dict([
972
972
  type=ValueType(name='mjtSize'),
973
973
  doc='number of element vertex ids in all flexes',
974
974
  ),
975
+ StructFieldDecl(
976
+ name='nflexstiffness',
977
+ type=ValueType(name='mjtSize'),
978
+ doc='number of stiffness parameters in all flexes',
979
+ ),
975
980
  StructFieldDecl(
976
981
  name='nflexelemedge',
977
982
  type=ValueType(name='mjtSize'),
@@ -2663,6 +2668,22 @@ STRUCTS: Mapping[str, StructDecl] = dict([
2663
2668
  doc='interpolation (0: vertex, 1: nodes)',
2664
2669
  array_extent=('nflex',),
2665
2670
  ),
2671
+ StructFieldDecl(
2672
+ name='flex_bandwidth',
2673
+ type=PointerType(
2674
+ inner_type=ValueType(name='int'),
2675
+ ),
2676
+ doc='precomputed solver bandwidth',
2677
+ array_extent=('nflex',),
2678
+ ),
2679
+ StructFieldDecl(
2680
+ name='flex_cellnum',
2681
+ type=PointerType(
2682
+ inner_type=ValueType(name='int'),
2683
+ ),
2684
+ doc='finite cell num per dimension',
2685
+ array_extent=('nflex', 3),
2686
+ ),
2666
2687
  StructFieldDecl(
2667
2688
  name='flex_nodeadr',
2668
2689
  type=PointerType(
@@ -2735,6 +2756,14 @@ STRUCTS: Mapping[str, StructDecl] = dict([
2735
2756
  doc='first element vertex id address',
2736
2757
  array_extent=('nflex',),
2737
2758
  ),
2759
+ StructFieldDecl(
2760
+ name='flex_stiffnessadr',
2761
+ type=PointerType(
2762
+ inner_type=ValueType(name='int'),
2763
+ ),
2764
+ doc='stiffness matrix address',
2765
+ array_extent=('nflex',),
2766
+ ),
2738
2767
  StructFieldDecl(
2739
2768
  name='flex_elemedgeadr',
2740
2769
  type=PointerType(
@@ -2965,7 +2994,7 @@ STRUCTS: Mapping[str, StructDecl] = dict([
2965
2994
  inner_type=ValueType(name='mjtNum'),
2966
2995
  ),
2967
2996
  doc='finite element stiffness matrix',
2968
- array_extent=('nflexelem', 21),
2997
+ array_extent=('nflexstiffness',),
2969
2998
  ),
2970
2999
  StructFieldDecl(
2971
3000
  name='flex_bending',
@@ -8224,6 +8253,19 @@ STRUCTS: Mapping[str, StructDecl] = dict([
8224
8253
  type=ValueType(name='int'),
8225
8254
  doc='2D passive forces; 0: none, 1: bending, 2: stretching, 3: both', # pylint: disable=line-too-long
8226
8255
  ),
8256
+ StructFieldDecl(
8257
+ name='cellcount',
8258
+ type=ArrayType(
8259
+ inner_type=ValueType(name='int'),
8260
+ extents=(3,),
8261
+ ),
8262
+ doc='grid cell count for finite cell method',
8263
+ ),
8264
+ StructFieldDecl(
8265
+ name='order',
8266
+ type=ValueType(name='int'),
8267
+ doc='interpolation order (1: trilinear, 2: quadratic)',
8268
+ ),
8227
8269
  StructFieldDecl(
8228
8270
  name='nodebody',
8229
8271
  type=PointerType(
@@ -7,13 +7,13 @@
7
7
  <key>CFBundleIdentifier</key>
8
8
  <string>org.mujoco.mjpython</string>
9
9
  <key>CFBundleVersion</key>
10
- <string>3.7.0</string>
10
+ <string>3.8.0</string>
11
11
  <key>CFBundleGetInfoString</key>
12
- <string>3.7.0</string>
12
+ <string>3.8.0</string>
13
13
  <key>CFBundleLongVersionString</key>
14
- <string>3.7.0</string>
14
+ <string>3.8.0</string>
15
15
  <key>CFBundleShortVersionString</key>
16
- <string>3.7.0</string>
16
+ <string>3.8.0</string>
17
17
  <key>CFBundleExecutable</key>
18
18
  <string>mjpython</string>
19
19
  <key>CFBundleIconFile</key>
@@ -29,7 +29,7 @@ set(MUJOCO_DEP_VERSION_lodepng
29
29
 
30
30
  project(
31
31
  mujoco_simulate
32
- VERSION 3.7.0
32
+ VERSION 3.8.0
33
33
  DESCRIPTION "MuJoCo simulate binaries"
34
34
  HOMEPAGE_URL "https://mujoco.org"
35
35
  )
@@ -18,7 +18,11 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
18
18
  set(CMAKE_CXX_STANDARD 20)
19
19
  set(CMAKE_CXX_STANDARD_REQUIRED ON)
20
20
  set(CMAKE_CXX_EXTENSIONS OFF)
21
- set(CMAKE_C_EXTENSIONS OFF)
21
+ if(EMSCRIPTEN)
22
+ set(CMAKE_C_EXTENSIONS ON)
23
+ else()
24
+ set(CMAKE_C_EXTENSIONS OFF)
25
+ endif()
22
26
  set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # For LLVM tooling
23
27
 
24
28
  if(NOT CMAKE_CONFIGURATION_TYPES)
@@ -1192,7 +1192,7 @@ void MakeJointSection(mj::Simulate* sim) {
1192
1192
 
1193
1193
  // set range
1194
1194
  if (sim->jnt_range_[i].has_value())
1195
- mju::sprintf_arr(defSlider[0].other, "%.4g %.4g",
1195
+ mju::sprintf_arr(defSlider[0].other, "%.17g %.17g",
1196
1196
  sim->jnt_range_[i]->first, sim->jnt_range_[i]->second);
1197
1197
  else if (sim->jnt_type_[i]==mjJNT_SLIDE) {
1198
1198
  mju::strcpy_arr(defSlider[0].other, "-1 1");
@@ -1251,7 +1251,7 @@ void MakeControlSection(mj::Simulate* sim) {
1251
1251
 
1252
1252
  // set range
1253
1253
  if (sim->actuator_ctrlrange_[i].has_value())
1254
- mju::sprintf_arr(defSlider[0].other, "%.4g %.4g",
1254
+ mju::sprintf_arr(defSlider[0].other, "%.17g %.17g",
1255
1255
  sim->actuator_ctrlrange_[i]->first, sim->actuator_ctrlrange_[i]->second);
1256
1256
  else {
1257
1257
  mju::strcpy_arr(defSlider[0].other, "-1 1");