jaxsim 0.6.2.dev107__tar.gz → 0.6.2.dev156__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 (134) hide show
  1. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.github/workflows/pixi.yml +1 -1
  2. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/PKG-INFO +48 -25
  3. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/README.md +47 -24
  4. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/guide/install.rst +2 -2
  5. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/index.rst +0 -1
  6. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/api.rst +13 -4
  7. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/rbda.rst +10 -0
  8. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/typing.rst +6 -5
  9. jaxsim-0.6.2.dev156/pixi.lock +3 -0
  10. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/pyproject.toml +1 -1
  11. jaxsim-0.6.2.dev156/src/jaxsim/_version.py +21 -0
  12. jaxsim-0.6.2.dev156/src/jaxsim/api/integrators.py +157 -0
  13. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/kin_dyn_parameters.py +3 -3
  14. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/model.py +40 -32
  15. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/ode.py +5 -9
  16. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/mujoco/visualizer.py +23 -5
  17. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/descriptions/link.py +3 -8
  18. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/descriptions/model.py +4 -4
  19. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/kinematic_graph.py +17 -20
  20. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/rod/parser.py +1 -1
  21. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/rod/utils.py +9 -2
  22. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/utils.py +6 -0
  23. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim.egg-info/PKG-INFO +48 -25
  24. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim.egg-info/SOURCES.txt +0 -1
  25. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/conftest.py +19 -0
  26. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_automatic_differentiation.py +7 -0
  27. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_simulations.py +2 -1
  28. jaxsim-0.6.2.dev107/docs/modules/integrators.rst +0 -23
  29. jaxsim-0.6.2.dev107/pixi.lock +0 -3
  30. jaxsim-0.6.2.dev107/src/jaxsim/_version.py +0 -16
  31. jaxsim-0.6.2.dev107/src/jaxsim/api/integrators.py +0 -76
  32. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.devcontainer/Dockerfile +0 -0
  33. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.devcontainer/devcontainer.json +0 -0
  34. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.gitattributes +0 -0
  35. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.github/CODEOWNERS +0 -0
  36. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.github/dependabot.yml +0 -0
  37. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.github/workflows/ci_cd.yml +0 -0
  38. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.github/workflows/read_the_docs.yml +0 -0
  39. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.gitignore +0 -0
  40. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.pre-commit-config.yaml +0 -0
  41. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/.readthedocs.yaml +0 -0
  42. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/CONTRIBUTING.md +0 -0
  43. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/LICENSE +0 -0
  44. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/Makefile +0 -0
  45. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/conf.py +0 -0
  46. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/examples.rst +0 -0
  47. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/guide/configuration.rst +0 -0
  48. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/make.bat +0 -0
  49. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/math.rst +0 -0
  50. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/mujoco.rst +0 -0
  51. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/parsers.rst +0 -0
  52. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/docs/modules/utils.rst +0 -0
  53. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/environment.yml +0 -0
  54. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/.gitattributes +0 -0
  55. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/.gitignore +0 -0
  56. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/README.md +0 -0
  57. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/assets/build_cartpole_urdf.py +0 -0
  58. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/assets/cartpole.urdf +0 -0
  59. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
  60. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/jaxsim_as_physics_engine.ipynb +0 -0
  61. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
  62. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
  63. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/setup.cfg +0 -0
  64. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/setup.py +0 -0
  65. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/__init__.py +0 -0
  66. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/__init__.py +0 -0
  67. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/actuation_model.py +0 -0
  68. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/com.py +0 -0
  69. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/common.py +0 -0
  70. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/contact.py +0 -0
  71. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/contact_model.py +0 -0
  72. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/data.py +0 -0
  73. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/frame.py +0 -0
  74. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/joint.py +0 -0
  75. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/link.py +0 -0
  76. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/api/references.py +0 -0
  77. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/exceptions.py +0 -0
  78. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/logging.py +0 -0
  79. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/__init__.py +0 -0
  80. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/adjoint.py +0 -0
  81. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/cross.py +0 -0
  82. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/inertia.py +0 -0
  83. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/joint_model.py +0 -0
  84. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/quaternion.py +0 -0
  85. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/rotation.py +0 -0
  86. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/skew.py +0 -0
  87. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/transform.py +0 -0
  88. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/math/utils.py +0 -0
  89. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/mujoco/__init__.py +0 -0
  90. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/mujoco/__main__.py +0 -0
  91. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/mujoco/loaders.py +0 -0
  92. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/mujoco/model.py +0 -0
  93. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/mujoco/utils.py +0 -0
  94. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/__init__.py +0 -0
  95. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  96. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  97. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  98. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/rod/__init__.py +0 -0
  99. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/parsers/rod/meshes.py +0 -0
  100. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/__init__.py +0 -0
  101. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/aba.py +0 -0
  102. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/collidable_points.py +0 -0
  103. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  104. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/contacts/common.py +0 -0
  105. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  106. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/crba.py +0 -0
  107. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  108. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/jacobian.py +0 -0
  109. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/rbda/rnea.py +0 -0
  110. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/terrain/__init__.py +0 -0
  111. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/terrain/terrain.py +0 -0
  112. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/typing.py +0 -0
  113. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/utils/__init__.py +0 -0
  114. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  115. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/utils/tracing.py +0 -0
  116. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim/utils/wrappers.py +0 -0
  117. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  118. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim.egg-info/requires.txt +0 -0
  119. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/src/jaxsim.egg-info/top_level.txt +0 -0
  120. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/__init__.py +0 -0
  121. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_com.py +0 -0
  122. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_contact.py +0 -0
  123. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_data.py +0 -0
  124. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_frame.py +0 -0
  125. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_joint.py +0 -0
  126. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_link.py +0 -0
  127. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_api_model.py +0 -0
  128. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_benchmark.py +0 -0
  129. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_contact.py +0 -0
  130. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_exceptions.py +0 -0
  131. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_meshes.py +0 -0
  132. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_pytree.py +0 -0
  133. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/test_visualizer.py +0 -0
  134. {jaxsim-0.6.2.dev107 → jaxsim-0.6.2.dev156}/tests/utils_idyntree.py +0 -0
@@ -35,7 +35,7 @@ jobs:
35
35
  pixi update --json | pixi exec pixi-diff-to-markdown --explicit-column > diff.md
36
36
 
37
37
  - name: Test project against updated pixi
38
- run: pixi run --environment tasks-cpu test
38
+ run: pixi run --environment default test
39
39
  env:
40
40
  PY_COLORS: "1"
41
41
  JAX_PLATFORM_NAME: cpu
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jaxsim
3
- Version: 0.6.2.dev107
3
+ Version: 0.6.2.dev156
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>, Filippo Luca Ferretti <filippoluca.ferretti@outlook.com>
6
6
  Maintainer-email: Filippo Luca Ferretti <filippo.ferretti@iit.it>, Alessandro Croci <alessandro.croci@iit.it>
@@ -98,8 +98,8 @@ Requires-Dist: jaxsim[style,testing,viz]; extra == "all"
98
98
  <br/>
99
99
  <table>
100
100
  <tr>
101
- <th><img src="https://github.com/user-attachments/assets/f9661fae-9a85-41dd-9a58-218758ec8c9c" width="500"></th>
102
- <th><img src="https://github.com/user-attachments/assets/62b88b9d-45ea-4d22-99d2-f24fc842dd29" width="500"></th>
101
+ <th><img src="https://github.com/user-attachments/assets/f9661fae-9a85-41dd-9a58-218758ec8c9c"></th>
102
+ <th><img src="https://github.com/user-attachments/assets/62b88b9d-45ea-4d22-99d2-f24fc842dd29"></th>
103
103
  </tr>
104
104
  </table>
105
105
  <br/>
@@ -119,13 +119,16 @@ Requires-Dist: jaxsim[style,testing,viz]; extra == "all"
119
119
 
120
120
 
121
121
  ```python
122
+ import pathlib
123
+
124
+ import icub_models
122
125
  import jax.numpy as jnp
126
+
123
127
  import jaxsim.api as js
124
- import icub_models
125
- import pathlib
126
128
 
127
129
  # Load the iCub model
128
130
  model_path = icub_models.get_model_file("iCubGazeboV2_5")
131
+
129
132
  joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
130
133
  'l_shoulder_roll', 'l_shoulder_yaw', 'l_elbow', 'r_shoulder_pitch',
131
134
  'r_shoulder_roll', 'r_shoulder_yaw', 'r_elbow', 'l_hip_pitch',
@@ -135,33 +138,45 @@ joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
135
138
 
136
139
  # Build and reduce the model
137
140
  model_description = pathlib.Path(model_path)
141
+
138
142
  full_model = js.model.JaxSimModel.build_from_model_description(
139
143
  model_description=model_description, time_step=0.0001, is_urdf=True
140
144
  )
145
+
141
146
  model = js.model.reduce(model=full_model, considered_joints=joints)
142
147
 
148
+ # Get the number of degrees of freedom
143
149
  ndof = model.dofs()
150
+
144
151
  # Initialize data and simulation
145
152
  # Note that the default data representation is mixed velocity representation
146
- data = js.data.JaxSimModelData.build(model=model,base_position=jnp.array([0.0, 0.0, 1.0]))
153
+ data = js.data.JaxSimModelData.build(
154
+ model=model, base_position=jnp.array([0.0, 0.0, 1.0])
155
+ )
156
+
147
157
  T = jnp.arange(start=0, stop=1.0, step=model.time_step)
158
+
148
159
  tau = jnp.zeros(ndof)
149
160
 
150
161
  # Simulate
151
- for t in T:
152
- data = js.model.step(model=model, data=data, link_forces=None, joint_force_references=tau)
153
-
162
+ for _ in T:
163
+ data = js.model.step(
164
+ model=model, data=data, link_forces=None, joint_force_references=tau
165
+ )
154
166
  ```
155
167
 
156
168
  ### Using JaxSim as a multibody dynamics library
157
169
  ``` python
170
+ import pathlib
171
+
172
+ import icub_models
158
173
  import jax.numpy as jnp
174
+
159
175
  import jaxsim.api as js
160
- import icub_models
161
- import pathlib
162
176
 
163
177
  # Load the iCub model
164
178
  model_path = icub_models.get_model_file("iCubGazeboV2_5")
179
+
165
180
  joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
166
181
  'l_shoulder_roll', 'l_shoulder_yaw', 'l_elbow', 'r_shoulder_pitch',
167
182
  'r_shoulder_roll', 'r_shoulder_yaw', 'r_elbow', 'l_hip_pitch',
@@ -171,21 +186,31 @@ joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
171
186
 
172
187
  # Build and reduce the model
173
188
  model_description = pathlib.Path(model_path)
189
+
174
190
  full_model = js.model.JaxSimModel.build_from_model_description(
175
191
  model_description=model_description, time_step=0.0001, is_urdf=True
176
192
  )
193
+
177
194
  model = js.model.reduce(model=full_model, considered_joints=joints)
178
195
 
179
196
  # Initialize model data
180
197
  data = js.data.JaxSimModelData.build(
181
198
  model=model,
182
- base_position=jnp.array([0.0, 0.0, 1.0],
199
+ base_position=jnp.array([0.0, 0.0, 1.0]),
183
200
  )
184
201
 
185
202
  # Frame and dynamics computations
186
203
  frame_index = js.frame.name_to_idx(model=model, frame_name="l_foot")
187
- W_H_F = js.frame.transform(model=model, data=data, frame_index=frame_index) # Frame transformation
188
- W_J_F = js.frame.jacobian(model=model, data=data, frame_index=frame_index) # Frame Jacobian
204
+
205
+ # Frame transformation
206
+ W_H_F = js.frame.transform(
207
+ model=model, data=data, frame_index=frame_index
208
+ )
209
+
210
+ # Frame Jacobian
211
+ W_J_F = js.frame.jacobian(
212
+ model=model, data=data, frame_index=frame_index
213
+ )
189
214
 
190
215
  # Dynamics properties
191
216
  M = js.model.free_floating_mass_matrix(model=model, data=data) # Mass matrix
@@ -194,16 +219,15 @@ g = js.model.free_floating_gravity_forces(model=model, data=data) # Gravity for
194
219
  C = js.model.free_floating_coriolis_matrix(model=model, data=data) # Coriolis matrix
195
220
 
196
221
  # Print dynamics results
197
- print(f"M: shape={M.shape}, h: shape={h.shape}, g: shape={g.shape}, C: shape={C.shape}")
198
-
222
+ print(f"{M.shape=} \n{h.shape=} \n{g.shape=} \n{C.shape=}")
199
223
  ```
224
+
200
225
  ### Additional features
201
226
 
202
227
  - Full support for automatic differentiation of RBDAs (forward and reverse modes) with JAX.
203
228
  - Support for automatically differentiating against kinematics and dynamics parameters.
204
229
  - All fixed-step integrators are forward and reverse differentiable.
205
- - All variable-step integrators are forward differentiable.
206
- - Check the example folder for additional usecase !
230
+ - Check the example folder for additional use cases!
207
231
 
208
232
  [jax]: https://github.com/google/jax/
209
233
  [sdformat]: https://github.com/gazebosim/sdformat
@@ -335,23 +359,21 @@ The JaxSim API documentation is available at [jaxsim.readthedocs.io][readthedocs
335
359
 
336
360
  src/jaxsim
337
361
  |-- api..........................# Package containing the main functional APIs.
338
- | |-- com.py...................# |-- APIs for computing quantities related to the center of mass.
362
+ | |-- actuation_model.py.......# |-- APIs for computing quantities related to the actuation model.
339
363
  | |-- common.py................# |-- Common utilities used in the current package.
364
+ | |-- com.py...................# |-- APIs for computing quantities related to the center of mass.
365
+ | |-- contact_model.py.........# |-- APIs for computing quantities related to the contact model.
340
366
  | |-- contact.py...............# |-- APIs for computing quantities related to the collidable points.
341
367
  | |-- data.py..................# |-- Class storing the data of a simulated model.
342
368
  | |-- frame.py.................# |-- APIs for computing quantities related to additional frames.
369
+ | |-- integrators.py...........# |-- APIs for integrating the system dynamics.
343
370
  | |-- joint.py.................# |-- APIs for computing quantities related to the joints.
344
371
  | |-- kin_dyn_parameters.py....# |-- Class storing kinematic and dynamic parameters of a model.
345
372
  | |-- link.py..................# |-- APIs for computing quantities related to the links.
346
373
  | |-- model.py.................# |-- Class defining a simulated model and APIs for computing related quantities.
347
374
  | |-- ode.py...................# |-- APIs for computing quantities related to the system dynamics.
348
- | |-- ode_data.py..............# |-- Set of classes to store the data of the system dynamics.
349
375
  | `-- references.py............# `-- Helper class to create references (link forces and joint torques).
350
376
  |-- exceptions.py................# Module containing functions to raise exceptions from JIT-compiled functions.
351
- |-- integrators..................# Package containing the integrators used to simulate the system dynamics.
352
- | |-- common.py................# |-- Common utilities used in the current package.
353
- | |-- fixed_step.py............# |-- Fixed-step integrators (explicit Runge-Kutta schemes).
354
- | `-- variable_step.py.........# `-- Variable-step integrators (embedded Runge-Kutta schemes).
355
377
  |-- logging.py...................# Module containing logging utilities.
356
378
  |-- math.........................# Package containing mathematical utilities.
357
379
  | |-- adjoint.py...............# |-- APIs for creating and manipulating 6D transformations.
@@ -361,7 +383,8 @@ src/jaxsim
361
383
  | |-- quaternion.py............# |-- APIs for creating and manipulating quaternions.
362
384
  | |-- rotation.py..............# |-- APIs for creating and manipulating rotation matrices.
363
385
  | |-- skew.py..................# |-- APIs for creating and manipulating skew-symmetric matrices.
364
- | `-- transform.py.............# `-- APIs for creating and manipulating homogeneous transformations.
386
+ | |-- transform.py.............# |-- APIs for creating and manipulating homogeneous transformations.
387
+ | |-- utils.py.................# |-- Common utilities used in the current package.
365
388
  |-- mujoco.......................# Package containing utilities to interact with the Mujoco passive viewer.
366
389
  | |-- loaders.py...............# |-- Utilities for converting JaxSim models to Mujoco models.
367
390
  | |-- model.py.................# |-- Class providing high-level methods to compute quantities using Mujoco.
@@ -6,8 +6,8 @@
6
6
  <br/>
7
7
  <table>
8
8
  <tr>
9
- <th><img src="https://github.com/user-attachments/assets/f9661fae-9a85-41dd-9a58-218758ec8c9c" width="500"></th>
10
- <th><img src="https://github.com/user-attachments/assets/62b88b9d-45ea-4d22-99d2-f24fc842dd29" width="500"></th>
9
+ <th><img src="https://github.com/user-attachments/assets/f9661fae-9a85-41dd-9a58-218758ec8c9c"></th>
10
+ <th><img src="https://github.com/user-attachments/assets/62b88b9d-45ea-4d22-99d2-f24fc842dd29"></th>
11
11
  </tr>
12
12
  </table>
13
13
  <br/>
@@ -27,13 +27,16 @@
27
27
 
28
28
 
29
29
  ```python
30
+ import pathlib
31
+
32
+ import icub_models
30
33
  import jax.numpy as jnp
34
+
31
35
  import jaxsim.api as js
32
- import icub_models
33
- import pathlib
34
36
 
35
37
  # Load the iCub model
36
38
  model_path = icub_models.get_model_file("iCubGazeboV2_5")
39
+
37
40
  joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
38
41
  'l_shoulder_roll', 'l_shoulder_yaw', 'l_elbow', 'r_shoulder_pitch',
39
42
  'r_shoulder_roll', 'r_shoulder_yaw', 'r_elbow', 'l_hip_pitch',
@@ -43,33 +46,45 @@ joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
43
46
 
44
47
  # Build and reduce the model
45
48
  model_description = pathlib.Path(model_path)
49
+
46
50
  full_model = js.model.JaxSimModel.build_from_model_description(
47
51
  model_description=model_description, time_step=0.0001, is_urdf=True
48
52
  )
53
+
49
54
  model = js.model.reduce(model=full_model, considered_joints=joints)
50
55
 
56
+ # Get the number of degrees of freedom
51
57
  ndof = model.dofs()
58
+
52
59
  # Initialize data and simulation
53
60
  # Note that the default data representation is mixed velocity representation
54
- data = js.data.JaxSimModelData.build(model=model,base_position=jnp.array([0.0, 0.0, 1.0]))
61
+ data = js.data.JaxSimModelData.build(
62
+ model=model, base_position=jnp.array([0.0, 0.0, 1.0])
63
+ )
64
+
55
65
  T = jnp.arange(start=0, stop=1.0, step=model.time_step)
66
+
56
67
  tau = jnp.zeros(ndof)
57
68
 
58
69
  # Simulate
59
- for t in T:
60
- data = js.model.step(model=model, data=data, link_forces=None, joint_force_references=tau)
61
-
70
+ for _ in T:
71
+ data = js.model.step(
72
+ model=model, data=data, link_forces=None, joint_force_references=tau
73
+ )
62
74
  ```
63
75
 
64
76
  ### Using JaxSim as a multibody dynamics library
65
77
  ``` python
78
+ import pathlib
79
+
80
+ import icub_models
66
81
  import jax.numpy as jnp
82
+
67
83
  import jaxsim.api as js
68
- import icub_models
69
- import pathlib
70
84
 
71
85
  # Load the iCub model
72
86
  model_path = icub_models.get_model_file("iCubGazeboV2_5")
87
+
73
88
  joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
74
89
  'l_shoulder_roll', 'l_shoulder_yaw', 'l_elbow', 'r_shoulder_pitch',
75
90
  'r_shoulder_roll', 'r_shoulder_yaw', 'r_elbow', 'l_hip_pitch',
@@ -79,21 +94,31 @@ joints = ('torso_pitch', 'torso_roll', 'torso_yaw', 'l_shoulder_pitch',
79
94
 
80
95
  # Build and reduce the model
81
96
  model_description = pathlib.Path(model_path)
97
+
82
98
  full_model = js.model.JaxSimModel.build_from_model_description(
83
99
  model_description=model_description, time_step=0.0001, is_urdf=True
84
100
  )
101
+
85
102
  model = js.model.reduce(model=full_model, considered_joints=joints)
86
103
 
87
104
  # Initialize model data
88
105
  data = js.data.JaxSimModelData.build(
89
106
  model=model,
90
- base_position=jnp.array([0.0, 0.0, 1.0],
107
+ base_position=jnp.array([0.0, 0.0, 1.0]),
91
108
  )
92
109
 
93
110
  # Frame and dynamics computations
94
111
  frame_index = js.frame.name_to_idx(model=model, frame_name="l_foot")
95
- W_H_F = js.frame.transform(model=model, data=data, frame_index=frame_index) # Frame transformation
96
- W_J_F = js.frame.jacobian(model=model, data=data, frame_index=frame_index) # Frame Jacobian
112
+
113
+ # Frame transformation
114
+ W_H_F = js.frame.transform(
115
+ model=model, data=data, frame_index=frame_index
116
+ )
117
+
118
+ # Frame Jacobian
119
+ W_J_F = js.frame.jacobian(
120
+ model=model, data=data, frame_index=frame_index
121
+ )
97
122
 
98
123
  # Dynamics properties
99
124
  M = js.model.free_floating_mass_matrix(model=model, data=data) # Mass matrix
@@ -102,16 +127,15 @@ g = js.model.free_floating_gravity_forces(model=model, data=data) # Gravity for
102
127
  C = js.model.free_floating_coriolis_matrix(model=model, data=data) # Coriolis matrix
103
128
 
104
129
  # Print dynamics results
105
- print(f"M: shape={M.shape}, h: shape={h.shape}, g: shape={g.shape}, C: shape={C.shape}")
106
-
130
+ print(f"{M.shape=} \n{h.shape=} \n{g.shape=} \n{C.shape=}")
107
131
  ```
132
+
108
133
  ### Additional features
109
134
 
110
135
  - Full support for automatic differentiation of RBDAs (forward and reverse modes) with JAX.
111
136
  - Support for automatically differentiating against kinematics and dynamics parameters.
112
137
  - All fixed-step integrators are forward and reverse differentiable.
113
- - All variable-step integrators are forward differentiable.
114
- - Check the example folder for additional usecase !
138
+ - Check the example folder for additional use cases!
115
139
 
116
140
  [jax]: https://github.com/google/jax/
117
141
  [sdformat]: https://github.com/gazebosim/sdformat
@@ -243,23 +267,21 @@ The JaxSim API documentation is available at [jaxsim.readthedocs.io][readthedocs
243
267
 
244
268
  src/jaxsim
245
269
  |-- api..........................# Package containing the main functional APIs.
246
- | |-- com.py...................# |-- APIs for computing quantities related to the center of mass.
270
+ | |-- actuation_model.py.......# |-- APIs for computing quantities related to the actuation model.
247
271
  | |-- common.py................# |-- Common utilities used in the current package.
272
+ | |-- com.py...................# |-- APIs for computing quantities related to the center of mass.
273
+ | |-- contact_model.py.........# |-- APIs for computing quantities related to the contact model.
248
274
  | |-- contact.py...............# |-- APIs for computing quantities related to the collidable points.
249
275
  | |-- data.py..................# |-- Class storing the data of a simulated model.
250
276
  | |-- frame.py.................# |-- APIs for computing quantities related to additional frames.
277
+ | |-- integrators.py...........# |-- APIs for integrating the system dynamics.
251
278
  | |-- joint.py.................# |-- APIs for computing quantities related to the joints.
252
279
  | |-- kin_dyn_parameters.py....# |-- Class storing kinematic and dynamic parameters of a model.
253
280
  | |-- link.py..................# |-- APIs for computing quantities related to the links.
254
281
  | |-- model.py.................# |-- Class defining a simulated model and APIs for computing related quantities.
255
282
  | |-- ode.py...................# |-- APIs for computing quantities related to the system dynamics.
256
- | |-- ode_data.py..............# |-- Set of classes to store the data of the system dynamics.
257
283
  | `-- references.py............# `-- Helper class to create references (link forces and joint torques).
258
284
  |-- exceptions.py................# Module containing functions to raise exceptions from JIT-compiled functions.
259
- |-- integrators..................# Package containing the integrators used to simulate the system dynamics.
260
- | |-- common.py................# |-- Common utilities used in the current package.
261
- | |-- fixed_step.py............# |-- Fixed-step integrators (explicit Runge-Kutta schemes).
262
- | `-- variable_step.py.........# `-- Variable-step integrators (embedded Runge-Kutta schemes).
263
285
  |-- logging.py...................# Module containing logging utilities.
264
286
  |-- math.........................# Package containing mathematical utilities.
265
287
  | |-- adjoint.py...............# |-- APIs for creating and manipulating 6D transformations.
@@ -269,7 +291,8 @@ src/jaxsim
269
291
  | |-- quaternion.py............# |-- APIs for creating and manipulating quaternions.
270
292
  | |-- rotation.py..............# |-- APIs for creating and manipulating rotation matrices.
271
293
  | |-- skew.py..................# |-- APIs for creating and manipulating skew-symmetric matrices.
272
- | `-- transform.py.............# `-- APIs for creating and manipulating homogeneous transformations.
294
+ | |-- transform.py.............# |-- APIs for creating and manipulating homogeneous transformations.
295
+ | |-- utils.py.................# |-- Common utilities used in the current package.
273
296
  |-- mujoco.......................# Package containing utilities to interact with the Mujoco passive viewer.
274
297
  | |-- loaders.py...............# |-- Utilities for converting JaxSim models to Mujoco models.
275
298
  | |-- model.py.................# |-- Class providing high-level methods to compute quantities using Mujoco.
@@ -24,13 +24,13 @@ Alternatively, you can use `pypa/pip`_, preferably in a `virtual environment`_:
24
24
  pip install jaxsim
25
25
 
26
26
  Have a look to `pyproject.toml`_ for a complete list of optional dependencies.
27
- You can install all of them by specifying ``jaxsim[all]`.
28
-
27
+ You can install all by using ``pip install "jaxsim[all]"``.
29
28
  .. note::
30
29
 
31
30
  If you need GPU support, please follow the official `installation instruction`_ of JAX.
32
31
 
33
32
  .. _conda: https://anaconda.org/
33
+ .. _pyproject.toml: https://github.com/ami-iit/jaxsim/blob/main/pyproject.toml
34
34
  .. _pypa/pip: https://github.com/pypa/pip/
35
35
  .. _virtual environment: https://docs.python.org/3.8/tutorial/venv.html
36
36
  .. _installation instruction: https://github.com/google/jax/#installation
@@ -80,7 +80,6 @@ Features
80
80
  :caption: JAXsim API
81
81
 
82
82
  modules/api
83
- modules/integrators
84
83
  modules/math
85
84
  modules/mujoco
86
85
  modules/parsers
@@ -10,13 +10,14 @@ Functional API
10
10
  data
11
11
  contact
12
12
  kin_dyn_parameters
13
+ integrators
13
14
  joint
14
15
  link
15
16
  frame
16
17
  com
17
- ode_data
18
18
  ode
19
19
  references
20
+ actuation_model
20
21
  common
21
22
 
22
23
 
@@ -27,6 +28,10 @@ Model
27
28
  :members:
28
29
  :no-index:
29
30
 
31
+ .. automodule:: jaxsim.api.actuation_model
32
+ :members:
33
+ :no-index:
34
+
30
35
  Data
31
36
  ~~~~
32
37
 
@@ -57,29 +62,33 @@ Joint
57
62
 
58
63
  Link
59
64
  ~~~~~
65
+
60
66
  .. automodule:: jaxsim.api.link
61
67
  :members:
62
68
  :no-index:
63
69
 
64
70
  Frame
65
71
  ~~~~~
72
+
66
73
  .. automodule:: jaxsim.api.frame
67
74
  :members:
68
75
  :no-index:
69
76
 
70
77
  CoM
71
78
  ~~~
79
+
72
80
  .. automodule:: jaxsim.api.com
73
81
  :members:
74
82
  :no-index:
75
83
 
76
- ODE Data
77
- ~~~~~~~~
84
+ Integration
85
+ ~~~~~~~~~~~
78
86
 
79
- .. automodule:: jaxsim.api.ode_data
87
+ .. automodule:: jaxsim.api.integrators
80
88
  :members:
81
89
  :no-index:
82
90
 
91
+
83
92
  .. automodule:: jaxsim.api.ode
84
93
  :members:
85
94
  :no-index:
@@ -11,6 +11,8 @@ This module provides a set of algorithms for rigid body dynamics.
11
11
  aba
12
12
  collidable_points
13
13
  contacts.soft
14
+ contacts.rigid
15
+ contacts.relaxed_rigid
14
16
  crba
15
17
  forward_kinematics
16
18
  jacobian
@@ -30,6 +32,14 @@ Contact Models
30
32
  :members:
31
33
  :no-index:
32
34
 
35
+ .. automodule:: jaxsim.rbda.contacts.rigid
36
+ :members:
37
+ :no-index:
38
+
39
+ .. automodule:: jaxsim.rbda.contacts.relaxed_rigid
40
+ :members:
41
+ :no-index:
42
+
33
43
  Utilities
34
44
  ~~~~~~~~~
35
45
 
@@ -10,8 +10,9 @@ Typing
10
10
  Int
11
11
  Float
12
12
  Vector
13
- FloatJax
14
- IntJax
15
- ArrayJax
16
- VectorJax
17
- MatrixJax
13
+ BoolLike
14
+ FloatLike
15
+ IntLike
16
+ ArrayLike
17
+ VectorLike
18
+ MatrixLike
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:63a5fde0103d75e0b9252a3431d3352c29c6bd63a3f04e2b4b990865e16be4c4
3
+ size 508858
@@ -284,4 +284,4 @@ cuda-version = "12.*"
284
284
  jaxlib = { version = "*", build = "*cuda*" }
285
285
 
286
286
  [tool.pixi.feature.gpu.tasks]
287
- test-gpu = { cmd = "pytest --gpu-only", depends_on = ["pipcheck"] }
287
+ test-gpu = { cmd = "pytest --gpu-only", depends-on = ["pipcheck"] }
@@ -0,0 +1,21 @@
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
5
+
6
+ TYPE_CHECKING = False
7
+ if TYPE_CHECKING:
8
+ from typing import Tuple
9
+ from typing import Union
10
+
11
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
12
+ else:
13
+ VERSION_TUPLE = object
14
+
15
+ version: str
16
+ __version__: str
17
+ __version_tuple__: VERSION_TUPLE
18
+ version_tuple: VERSION_TUPLE
19
+
20
+ __version__ = version = '0.6.2.dev156'
21
+ __version_tuple__ = version_tuple = (0, 6, 2, 'dev156')