jaxsim 0.3.1.dev51__tar.gz → 0.3.1.dev56__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 (122) hide show
  1. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/PKG-INFO +1 -1
  2. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/_version.py +2 -2
  3. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/ode.py +5 -8
  4. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/PKG-INFO +1 -1
  5. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_link.py +68 -0
  6. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.devcontainer/Dockerfile +0 -0
  7. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.devcontainer/devcontainer.json +0 -0
  8. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.gitattributes +0 -0
  9. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/CODEOWNERS +0 -0
  10. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/workflows/ci_cd.yml +0 -0
  11. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/workflows/read_the_docs.yml +0 -0
  12. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/workflows/style.yml +0 -0
  13. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.gitignore +0 -0
  14. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.pre-commit-config.yaml +0 -0
  15. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.readthedocs.yaml +0 -0
  16. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/CONTRIBUTING.md +0 -0
  17. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/LICENSE +0 -0
  18. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/README.md +0 -0
  19. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/Makefile +0 -0
  20. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/conf.py +0 -0
  21. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/guide/install.rst +0 -0
  22. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/index.rst +0 -0
  23. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/make.bat +0 -0
  24. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/api.rst +0 -0
  25. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/index.rst +0 -0
  26. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/integrators.rst +0 -0
  27. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/math.rst +0 -0
  28. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/mujoco.rst +0 -0
  29. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/parsers.rst +0 -0
  30. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/rbda.rst +0 -0
  31. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/typing.rst +0 -0
  32. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/utils.rst +0 -0
  33. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/environment.yml +0 -0
  34. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/.gitattributes +0 -0
  35. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/.gitignore +0 -0
  36. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/PD_controller.ipynb +0 -0
  37. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/Parallel_computing.ipynb +0 -0
  38. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/README.md +0 -0
  39. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/assets/cartpole.urdf +0 -0
  40. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/pixi.lock +0 -0
  41. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/pyproject.toml +0 -0
  42. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/setup.cfg +0 -0
  43. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/setup.py +0 -0
  44. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/__init__.py +0 -0
  45. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/__init__.py +0 -0
  46. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/com.py +0 -0
  47. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/common.py +0 -0
  48. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/contact.py +0 -0
  49. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/data.py +0 -0
  50. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/frame.py +0 -0
  51. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/joint.py +0 -0
  52. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  53. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/link.py +0 -0
  54. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/model.py +0 -0
  55. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/ode_data.py +0 -0
  56. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/references.py +0 -0
  57. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/exceptions.py +0 -0
  58. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/__init__.py +0 -0
  59. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/common.py +0 -0
  60. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/fixed_step.py +0 -0
  61. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/variable_step.py +0 -0
  62. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/logging.py +0 -0
  63. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/__init__.py +0 -0
  64. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/adjoint.py +0 -0
  65. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/cross.py +0 -0
  66. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/inertia.py +0 -0
  67. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/joint_model.py +0 -0
  68. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/quaternion.py +0 -0
  69. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/rotation.py +0 -0
  70. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/skew.py +0 -0
  71. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/transform.py +0 -0
  72. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/__init__.py +0 -0
  73. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/__main__.py +0 -0
  74. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/loaders.py +0 -0
  75. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/model.py +0 -0
  76. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/visualizer.py +0 -0
  77. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/__init__.py +0 -0
  78. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  79. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  80. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  81. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/link.py +0 -0
  82. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/model.py +0 -0
  83. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  84. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/rod/__init__.py +0 -0
  85. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/rod/parser.py +0 -0
  86. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/rod/utils.py +0 -0
  87. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/__init__.py +0 -0
  88. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/aba.py +0 -0
  89. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/collidable_points.py +0 -0
  90. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  91. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/contacts/common.py +0 -0
  92. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/contacts/soft.py +0 -0
  93. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/crba.py +0 -0
  94. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  95. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/jacobian.py +0 -0
  96. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/rnea.py +0 -0
  97. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/utils.py +0 -0
  98. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/terrain/__init__.py +0 -0
  99. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/terrain/terrain.py +0 -0
  100. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/typing.py +0 -0
  101. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/__init__.py +0 -0
  102. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  103. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/tracing.py +0 -0
  104. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/wrappers.py +0 -0
  105. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  106. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  107. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/not-zip-safe +0 -0
  108. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/requires.txt +0 -0
  109. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/top_level.txt +0 -0
  110. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/__init__.py +0 -0
  111. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/conftest.py +0 -0
  112. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_com.py +0 -0
  113. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_data.py +0 -0
  114. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_frame.py +0 -0
  115. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_joint.py +0 -0
  116. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_model.py +0 -0
  117. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_automatic_differentiation.py +0 -0
  118. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_contact.py +0 -0
  119. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_exceptions.py +0 -0
  120. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_pytree.py +0 -0
  121. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_simulations.py +0 -0
  122. {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.3.1.dev51
3
+ Version: 0.3.1.dev56
4
4
  Home-page: https://github.com/ami-iit/jaxsim
5
5
  Author: Diego Ferigo
6
6
  Author-email: diego.ferigo@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.3.1.dev51'
16
- __version_tuple__ = version_tuple = (0, 3, 1, 'dev51')
15
+ __version__ = version = '0.3.1.dev56'
16
+ __version_tuple__ = version_tuple = (0, 3, 1, 'dev56')
@@ -150,14 +150,11 @@ def system_velocity_dynamics(
150
150
  # Sum the forces of all collidable points rigidly attached to a body.
151
151
  # Since the contact forces W_f_Ci are expressed in the world frame,
152
152
  # we don't need any coordinate transformation.
153
- W_f_Li_terrain = jax.vmap(
154
- lambda nc: (
155
- jnp.vstack(
156
- jnp.equal(parent_link_index_of_collidable_points, nc).astype(int)
157
- )
158
- * W_f_Ci
159
- ).sum(axis=0)
160
- )(jnp.arange(model.number_of_links()))
153
+ mask = parent_link_index_of_collidable_points[:, jnp.newaxis] == jnp.arange(
154
+ model.number_of_links()
155
+ )
156
+
157
+ W_f_Li_terrain = mask.T @ W_f_Ci
161
158
 
162
159
  # ====================
163
160
  # Enforce joint limits
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.3.1.dev51
3
+ Version: 0.3.1.dev56
4
4
  Home-page: https://github.com/ami-iit/jaxsim
5
5
  Author: Diego Ferigo
6
6
  Author-email: diego.ferigo@iit.it
@@ -223,6 +223,74 @@ def test_link_bias_acceleration(
223
223
  Jν_js = js.link.bias_acceleration(model=model, data=data, link_index=index)
224
224
  assert pytest.approx(Jν_idt) == Jν_js
225
225
 
226
+ # Test that the conversion of the link bias acceleration works as expected.
227
+ match data.velocity_representation:
228
+
229
+ # We exclude the mixed representation because converting the acceleration is
230
+ # more complex than using the plain 6D transform matrix.
231
+ case VelRepr.Mixed:
232
+ pass
233
+
234
+ # Inertial-fixed to body-fixed conversion.
235
+ case VelRepr.Inertial:
236
+
237
+ W_H_L = js.model.forward_kinematics(model=model, data=data)
238
+
239
+ W_a_bias_WL = jax.vmap(
240
+ lambda index: js.link.bias_acceleration(
241
+ model=model, data=data, link_index=index
242
+ )
243
+ )(jnp.arange(model.number_of_links()))
244
+
245
+ with data.switch_velocity_representation(VelRepr.Body):
246
+
247
+ W_X_L = jax.vmap(
248
+ lambda W_H_L: jaxsim.math.Adjoint.from_transform(transform=W_H_L)
249
+ )(W_H_L)
250
+
251
+ L_a_bias_WL = jax.vmap(
252
+ lambda index: js.link.bias_acceleration(
253
+ model=model, data=data, link_index=index
254
+ )
255
+ )(jnp.arange(model.number_of_links()))
256
+
257
+ W_a_bias_WL_converted = jax.vmap(
258
+ lambda W_X_L, L_a_bias_WL: W_X_L @ L_a_bias_WL
259
+ )(W_X_L, L_a_bias_WL)
260
+
261
+ assert W_a_bias_WL == pytest.approx(W_a_bias_WL_converted)
262
+
263
+ # Body-fixed to inertial-fixed conversion.
264
+ case VelRepr.Body:
265
+
266
+ W_H_L = js.model.forward_kinematics(model=model, data=data)
267
+
268
+ L_a_bias_WL = jax.vmap(
269
+ lambda index: js.link.bias_acceleration(
270
+ model=model, data=data, link_index=index
271
+ )
272
+ )(jnp.arange(model.number_of_links()))
273
+
274
+ with data.switch_velocity_representation(VelRepr.Inertial):
275
+
276
+ L_X_W = jax.vmap(
277
+ lambda W_H_L: jaxsim.math.Adjoint.from_transform(
278
+ transform=W_H_L, inverse=True
279
+ )
280
+ )(W_H_L)
281
+
282
+ W_a_bias_WL = jax.vmap(
283
+ lambda index: js.link.bias_acceleration(
284
+ model=model, data=data, link_index=index
285
+ )
286
+ )(jnp.arange(model.number_of_links()))
287
+
288
+ L_a_bias_WL_converted = jax.vmap(
289
+ lambda L_X_W, W_a_bias_WL: L_X_W @ W_a_bias_WL
290
+ )(L_X_W, W_a_bias_WL)
291
+
292
+ assert L_a_bias_WL == pytest.approx(L_a_bias_WL_converted)
293
+
226
294
 
227
295
  def test_link_jacobian_derivative(
228
296
  jaxsim_models_types: js.model.JaxSimModel,
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