jaxsim 0.4.3.dev18__tar.gz → 0.4.3.dev28__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 (123) hide show
  1. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/PKG-INFO +1 -1
  2. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/__init__.py +5 -0
  3. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/_version.py +2 -2
  4. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/data.py +10 -3
  5. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/model.py +12 -1
  6. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim.egg-info/PKG-INFO +1 -1
  7. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/conftest.py +25 -0
  8. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.devcontainer/Dockerfile +0 -0
  9. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.devcontainer/devcontainer.json +0 -0
  10. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.gitattributes +0 -0
  11. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.github/CODEOWNERS +0 -0
  12. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.github/workflows/ci_cd.yml +0 -0
  13. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.github/workflows/read_the_docs.yml +0 -0
  14. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.github/workflows/update_pixi_lockfile.yml +0 -0
  15. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.gitignore +0 -0
  16. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.pre-commit-config.yaml +0 -0
  17. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/.readthedocs.yaml +0 -0
  18. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/CONTRIBUTING.md +0 -0
  19. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/LICENSE +0 -0
  20. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/README.md +0 -0
  21. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/Makefile +0 -0
  22. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/conf.py +0 -0
  23. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/examples.rst +0 -0
  24. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/guide/install.rst +0 -0
  25. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/index.rst +0 -0
  26. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/make.bat +0 -0
  27. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/api.rst +0 -0
  28. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/integrators.rst +0 -0
  29. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/math.rst +0 -0
  30. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/mujoco.rst +0 -0
  31. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/parsers.rst +0 -0
  32. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/rbda.rst +0 -0
  33. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/typing.rst +0 -0
  34. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/docs/modules/utils.rst +0 -0
  35. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/environment.yml +0 -0
  36. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/examples/.gitattributes +0 -0
  37. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/examples/.gitignore +0 -0
  38. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/examples/PD_controller.ipynb +0 -0
  39. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/examples/Parallel_computing.ipynb +0 -0
  40. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/examples/README.md +0 -0
  41. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/examples/assets/cartpole.urdf +0 -0
  42. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/pixi.lock +0 -0
  43. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/pyproject.toml +0 -0
  44. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/setup.cfg +0 -0
  45. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/setup.py +0 -0
  46. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/__init__.py +0 -0
  47. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/com.py +0 -0
  48. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/common.py +0 -0
  49. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/contact.py +0 -0
  50. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/frame.py +0 -0
  51. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/joint.py +0 -0
  52. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  53. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/link.py +0 -0
  54. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/ode.py +0 -0
  55. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/ode_data.py +0 -0
  56. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/api/references.py +0 -0
  57. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/exceptions.py +0 -0
  58. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/integrators/__init__.py +0 -0
  59. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/integrators/common.py +0 -0
  60. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/integrators/fixed_step.py +0 -0
  61. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/integrators/variable_step.py +0 -0
  62. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/logging.py +0 -0
  63. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/__init__.py +0 -0
  64. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/adjoint.py +0 -0
  65. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/cross.py +0 -0
  66. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/inertia.py +0 -0
  67. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/joint_model.py +0 -0
  68. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/quaternion.py +0 -0
  69. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/rotation.py +0 -0
  70. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/skew.py +0 -0
  71. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/math/transform.py +0 -0
  72. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/mujoco/__init__.py +0 -0
  73. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/mujoco/__main__.py +0 -0
  74. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/mujoco/loaders.py +0 -0
  75. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/mujoco/model.py +0 -0
  76. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/mujoco/visualizer.py +0 -0
  77. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/__init__.py +0 -0
  78. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  79. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  80. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  81. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/descriptions/link.py +0 -0
  82. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/descriptions/model.py +0 -0
  83. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  84. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/rod/__init__.py +0 -0
  85. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/rod/parser.py +0 -0
  86. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/parsers/rod/utils.py +0 -0
  87. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/__init__.py +0 -0
  88. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/aba.py +0 -0
  89. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/collidable_points.py +0 -0
  90. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  91. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/contacts/common.py +0 -0
  92. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  93. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/contacts/soft.py +0 -0
  94. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/crba.py +0 -0
  95. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  96. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/jacobian.py +0 -0
  97. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/rnea.py +0 -0
  98. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/rbda/utils.py +0 -0
  99. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/terrain/__init__.py +0 -0
  100. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/terrain/terrain.py +0 -0
  101. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/typing.py +0 -0
  102. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/utils/__init__.py +0 -0
  103. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  104. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/utils/tracing.py +0 -0
  105. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim/utils/wrappers.py +0 -0
  106. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  107. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  108. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim.egg-info/requires.txt +0 -0
  109. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/src/jaxsim.egg-info/top_level.txt +0 -0
  110. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/__init__.py +0 -0
  111. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_com.py +0 -0
  112. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_contact.py +0 -0
  113. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_data.py +0 -0
  114. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_frame.py +0 -0
  115. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_joint.py +0 -0
  116. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_link.py +0 -0
  117. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_api_model.py +0 -0
  118. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_automatic_differentiation.py +0 -0
  119. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_contact.py +0 -0
  120. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_exceptions.py +0 -0
  121. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_pytree.py +0 -0
  122. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/tests/test_simulations.py +0 -0
  123. {jaxsim-0.4.3.dev18 → jaxsim-0.4.3.dev28}/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.dev18
