jaxsim 0.4.3.dev181__tar.gz → 0.4.3.dev186__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 (126) hide show
  1. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/PKG-INFO +1 -1
  2. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/_version.py +2 -2
  3. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/mujoco/__init__.py +1 -0
  4. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/mujoco/loaders.py +1 -1
  5. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/mujoco/model.py +4 -3
  6. jaxsim-0.4.3.dev186/src/jaxsim/mujoco/utils.py +101 -0
  7. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/mujoco/visualizer.py +1 -1
  8. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim.egg-info/PKG-INFO +1 -1
  9. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim.egg-info/SOURCES.txt +1 -0
  10. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.devcontainer/Dockerfile +0 -0
  11. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.devcontainer/devcontainer.json +0 -0
  12. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.gitattributes +0 -0
  13. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.github/CODEOWNERS +0 -0
  14. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.github/workflows/ci_cd.yml +0 -0
  15. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.github/workflows/read_the_docs.yml +0 -0
  16. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.github/workflows/update_pixi_lockfile.yml +0 -0
  17. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.gitignore +0 -0
  18. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.pre-commit-config.yaml +0 -0
  19. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/.readthedocs.yaml +0 -0
  20. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/CONTRIBUTING.md +0 -0
  21. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/LICENSE +0 -0
  22. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/README.md +0 -0
  23. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/Makefile +0 -0
  24. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/conf.py +0 -0
  25. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/examples.rst +0 -0
  26. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/guide/install.rst +0 -0
  27. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/index.rst +0 -0
  28. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/make.bat +0 -0
  29. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/api.rst +0 -0
  30. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/integrators.rst +0 -0
  31. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/math.rst +0 -0
  32. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/mujoco.rst +0 -0
  33. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/parsers.rst +0 -0
  34. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/rbda.rst +0 -0
  35. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/typing.rst +0 -0
  36. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/docs/modules/utils.rst +0 -0
  37. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/environment.yml +0 -0
  38. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/examples/.gitattributes +0 -0
  39. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/examples/.gitignore +0 -0
  40. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/examples/PD_controller.ipynb +0 -0
  41. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/examples/Parallel_computing.ipynb +0 -0
  42. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/examples/README.md +0 -0
  43. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/examples/assets/cartpole.urdf +0 -0
  44. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/pixi.lock +0 -0
  45. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/pyproject.toml +0 -0
  46. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/setup.cfg +0 -0
  47. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/setup.py +0 -0
  48. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/__init__.py +0 -0
  49. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/__init__.py +0 -0
  50. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/com.py +0 -0
  51. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/common.py +0 -0
  52. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/contact.py +0 -0
  53. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/data.py +0 -0
  54. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/frame.py +0 -0
  55. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/joint.py +0 -0
  56. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  57. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/link.py +0 -0
  58. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/model.py +0 -0
  59. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/ode.py +0 -0
  60. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/ode_data.py +0 -0
  61. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/api/references.py +0 -0
  62. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/exceptions.py +0 -0
  63. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/integrators/__init__.py +0 -0
  64. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/integrators/common.py +0 -0
  65. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/integrators/fixed_step.py +0 -0
  66. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/integrators/variable_step.py +0 -0
  67. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/logging.py +0 -0
  68. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/__init__.py +0 -0
  69. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/adjoint.py +0 -0
  70. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/cross.py +0 -0
  71. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/inertia.py +0 -0
  72. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/joint_model.py +0 -0
  73. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/quaternion.py +0 -0
  74. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/rotation.py +0 -0
  75. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/skew.py +0 -0
  76. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/math/transform.py +0 -0
  77. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/mujoco/__main__.py +0 -0
  78. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/__init__.py +0 -0
  79. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  80. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  81. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  82. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/descriptions/link.py +0 -0
  83. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/descriptions/model.py +0 -0
  84. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  85. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/rod/__init__.py +0 -0
  86. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/rod/parser.py +0 -0
  87. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/parsers/rod/utils.py +0 -0
  88. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/__init__.py +0 -0
  89. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/aba.py +0 -0
  90. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/collidable_points.py +0 -0
  91. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  92. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/contacts/common.py +0 -0
  93. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  94. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  95. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/contacts/soft.py +0 -0
  96. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/contacts/visco_elastic.py +0 -0
  97. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/crba.py +0 -0
  98. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  99. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/jacobian.py +0 -0
  100. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/rnea.py +0 -0
  101. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/rbda/utils.py +0 -0
  102. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/terrain/__init__.py +0 -0
  103. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/terrain/terrain.py +0 -0
  104. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/typing.py +0 -0
  105. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/utils/__init__.py +0 -0
  106. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  107. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/utils/tracing.py +0 -0
  108. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim/utils/wrappers.py +0 -0
  109. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  110. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim.egg-info/requires.txt +0 -0
  111. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/src/jaxsim.egg-info/top_level.txt +0 -0
  112. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/__init__.py +0 -0
  113. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/conftest.py +0 -0
  114. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_com.py +0 -0
  115. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_contact.py +0 -0
  116. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_data.py +0 -0
  117. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_frame.py +0 -0
  118. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_joint.py +0 -0
  119. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_link.py +0 -0
  120. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_api_model.py +0 -0
  121. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_automatic_differentiation.py +0 -0
  122. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_contact.py +0 -0
  123. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_exceptions.py +0 -0
  124. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_pytree.py +0 -0
  125. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/test_simulations.py +0 -0
  126. {jaxsim-0.4.3.dev181 → jaxsim-0.4.3.dev186}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.3.dev181
3
+ Version: 0.4.3.dev186
4
4
  Summary: A differentiable physics engine and multibody dynamics library for control and robot learning.
5
5
  Author-email: Diego Ferigo <dgferigo@gmail.com>
6
6
  Maintainer-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippo.ferretti@iit.it>
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.4.3.dev181'
16
- __version_tuple__ = version_tuple = (0, 4, 3, 'dev181')
15
+ __version__ = version = '0.4.3.dev186'
16
+ __version_tuple__ = version_tuple = (0, 4, 3, 'dev186')
@@ -1,3 +1,4 @@
1
1
  from .loaders import RodModelToMjcf, SdfToMjcf, UrdfToMjcf
2
2
  from .model import MujocoModelHelper
3
+ from .utils import mujoco_data_from_jaxsim
3
4
  from .visualizer import MujocoVideoRecorder, MujocoVisualizer
@@ -646,7 +646,7 @@ class MujocoCamera:
646
646
  def build(cls, **kwargs) -> MujocoCamera:
647
647
 
648
648
  if not all(isinstance(value, str) for value in kwargs.values()):
649
- raise ValueError("Values must be strings")
649
+ raise ValueError(f"Values must be strings: {kwargs}")
650
650
 
651
651
  return cls(**kwargs)
652
652
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import functools
4
4
  import pathlib
5
- from collections.abc import Callable
5
+ from collections.abc import Callable, Sequence
6
6
  from typing import Any
7
7
 
8
8
  import mujoco as mj
@@ -107,7 +107,8 @@ class MujocoModelHelper:
107
107
  size = [float(el) for el in hfield_element["@size"].split(" ")]
108
108
  size[0], size[1] = heightmap_radius_xy
109
109
  size[2] = 1.0
110
- size[3] = max(0, -min(hfield))
110
+ # The following could be zero but Mujoco complains if it's exactly zero.
111
+ size[3] = max(0.000_001, -min(hfield))
111
112
 
112
113
  # Replace the 'size' attribute.
113
114
  hfields_dict[heightmap_name]["@size"] = " ".join(str(el) for el in size)
@@ -315,7 +316,7 @@ class MujocoModelHelper:
315
316
  self.data.qpos[sl] = position
316
317
 
317
318
  def set_joint_positions(
318
- self, joint_names: list[str], positions: npt.NDArray | list[npt.NDArray]
319
+ self, joint_names: Sequence[str], positions: npt.NDArray | list[npt.NDArray]
319
320
  ) -> None:
320
321
  """Set the positions of multiple joints."""
321
322
 
@@ -0,0 +1,101 @@
1
+ import mujoco as mj
2
+ import numpy as np
3
+
4
+ from . import MujocoModelHelper
5
+
6
+
7
+ def mujoco_data_from_jaxsim(
8
+ mujoco_model: mj.MjModel,
9
+ jaxsim_model,
10
+ jaxsim_data,
11
+ mujoco_data: mj.MjData | None = None,
12
+ update_removed_joints: bool = True,
13
+ ) -> mj.MjData:
14
+ """
15
+ Create a Mujoco data object from a JaxSim model and data objects.
16
+
17
+ Args:
18
+ mujoco_model: The Mujoco model object corresponding to the JaxSim model.
19
+ jaxsim_model: The JaxSim model object from which the Mujoco model was created.
20
+ jaxsim_data: The JaxSim data object containing the state of the model.
21
+ mujoco_data: An optional Mujoco data object. If None, a new one will be created.
22
+ update_removed_joints:
23
+ If True, the positions of the joints that have been removed during the
24
+ model reduction process will be set to their initial values.
25
+
26
+ Returns:
27
+ The Mujoco data object containing the state of the JaxSim model.
28
+
29
+ Note:
30
+ This method is useful to initialize a Mujoco data object used for visualization
31
+ with the state of a JaxSim model. In particular, this function takes care of
32
+ initializing the positions of the joints that have been removed during the
33
+ model reduction process. After the initial creation of the Mujoco data object,
34
+ it's faster to update the state using an external MujocoModelHelper object.
35
+ """
36
+
37
+ # The package `jaxsim.mujoco` is supposed to be jax-independent.
38
+ # We import all the JaxSim resources privately.
39
+ import jaxsim.api as js
40
+
41
+ if not isinstance(jaxsim_model, js.model.JaxSimModel):
42
+ raise ValueError("The `jaxsim_model` argument must be a JaxSimModel object.")
43
+
44
+ if not isinstance(jaxsim_data, js.data.JaxSimModelData):
45
+ raise ValueError("The `jaxsim_data` argument must be a JaxSimModelData object.")
46
+
47
+ # Create the helper to operate on the Mujoco model and data.
48
+ model_helper = MujocoModelHelper(model=mujoco_model, data=mujoco_data)
49
+
50
+ # If the model is fixed-base, the Mujoco model won't have the joint corresponding
51
+ # to the floating base, and the helper would raise an exception.
52
+ if jaxsim_model.floating_base():
53
+
54
+ # Set the model position.
55
+ model_helper.set_base_position(position=np.array(jaxsim_data.base_position()))
56
+
57
+ # Set the model orientation.
58
+ model_helper.set_base_orientation(
59
+ orientation=np.array(jaxsim_data.base_orientation())
60
+ )
61
+
62
+ # Set the joint positions.
63
+ if jaxsim_model.dofs() > 0:
64
+
65
+ model_helper.set_joint_positions(
66
+ joint_names=list(jaxsim_model.joint_names()),
67
+ positions=np.array(
68
+ jaxsim_data.joint_positions(
69
+ model=jaxsim_model, joint_names=jaxsim_model.joint_names()
70
+ )
71
+ ),
72
+ )
73
+
74
+ # Updating these joints is not necessary after the first time.
75
+ # Users can disable this update after initialization.
76
+ if update_removed_joints:
77
+
78
+ # Create a dictionary with the joints that have been removed for various reasons
79
+ # (like link lumping due to model reduction).
80
+ joints_removed_dict = {
81
+ j.name: j
82
+ for j in jaxsim_model.description._joints_removed
83
+ if j.name not in set(jaxsim_model.joint_names())
84
+ }
85
+
86
+ # Set the positions of the removed joints.
87
+ _ = [
88
+ model_helper.set_joint_position(
89
+ position=joints_removed_dict[joint_name].initial_position,
90
+ joint_name=joint_name,
91
+ )
92
+ # Select all original joint that have been removed from the JaxSim model
93
+ # that are still present in the Mujoco model.
94
+ for joint_name in joints_removed_dict
95
+ if joint_name in model_helper.joint_names()
96
+ ]
97
+
98
+ # Return the mujoco data with updated kinematics.
99
+ mj.mj_forward(mujoco_model, model_helper.data)
100
+
101
+ return model_helper.data
@@ -89,7 +89,7 @@ class MujocoVideoRecorder:
89
89
  if not exist_ok and path.is_file():
90
90
  raise FileExistsError(f"The file '{path}' already exists.")
91
91
 
92
- media.write_video(path=path, images=self.frames, fps=self.fps)
92
+ media.write_video(path=path, images=np.array(self.frames), fps=self.fps)
93
93
 
94
94
  @staticmethod
95
95
  def compute_down_sampling(original_fps: int, target_min_fps: int) -> int:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.3.dev181
3
+ Version: 0.4.3.dev186
4
4
  Summary: A differentiable physics engine and multibody dynamics library for control and robot learning.
5
5
  Author-email: Diego Ferigo <dgferigo@gmail.com>
6
6
  Maintainer-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippo.ferretti@iit.it>
@@ -75,6 +75,7 @@ src/jaxsim/mujoco/__init__.py
75
75
  src/jaxsim/mujoco/__main__.py
76
76
  src/jaxsim/mujoco/loaders.py
77
77
  src/jaxsim/mujoco/model.py
78
+ src/jaxsim/mujoco/utils.py
78
79
  src/jaxsim/mujoco/visualizer.py
79
80
  src/jaxsim/parsers/__init__.py
80
81
  src/jaxsim/parsers/kinematic_graph.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes