mujoco 3.7.0__tar.gz → 3.8.1__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.
- {mujoco-3.7.0/mujoco.egg-info → mujoco-3.8.1}/PKG-INFO +4 -3
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/CMakeLists.txt +4 -4
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/bindings_test.py +8 -4
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/MujocoDependencies.cmake +1 -1
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/MujocoOptions.cmake +5 -1
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/enum_traits.h +1 -1
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/function_traits.h +76 -21
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/functions.cc +32 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/enums.py +4 -4
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/enums_test.py +2 -3
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/functions.py +153 -23
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/structs.py +62 -2
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/mjpython/Info.plist +4 -4
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/renderer_test.py +44 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/rendering/classic/renderer.py +6 -2
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/CMakeLists.txt +1 -1
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/SimulateOptions.cmake +5 -1
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/simulate.cc +3 -3
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/specs.cc +147 -7
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/specs.cc.inc +844 -820
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/specs_test.py +50 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/specs_wrapper.cc +31 -29
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/specs_wrapper.h +1 -1
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/structs.cc +8 -10
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/structs.h +9 -3
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/structs_wrappers.cc +84 -24
- mujoco-3.8.1/mujoco/vfs.h +46 -0
- mujoco-3.8.1/mujoco/vfs_test.py +251 -0
- {mujoco-3.7.0 → mujoco-3.8.1/mujoco.egg-info}/PKG-INFO +4 -3
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco.egg-info/SOURCES.txt +2 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/pyproject.toml +4 -3
- {mujoco-3.7.0 → mujoco-3.8.1}/LICENSE +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/LICENSES_THIRD_PARTY.md +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/MANIFEST.in +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/README.md +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/callbacks.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cgl/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cgl/cgl.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/CheckAvxSupport.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/FindOrFetch.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/MujocoHarden.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/MujocoLinkOptions.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/MujocoMacOS.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/ShellTests.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/cmake/TargetAddRpath.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/constants.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/egl/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/egl/egl_ext.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/enums.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/errors.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/errors.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/functions.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/gl_context.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/glfw/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/indexer_xmacro.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/indexers.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/indexers.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/ast_nodes.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/ast_nodes_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/codegen/formatter.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/codegen/generate_enums.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/codegen/generate_functions.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/codegen/generate_structs.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/functions_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/mjxmacro.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/structs_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/type_parsing.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/introspect/type_parsing_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/memory_leak_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/minimize.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/minimize_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/mjpython/mjpython.icns +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/mjpython/mjpython.mm +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/mjpython/mjpython.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/msh2obj.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/msh2obj_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/osmesa/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/private.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/raw.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/render.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/render_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/renderer.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/rendering/classic/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/rendering/classic/gl_context.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/rollout.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/rollout.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/rollout_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/serialization.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/array_safety.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/CheckAvxSupport.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/FindOrFetch.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/MujocoHarden.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/MujocoLinkOptions.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/MujocoMacOS.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/cmake/SimulateDependencies.cmake +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/glfw_adapter.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/glfw_adapter.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/glfw_corevideo.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/glfw_corevideo.mm +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/glfw_dispatch.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/glfw_dispatch.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/macos_gui.mm +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/main.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/platform_ui_adapter.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/platform_ui_adapter.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate/simulate.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/simulate.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/io.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/model_modifier.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/optimize.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/parameter.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/plotting.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/residual.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/signal_modifier.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/signal_transform.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/timeseries.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/_src/trajectory.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/py.typed +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/builder.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/defaults.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/base.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/covariance.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/group.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/insights.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/optimization_trace.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/parameter_distribution.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/parameters.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/row.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/signals.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/sections/video.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/covariance.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/group.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/insights.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/layout.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/optimization_trace.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/parameter_confidence.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/parameters_table.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/plot_generic.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/row.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/signals.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/templates/video.html +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/report/utils.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/__init__.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/conftest.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/test_integration.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/test_model_modifier.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/test_parameter.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/test_signal.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/test_timeseries.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/sysid/tests/test_trajectory.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/MJCF_NoRoot.zip +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/MJCF_Root.zip +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/abdomen_1_body.msh +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/model.urdf +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/model.xml +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/msh.xml +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/simple_usd_preview_surface.usda +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/testdata/usd_golden.usda +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/threadpool.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/threadpool.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/camera.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/demo.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/exporter.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/exporter_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/lights.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/objects.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/shapes.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/usd/utils.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/CMakeLists.txt +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/array_traits.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/array_traits_test.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/crossplatform.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/func_traits.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/func_traits_test.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/func_wrap.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/func_wrap_test.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/tuple_tools.h +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/util/tuple_tools_test.cc +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/viewer.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco/viewer_test.py +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco.egg-info/dependency_links.txt +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco.egg-info/requires.txt +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/mujoco.egg-info/top_level.txt +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/setup.cfg +0 -0
- {mujoco-3.7.0 → mujoco-3.8.1}/setup.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mujoco
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.8.1
|
|
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.
|
|
8
|
+
Project-URL: Documentation, https://mujoco.readthedocs.io/en/3.8.1
|
|
9
9
|
Project-URL: Repository, https://github.com/google-deepmind/mujoco
|
|
10
|
-
Project-URL: Changelog, https://mujoco.readthedocs.io/en/3.
|
|
10
|
+
Project-URL: Changelog, https://mujoco.readthedocs.io/en/3.8.1/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.
|
|
89
|
+
${MUJOCO_FRAMEWORK}/mujoco.framework/Versions/A/libmujoco.3.8.1.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.
|
|
97
|
+
MUJOCO_LIBRARY mujoco mujoco.3.8.1 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}")
|
|
@@ -175,7 +175,7 @@ findorfetch(
|
|
|
175
175
|
GIT_REPO
|
|
176
176
|
https://gitlab.com/libeigen/eigen
|
|
177
177
|
GIT_TAG
|
|
178
|
-
|
|
178
|
+
ea13a98decd497a8c5588fb5de71b57bcf10d864
|
|
179
179
|
TARGETS
|
|
180
180
|
Eigen3::Eigen
|
|
181
181
|
EXCLUDE_FROM_ALL
|
|
@@ -193,7 +193,7 @@ findorfetch(
|
|
|
193
193
|
GIT_REPO
|
|
194
194
|
https://github.com/pybind/pybind11
|
|
195
195
|
GIT_TAG
|
|
196
|
-
|
|
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,
|
|
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),
|
|
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),
|
|
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
|
-
|
|
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)
|
|
@@ -39,7 +39,7 @@ set(MUJOCO_DEP_VERSION_qhull
|
|
|
39
39
|
CACHE STRING "Version of `qhull` to be fetched."
|
|
40
40
|
)
|
|
41
41
|
set(MUJOCO_DEP_VERSION_Eigen3
|
|
42
|
-
|
|
42
|
+
ea13a98decd497a8c5588fb5de71b57bcf10d864
|
|
43
43
|
CACHE STRING "Version of `Eigen3` to be fetched."
|
|
44
44
|
)
|
|
45
45
|
|
|
@@ -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
|
-
|
|
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.";
|
|
@@ -3223,6 +3256,17 @@ struct mju_sparse2dense {
|
|
|
3223
3256
|
}
|
|
3224
3257
|
};
|
|
3225
3258
|
|
|
3259
|
+
struct mju_sym2dense {
|
|
3260
|
+
static constexpr char name[] = "mju_sym2dense";
|
|
3261
|
+
static constexpr char doc[] = "Convert lower-triangular symmetric CSR matrix to full dense matrix.";
|
|
3262
|
+
using type = void (mjtNum *, const mjtNum *, int, const int *, const int *, const int *);
|
|
3263
|
+
static constexpr auto param_names = std::make_tuple("res", "mat", "n", "rownnz", "rowadr", "colind");
|
|
3264
|
+
|
|
3265
|
+
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
3266
|
+
return ::mju_sym2dense;
|
|
3267
|
+
}
|
|
3268
|
+
};
|
|
3269
|
+
|
|
3226
3270
|
struct mju_rotVecQuat {
|
|
3227
3271
|
static constexpr char name[] = "mju_rotVecQuat";
|
|
3228
3272
|
static constexpr char doc[] = "Rotate vector by quaternion.";
|
|
@@ -4689,7 +4733,7 @@ struct mjs_makeMesh {
|
|
|
4689
4733
|
struct mjs_getSpec {
|
|
4690
4734
|
static constexpr char name[] = "mjs_getSpec";
|
|
4691
4735
|
static constexpr char doc[] = "Get spec from body.";
|
|
4692
|
-
using type = mjSpec * (mjsElement *);
|
|
4736
|
+
using type = mjSpec * (const mjsElement *);
|
|
4693
4737
|
static constexpr auto param_names = std::make_tuple("element");
|
|
4694
4738
|
|
|
4695
4739
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4697,10 +4741,21 @@ struct mjs_getSpec {
|
|
|
4697
4741
|
}
|
|
4698
4742
|
};
|
|
4699
4743
|
|
|
4744
|
+
struct mjs_getOriginSpec {
|
|
4745
|
+
static constexpr char name[] = "mjs_getOriginSpec";
|
|
4746
|
+
static constexpr char doc[] = "get spec that originally defined an element contrary to mjs_getSpec, this does not change after attachment";
|
|
4747
|
+
using type = mjSpec * (const mjsElement *);
|
|
4748
|
+
static constexpr auto param_names = std::make_tuple("element");
|
|
4749
|
+
|
|
4750
|
+
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
4751
|
+
return ::mjs_getOriginSpec;
|
|
4752
|
+
}
|
|
4753
|
+
};
|
|
4754
|
+
|
|
4700
4755
|
struct mjs_getCompiler {
|
|
4701
4756
|
static constexpr char name[] = "mjs_getCompiler";
|
|
4702
4757
|
static constexpr char doc[] = "Get compiler associated with element's origin spec.";
|
|
4703
|
-
using type = mjsCompiler * (mjsElement *);
|
|
4758
|
+
using type = mjsCompiler * (const mjsElement *);
|
|
4704
4759
|
static constexpr auto param_names = std::make_tuple("element");
|
|
4705
4760
|
|
|
4706
4761
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4711,7 +4766,7 @@ struct mjs_getCompiler {
|
|
|
4711
4766
|
struct mjs_findSpec {
|
|
4712
4767
|
static constexpr char name[] = "mjs_findSpec";
|
|
4713
4768
|
static constexpr char doc[] = "Find spec (model asset) by name.";
|
|
4714
|
-
using type = mjSpec * (mjSpec *, const char *);
|
|
4769
|
+
using type = mjSpec * (const mjSpec *, const char *);
|
|
4715
4770
|
static constexpr auto param_names = std::make_tuple("spec", "name");
|
|
4716
4771
|
|
|
4717
4772
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4722,7 +4777,7 @@ struct mjs_findSpec {
|
|
|
4722
4777
|
struct mjs_findBody {
|
|
4723
4778
|
static constexpr char name[] = "mjs_findBody";
|
|
4724
4779
|
static constexpr char doc[] = "Find body in spec by name.";
|
|
4725
|
-
using type = mjsBody * (mjSpec *, const char *);
|
|
4780
|
+
using type = mjsBody * (const mjSpec *, const char *);
|
|
4726
4781
|
static constexpr auto param_names = std::make_tuple("s", "name");
|
|
4727
4782
|
|
|
4728
4783
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4733,7 +4788,7 @@ struct mjs_findBody {
|
|
|
4733
4788
|
struct mjs_findElement {
|
|
4734
4789
|
static constexpr char name[] = "mjs_findElement";
|
|
4735
4790
|
static constexpr char doc[] = "Find element in spec by name.";
|
|
4736
|
-
using type = mjsElement * (mjSpec *, mjtObj, const char *);
|
|
4791
|
+
using type = mjsElement * (const mjSpec *, mjtObj, const char *);
|
|
4737
4792
|
static constexpr auto param_names = std::make_tuple("s", "type", "name");
|
|
4738
4793
|
|
|
4739
4794
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4744,7 +4799,7 @@ struct mjs_findElement {
|
|
|
4744
4799
|
struct mjs_findChild {
|
|
4745
4800
|
static constexpr char name[] = "mjs_findChild";
|
|
4746
4801
|
static constexpr char doc[] = "Find child body by name.";
|
|
4747
|
-
using type = mjsBody * (mjsBody *, const char *);
|
|
4802
|
+
using type = mjsBody * (const mjsBody *, const char *);
|
|
4748
4803
|
static constexpr auto param_names = std::make_tuple("body", "name");
|
|
4749
4804
|
|
|
4750
4805
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4755,7 +4810,7 @@ struct mjs_findChild {
|
|
|
4755
4810
|
struct mjs_getParent {
|
|
4756
4811
|
static constexpr char name[] = "mjs_getParent";
|
|
4757
4812
|
static constexpr char doc[] = "Get parent body.";
|
|
4758
|
-
using type = mjsBody * (mjsElement *);
|
|
4813
|
+
using type = mjsBody * (const mjsElement *);
|
|
4759
4814
|
static constexpr auto param_names = std::make_tuple("element");
|
|
4760
4815
|
|
|
4761
4816
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4766,7 +4821,7 @@ struct mjs_getParent {
|
|
|
4766
4821
|
struct mjs_getFrame {
|
|
4767
4822
|
static constexpr char name[] = "mjs_getFrame";
|
|
4768
4823
|
static constexpr char doc[] = "Get parent frame.";
|
|
4769
|
-
using type = mjsFrame * (mjsElement *);
|
|
4824
|
+
using type = mjsFrame * (const mjsElement *);
|
|
4770
4825
|
static constexpr auto param_names = std::make_tuple("element");
|
|
4771
4826
|
|
|
4772
4827
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4777,7 +4832,7 @@ struct mjs_getFrame {
|
|
|
4777
4832
|
struct mjs_findFrame {
|
|
4778
4833
|
static constexpr char name[] = "mjs_findFrame";
|
|
4779
4834
|
static constexpr char doc[] = "Find frame by name.";
|
|
4780
|
-
using type = mjsFrame * (mjSpec *, const char *);
|
|
4835
|
+
using type = mjsFrame * (const mjSpec *, const char *);
|
|
4781
4836
|
static constexpr auto param_names = std::make_tuple("s", "name");
|
|
4782
4837
|
|
|
4783
4838
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4788,7 +4843,7 @@ struct mjs_findFrame {
|
|
|
4788
4843
|
struct mjs_getDefault {
|
|
4789
4844
|
static constexpr char name[] = "mjs_getDefault";
|
|
4790
4845
|
static constexpr char doc[] = "Get default corresponding to an element.";
|
|
4791
|
-
using type = mjsDefault * (mjsElement *);
|
|
4846
|
+
using type = mjsDefault * (const mjsElement *);
|
|
4792
4847
|
static constexpr auto param_names = std::make_tuple("element");
|
|
4793
4848
|
|
|
4794
4849
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4799,7 +4854,7 @@ struct mjs_getDefault {
|
|
|
4799
4854
|
struct mjs_findDefault {
|
|
4800
4855
|
static constexpr char name[] = "mjs_findDefault";
|
|
4801
4856
|
static constexpr char doc[] = "Find default in model by class name.";
|
|
4802
|
-
using type = mjsDefault * (mjSpec *, const char *);
|
|
4857
|
+
using type = mjsDefault * (const mjSpec *, const char *);
|
|
4803
4858
|
static constexpr auto param_names = std::make_tuple("s", "classname");
|
|
4804
4859
|
|
|
4805
4860
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4810,7 +4865,7 @@ struct mjs_findDefault {
|
|
|
4810
4865
|
struct mjs_getSpecDefault {
|
|
4811
4866
|
static constexpr char name[] = "mjs_getSpecDefault";
|
|
4812
4867
|
static constexpr char doc[] = "Get global default from model.";
|
|
4813
|
-
using type = mjsDefault * (mjSpec *);
|
|
4868
|
+
using type = mjsDefault * (const mjSpec *);
|
|
4814
4869
|
static constexpr auto param_names = std::make_tuple("s");
|
|
4815
4870
|
|
|
4816
4871
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4821,7 +4876,7 @@ struct mjs_getSpecDefault {
|
|
|
4821
4876
|
struct mjs_getId {
|
|
4822
4877
|
static constexpr char name[] = "mjs_getId";
|
|
4823
4878
|
static constexpr char doc[] = "Get element id.";
|
|
4824
|
-
using type = int (mjsElement *);
|
|
4879
|
+
using type = int (const mjsElement *);
|
|
4825
4880
|
static constexpr auto param_names = std::make_tuple("element");
|
|
4826
4881
|
|
|
4827
4882
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4832,7 +4887,7 @@ struct mjs_getId {
|
|
|
4832
4887
|
struct mjs_firstChild {
|
|
4833
4888
|
static constexpr char name[] = "mjs_firstChild";
|
|
4834
4889
|
static constexpr char doc[] = "Return body's first child of given type. If recurse is nonzero, also search the body's subtree.";
|
|
4835
|
-
using type = mjsElement * (mjsBody *, mjtObj, int);
|
|
4890
|
+
using type = mjsElement * (const mjsBody *, mjtObj, int);
|
|
4836
4891
|
static constexpr auto param_names = std::make_tuple("body", "type", "recurse");
|
|
4837
4892
|
|
|
4838
4893
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4843,7 +4898,7 @@ struct mjs_firstChild {
|
|
|
4843
4898
|
struct mjs_nextChild {
|
|
4844
4899
|
static constexpr char name[] = "mjs_nextChild";
|
|
4845
4900
|
static constexpr char doc[] = "Return body's next child of the same type; return NULL if child is last. If recurse is nonzero, also search the body's subtree.";
|
|
4846
|
-
using type = mjsElement * (mjsBody *, mjsElement *, int);
|
|
4901
|
+
using type = mjsElement * (const mjsBody *, const mjsElement *, int);
|
|
4847
4902
|
static constexpr auto param_names = std::make_tuple("body", "child", "recurse");
|
|
4848
4903
|
|
|
4849
4904
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4854,7 +4909,7 @@ struct mjs_nextChild {
|
|
|
4854
4909
|
struct mjs_firstElement {
|
|
4855
4910
|
static constexpr char name[] = "mjs_firstElement";
|
|
4856
4911
|
static constexpr char doc[] = "Return spec's first element of selected type.";
|
|
4857
|
-
using type = mjsElement * (mjSpec *, mjtObj);
|
|
4912
|
+
using type = mjsElement * (const mjSpec *, mjtObj);
|
|
4858
4913
|
static constexpr auto param_names = std::make_tuple("s", "type");
|
|
4859
4914
|
|
|
4860
4915
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4865,7 +4920,7 @@ struct mjs_firstElement {
|
|
|
4865
4920
|
struct mjs_nextElement {
|
|
4866
4921
|
static constexpr char name[] = "mjs_nextElement";
|
|
4867
4922
|
static constexpr char doc[] = "Return spec's next element; return NULL if element is last.";
|
|
4868
|
-
using type = mjsElement * (mjSpec *, mjsElement *);
|
|
4923
|
+
using type = mjsElement * (const mjSpec *, const mjsElement *);
|
|
4869
4924
|
static constexpr auto param_names = std::make_tuple("s", "element");
|
|
4870
4925
|
|
|
4871
4926
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4876,7 +4931,7 @@ struct mjs_nextElement {
|
|
|
4876
4931
|
struct mjs_getWrapTarget {
|
|
4877
4932
|
static constexpr char name[] = "mjs_getWrapTarget";
|
|
4878
4933
|
static constexpr char doc[] = "Get wrapped element in tendon path.";
|
|
4879
|
-
using type = mjsElement * (mjsWrap *);
|
|
4934
|
+
using type = mjsElement * (const mjsWrap *);
|
|
4880
4935
|
static constexpr auto param_names = std::make_tuple("wrap");
|
|
4881
4936
|
|
|
4882
4937
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4887,7 +4942,7 @@ struct mjs_getWrapTarget {
|
|
|
4887
4942
|
struct mjs_getWrapSideSite {
|
|
4888
4943
|
static constexpr char name[] = "mjs_getWrapSideSite";
|
|
4889
4944
|
static constexpr char doc[] = "Get wrapped element side site in tendon path if it has one, nullptr otherwise.";
|
|
4890
|
-
using type = mjsSite * (mjsWrap *);
|
|
4945
|
+
using type = mjsSite * (const mjsWrap *);
|
|
4891
4946
|
static constexpr auto param_names = std::make_tuple("wrap");
|
|
4892
4947
|
|
|
4893
4948
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4898,7 +4953,7 @@ struct mjs_getWrapSideSite {
|
|
|
4898
4953
|
struct mjs_getWrapDivisor {
|
|
4899
4954
|
static constexpr char name[] = "mjs_getWrapDivisor";
|
|
4900
4955
|
static constexpr char doc[] = "Get divisor of mjsWrap wrapping a puller.";
|
|
4901
|
-
using type = double (mjsWrap *);
|
|
4956
|
+
using type = double (const mjsWrap *);
|
|
4902
4957
|
static constexpr auto param_names = std::make_tuple("wrap");
|
|
4903
4958
|
|
|
4904
4959
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -4909,7 +4964,7 @@ struct mjs_getWrapDivisor {
|
|
|
4909
4964
|
struct mjs_getWrapCoef {
|
|
4910
4965
|
static constexpr char name[] = "mjs_getWrapCoef";
|
|
4911
4966
|
static constexpr char doc[] = "Get coefficient of mjsWrap wrapping a joint.";
|
|
4912
|
-
using type = double (mjsWrap *);
|
|
4967
|
+
using type = double (const mjsWrap *);
|
|
4913
4968
|
static constexpr auto param_names = std::make_tuple("wrap");
|
|
4914
4969
|
|
|
4915
4970
|
MUJOCO_ALWAYS_INLINE static type& GetFunc() {
|
|
@@ -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);
|
|
@@ -1240,6 +1241,37 @@ PYBIND11_MODULE(_functions, pymodule) {
|
|
|
1240
1241
|
colind.data());
|
|
1241
1242
|
});
|
|
1242
1243
|
|
|
1244
|
+
DEF_WITH_OMITTED_PY_ARGS(traits::mju_sym2dense, "n")(
|
|
1245
|
+
pymodule,
|
|
1246
|
+
[](Eigen::Ref<EigenArrayXX> res,
|
|
1247
|
+
Eigen::Ref<const EigenVectorX> mat,
|
|
1248
|
+
Eigen::Ref<const EigenVectorI> rownnz,
|
|
1249
|
+
Eigen::Ref<const EigenVectorI> rowadr,
|
|
1250
|
+
Eigen::Ref<const EigenVectorI> colind) {
|
|
1251
|
+
if (res.rows() != res.cols()) {
|
|
1252
|
+
throw py::type_error("res should be a square matrix");
|
|
1253
|
+
}
|
|
1254
|
+
if (res.rows() != rownnz.size()) {
|
|
1255
|
+
throw py::type_error("#rows in res should equal size of rownnz");
|
|
1256
|
+
}
|
|
1257
|
+
if (res.rows() != rowadr.size()) {
|
|
1258
|
+
throw py::type_error("#rows in res should equal size of rowadr");
|
|
1259
|
+
}
|
|
1260
|
+
if (res.rows() > 0) {
|
|
1261
|
+
int nnz = rowadr.array().tail(1)[0] + rownnz.array().tail(1)[0];
|
|
1262
|
+
if (mat.size() < nnz) {
|
|
1263
|
+
throw py::type_error("mat size is too small for the given sparse "
|
|
1264
|
+
"structure");
|
|
1265
|
+
}
|
|
1266
|
+
if (colind.size() < nnz) {
|
|
1267
|
+
throw py::type_error("colind size is too small for the given "
|
|
1268
|
+
"sparse structure");
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
return ::mju_sym2dense(res.data(), mat.data(), res.rows(),
|
|
1272
|
+
rownnz.data(), rowadr.data(), colind.data());
|
|
1273
|
+
});
|
|
1274
|
+
|
|
1243
1275
|
// Quaternions
|
|
1244
1276
|
Def<traits::mju_rotVecQuat>(pymodule);
|
|
1245
1277
|
Def<traits::mju_negQuat>(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
|
-
('
|
|
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
|
-
('
|
|
62
|
-
('
|
|
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
|
-
('
|
|
46
|
-
('
|
|
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
|