3
+ Version: 0.4.3.dev28
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>
@@ -20,6 +20,11 @@ def _jnp_options() -> None:
20
20
  if jnp.empty(0, dtype=float).dtype != jnp.empty(0, dtype=np.float64).dtype:
21
21
  logging.warning("Failed to enable 64bit precision in JAX")
22
22
 
23
+ else:
24
+ logging.warning(
25
+ "Using 32bit precision in JaxSim is still experimental, please avoid to use variable step integrators."
26
+ )
27
+
23
28
 
24
29
  def _np_options() -> None:
25
30
  import numpy as np
@@ -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.dev18'
16
- __version_tuple__ = version_tuple = (0, 4, 3, 'dev18')
15
+ __version__ = version = '0.4.3.dev28'
16
+ __version_tuple__ = version_tuple = (0, 4, 3, 'dev28')
@@ -39,7 +39,9 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
39
39
  contacts_params: jaxsim.rbda.ContactsParams = dataclasses.field(repr=False)
40
40
 
41
41
  time_ns: jtp.Int = dataclasses.field(
42
- default_factory=lambda: jnp.array(0, dtype=jnp.uint64)
42
+ default_factory=lambda: jnp.array(
43
+ 0, dtype=jnp.uint64 if jax.config.read("jax_enable_x64") else jnp.uint32
44
+ ),
43
45
  )
44
46
 
45
47
  def __hash__(self) -> int:
@@ -172,9 +174,14 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
172
174
  )
173
175
 
174
176
  time_ns = (
175
- jnp.array(time * 1e9, dtype=jnp.uint64)
177
+ jnp.array(
178
+ time * 1e9,
179
+ dtype=jnp.uint64 if jax.config.read("jax_enable_x64") else jnp.uint32,
180
+ )
176
181
  if time is not None
177
- else jnp.array(0, dtype=jnp.uint64)
182
+ else jnp.array(
183
+ 0, dtype=jnp.uint64 if jax.config.read("jax_enable_x64") else jnp.uint32
184
+ )
178
185
  )
179
186
 
180
187
  if isinstance(model.contact_model, SoftContacts):
@@ -1931,11 +1931,22 @@ def step(
1931
1931
  ),
1932
1932
  )
1933
1933
 
1934
+ tf_ns = t0_ns + jnp.array(dt * 1e9, dtype=t0_ns.dtype)
1935
+ tf_ns = jnp.where(tf_ns >= t0_ns, tf_ns, jnp.array(0, dtype=t0_ns.dtype))
1936
+
1937
+ jax.lax.cond(
1938
+ pred=tf_ns >= t0_ns,
1939
+ true_fun=lambda: jax.debug.print(
1940
+ "The simulation time overflowed, resetting simulation time to 0."
1941
+ ),
1942
+ false_fun=lambda: None,
1943
+ )
1944
+
1934
1945
  data_tf = (
1935
1946
  # Store the new state of the model and the new time.
1936
1947
  data.replace(
1937
1948
  state=state_tf,
1938
- time_ns=t0_ns + jnp.array(dt * 1e9).astype(jnp.uint64),
1949
+ time_ns=tf_ns,
1939
1950
  )
1940
1951
  )
1941
1952
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.3.dev18
3
+ Version: 0.4.3.dev28
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>
@@ -386,3 +386,28 @@ def jaxsim_models_fixed_base(request) -> pathlib.Path | str:
386
386
 
387
387
  model_name: str = request.param
388
388
  return get_jaxsim_model_fixture(model_name=model_name, request=request)
389
+
390
+
391
+ @pytest.fixture(scope="function")
392
+ def set_jax_32bit(monkeypatch):
393
+ """
394
+ Fixture that temporarily sets JAX precision to 32-bit for the duration of the test.
395
+ """
396
+
397
+ del globals()["jaxsim"]
398
+ del globals()["js"]
399
+
400
+ # Temporarily disable x64
401
+ monkeypatch.setenv("JAX_ENABLE_X64", "0")
402
+
403
+
404
+ @pytest.fixture(scope="function")
405
+ def jaxsim_model_box_32bit(set_jax_32bit, request) -> js.model.JaxSimModel:
406
+ """
407
+ Fixture providing the JaxSim model of a box with 32-bit precision.
408
+
409
+ Returns:
410
+ The JaxSim model of a box with 32-bit precision.
411
+ """
412
+
413
+ return get_jaxsim_model_fixture(model_name="box", request=request)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes