jaxsim 0.3.1.dev113__tar.gz → 0.3.1.dev121__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.3.1.dev113/src/jaxsim.egg-info → jaxsim-0.3.1.dev121}/PKG-INFO +116 -18
  2. jaxsim-0.3.1.dev113/PKG-INFO → jaxsim-0.3.1.dev121/README.md +80 -67
  3. jaxsim-0.3.1.dev121/pyproject.toml +220 -0
  4. jaxsim-0.3.1.dev121/setup.cfg +4 -0
  5. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/_version.py +2 -2
  6. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/mujoco/model.py +1 -1
  7. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/kinematic_graph.py +1 -1
  8. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/terrain/terrain.py +5 -4
  9. jaxsim-0.3.1.dev121/src/jaxsim.egg-info/PKG-INFO +335 -0
  10. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim.egg-info/SOURCES.txt +0 -2
  11. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim.egg-info/requires.txt +1 -10
  12. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_frame.py +1 -1
  13. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_link.py +6 -2
  14. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_model.py +1 -0
  15. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/utils_idyntree.py +1 -0
  16. jaxsim-0.3.1.dev113/README.md +0 -171
  17. jaxsim-0.3.1.dev113/pyproject.toml +0 -119
  18. jaxsim-0.3.1.dev113/setup.cfg +0 -88
  19. jaxsim-0.3.1.dev113/src/jaxsim.egg-info/not-zip-safe +0 -1
  20. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.devcontainer/Dockerfile +0 -0
  21. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.devcontainer/devcontainer.json +0 -0
  22. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.gitattributes +0 -0
  23. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.github/CODEOWNERS +0 -0
  24. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.github/workflows/ci_cd.yml +0 -0
  25. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.github/workflows/read_the_docs.yml +0 -0
  26. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.github/workflows/style.yml +0 -0
  27. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.gitignore +0 -0
  28. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.pre-commit-config.yaml +0 -0
  29. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/.readthedocs.yaml +0 -0
  30. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/CONTRIBUTING.md +0 -0
  31. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/LICENSE +0 -0
  32. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/Makefile +0 -0
  33. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/conf.py +0 -0
  34. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/examples.rst +0 -0
  35. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/guide/install.rst +0 -0
  36. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/index.rst +0 -0
  37. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/make.bat +0 -0
  38. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/api.rst +0 -0
  39. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/integrators.rst +0 -0
  40. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/math.rst +0 -0
  41. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/mujoco.rst +0 -0
  42. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/parsers.rst +0 -0
  43. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/rbda.rst +0 -0
  44. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/typing.rst +0 -0
  45. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/docs/modules/utils.rst +0 -0
  46. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/environment.yml +0 -0
  47. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/examples/.gitattributes +0 -0
  48. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/examples/.gitignore +0 -0
  49. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/examples/PD_controller.ipynb +0 -0
  50. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/examples/Parallel_computing.ipynb +0 -0
  51. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/examples/README.md +0 -0
  52. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/examples/assets/cartpole.urdf +0 -0
  53. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/pixi.lock +0 -0
  54. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/setup.py +0 -0
  55. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/__init__.py +0 -0
  56. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/__init__.py +0 -0
  57. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/com.py +0 -0
  58. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/common.py +0 -0
  59. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/contact.py +0 -0
  60. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/data.py +0 -0
  61. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/frame.py +0 -0
  62. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/joint.py +0 -0
  63. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  64. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/link.py +0 -0
  65. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/model.py +0 -0
  66. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/ode.py +0 -0
  67. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/ode_data.py +0 -0
  68. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/api/references.py +0 -0
  69. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/exceptions.py +0 -0
  70. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/integrators/__init__.py +0 -0
  71. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/integrators/common.py +0 -0
  72. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/integrators/fixed_step.py +0 -0
  73. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/integrators/variable_step.py +0 -0
  74. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/logging.py +0 -0
  75. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/__init__.py +0 -0
  76. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/adjoint.py +0 -0
  77. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/cross.py +0 -0
  78. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/inertia.py +0 -0
  79. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/joint_model.py +0 -0
  80. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/quaternion.py +0 -0
  81. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/rotation.py +0 -0
  82. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/skew.py +0 -0
  83. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/math/transform.py +0 -0
  84. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/mujoco/__init__.py +0 -0
  85. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/mujoco/__main__.py +0 -0
  86. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/mujoco/loaders.py +0 -0
  87. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/mujoco/visualizer.py +0 -0
  88. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/__init__.py +0 -0
  89. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  90. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  91. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  92. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/descriptions/link.py +0 -0
  93. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/descriptions/model.py +0 -0
  94. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/rod/__init__.py +0 -0
  95. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/rod/parser.py +0 -0
  96. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/parsers/rod/utils.py +0 -0
  97. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/__init__.py +0 -0
  98. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/aba.py +0 -0
  99. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/collidable_points.py +0 -0
  100. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  101. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/contacts/common.py +0 -0
  102. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/contacts/soft.py +0 -0
  103. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/crba.py +0 -0
  104. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  105. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/jacobian.py +0 -0
  106. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/rnea.py +0 -0
  107. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/rbda/utils.py +0 -0
  108. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/terrain/__init__.py +0 -0
  109. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/typing.py +0 -0
  110. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/utils/__init__.py +0 -0
  111. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  112. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/utils/tracing.py +0 -0
  113. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim/utils/wrappers.py +0 -0
  114. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  115. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/src/jaxsim.egg-info/top_level.txt +0 -0
  116. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/__init__.py +0 -0
  117. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/conftest.py +0 -0
  118. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_com.py +0 -0
  119. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_contact.py +0 -0
  120. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_data.py +0 -0
  121. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_api_joint.py +0 -0
  122. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_automatic_differentiation.py +0 -0
  123. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_contact.py +0 -0
  124. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_exceptions.py +0 -0
  125. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_pytree.py +0 -0
  126. {jaxsim-0.3.1.dev113 → jaxsim-0.3.1.dev121}/tests/test_simulations.py +0 -0
@@ -1,16 +1,44 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.3.1.dev113
4
- Home-page: https://github.com/ami-iit/jaxsim
5
- Author: Diego Ferigo
6
- Author-email: diego.ferigo@iit.it
7
- License: BSD
3
+ Version: 0.3.1.dev121
4
+ Summary: A differentiable physics engine and multibody dynamics library for control and robot learning.
5
+ Author-email: Diego Ferigo <dgferigo@gmail.com>
6
+ Maintainer-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippo.ferretti@iit.it>
7
+ License: BSD 3-Clause License
8
+
9
+ Copyright (c) 2022, Artificial and Mechanical Intelligence
10
+ All rights reserved.
11
+
12
+ Redistribution and use in source and binary forms, with or without
13
+ modification, are permitted provided that the following conditions are met:
14
+
15
+ 1. Redistributions of source code must retain the above copyright notice, this
16
+ list of conditions and the following disclaimer.
17
+
18
+ 2. Redistributions in binary form must reproduce the above copyright notice,
19
+ this list of conditions and the following disclaimer in the documentation
20
+ and/or other materials provided with the distribution.
21
+
22
+ 3. Neither the name of the copyright holder nor the names of its
23
+ contributors may be used to endorse or promote products derived from
24
+ this software without specific prior written permission.
25
+
26
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
30
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
34
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
+
8
37
  Project-URL: Changelog, https://github.com/ami-iit/jaxsim/releases
9
38
  Project-URL: Documentation, https://jaxsim.readthedocs.io
10
39
  Project-URL: Source, https://github.com/ami-iit/jaxsim
11
40
  Project-URL: Tracker, https://github.com/ami-iit/jaxsim/issues
12
41
  Keywords: physics,physics engine,jax,rigid body dynamics,featherstone,reinforcement learning,robot,robotics,sdf,urdf
13
- Platform: any
14
42
  Classifier: Development Status :: 4 - Beta
15
43
  Classifier: Framework :: Robot Framework
16
44
  Classifier: Intended Audience :: Developers
@@ -19,10 +47,10 @@ Classifier: License :: OSI Approved :: BSD License
19
47
  Classifier: Operating System :: POSIX :: Linux
20
48
  Classifier: Operating System :: MacOS
21
49
  Classifier: Operating System :: Microsoft
50
+ Classifier: Programming Language :: Python :: 3 :: Only
22
51
  Classifier: Programming Language :: Python :: 3.10
23
52
  Classifier: Programming Language :: Python :: 3.11
24
53
  Classifier: Programming Language :: Python :: 3.12
25
- Classifier: Programming Language :: Python :: 3 :: Only
26
54
  Classifier: Programming Language :: Python :: Implementation :: CPython
27
55
  Classifier: Topic :: Games/Entertainment :: Simulation
28
56
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -53,16 +81,7 @@ Requires-Dist: lxml; extra == "viz"
53
81
  Requires-Dist: mediapy; extra == "viz"
54
82
  Requires-Dist: mujoco>=3.0.0; extra == "viz"
55
83
  Provides-Extra: all
56
- Requires-Dist: black[jupyter]~=24.0; extra == "all"
57
- Requires-Dist: isort; extra == "all"
58
- Requires-Dist: pre-commit; extra == "all"
59
- Requires-Dist: idyntree>=12.2.1; extra == "all"
60
- Requires-Dist: pytest>=6.0; extra == "all"
61
- Requires-Dist: pytest-icdiff; extra == "all"
62
- Requires-Dist: robot-descriptions; extra == "all"
63
- Requires-Dist: lxml; extra == "all"
64
- Requires-Dist: mediapy; extra == "all"
65
- Requires-Dist: mujoco>=3.0.0; extra == "all"
84
+ Requires-Dist: jaxsim[style,testing,viz]; extra == "all"
66
85
 
67
86
  # JaxSim
68
87
 
@@ -95,6 +114,7 @@ Its design facilitates research and accelerates prototyping in the intersection
95
114
  - Provides all the quantities included in the Euler-Poincarè formulation of the equations of motion.
96
115
  - Supports body-fixed, inertial-fixed, and mixed [velocity representations][notation].
97
116
  - Exposes all the necessary quantities to develop controllers in centroidal coordinates.
117
+ - Supports running open-loop and full closed-loop control architectures on hardware accelerators.
98
118
 
99
119
  ### JaxSim for robot learning
100
120
 
@@ -148,7 +168,7 @@ You can install the project using [`pypa/pip`][pip], preferably in a [virtual en
148
168
  pip install jaxsim
149
169
  ```
150
170
 
151
- Check [`setup.cfg`](setup.cfg) for the complete list of optional dependencies.
171
+ Check [`pyproject.toml`](pyproject.toml) for the complete list of optional dependencies.
152
172
  You can obtain a full installation using `jaxsim[all]`.
153
173
 
154
174
  If you need GPU support, follow the official [installation instructions][jax_gpu] of JAX.
@@ -178,6 +198,71 @@ pip install --no-deps -e .
178
198
  [venv]: https://docs.python.org/3/tutorial/venv.html
179
199
  [jax_gpu]: https://github.com/google/jax/#installation
180
200
 
201
+ ## Overview
202
+
203
+ <details>
204
+ <summary>Structure of the Python package</summary>
205
+
206
+ ```
207
+ # tree -L 2 -I "__pycache__" -I "__init__*" -I "__main__*" src/jaxsim
208
+
209
+ src/jaxsim
210
+ |-- api..........................# Package containing the main functional APIs.
211
+ | |-- com.py...................# |-- APIs for computing quantities related to the center of mass.
212
+ | |-- common.py................# |-- Common utilities used in the current package.
213
+ | |-- contact.py...............# |-- APIs for computing quantities related to the collidable points.
214
+ | |-- data.py..................# |-- Class storing the data of a simulated model.
215
+ | |-- frame.py.................# |-- APIs for computing quantities related to additional frames.
216
+ | |-- joint.py.................# |-- APIs for computing quantities related to the joints.
217
+ | |-- kin_dyn_parameters.py....# |-- Class storing kinematic and dynamic parameters of a model.
218
+ | |-- link.py..................# |-- APIs for computing quantities related to the links.
219
+ | |-- model.py.................# |-- Class defining a simulated model and APIs for computing related quantities.
220
+ | |-- ode.py...................# |-- APIs for computing quantities related to the system dynamics.
221
+ | |-- ode_data.py..............# |-- Set of classes to store the data of the system dynamics.
222
+ | `-- references.py............# `-- Helper class to create references (link forces and joint torques).
223
+ |-- exceptions.py................# Module containing functions to raise exceptions from JIT-compiled functions.
224
+ |-- integrators..................# Package containing the integrators used to simulate the system dynamics.
225
+ | |-- common.py................# |-- Common utilities used in the current package.
226
+ | |-- fixed_step.py............# |-- Fixed-step integrators (explicit Runge-Kutta schemes).
227
+ | `-- variable_step.py.........# `-- Variable-step integrators (embedded Runge-Kutta schemes).
228
+ |-- logging.py...................# Module containing logging utilities.
229
+ |-- math.........................# Package containing mathematical utilities.
230
+ | |-- adjoint.py...............# |-- APIs for creating and manipulating 6D transformations.
231
+ | |-- cross.py.................# |-- APIs for computing cross products of 6D quantities.
232
+ | |-- inertia.py...............# |-- APIs for creating and manipulating 6D inertia matrices.
233
+ | |-- joint_model.py...........# |-- APIs defining the supported joint model and the corresponding transformations.
234
+ | |-- quaternion.py............# |-- APIs for creating and manipulating quaternions.
235
+ | |-- rotation.py..............# |-- APIs for creating and manipulating rotation matrices.
236
+ | |-- skew.py..................# |-- APIs for creating and manipulating skew-symmetric matrices.
237
+ | `-- transform.py.............# `-- APIs for creating and manipulating homogeneous transformations.
238
+ |-- mujoco.......................# Package containing utilities to interact with the Mujoco passive viewer.
239
+ | |-- loaders.py...............# |-- Utilities for converting JaxSim models to Mujoco models.
240
+ | |-- model.py.................# |-- Class providing high-level methods to compute quantities using Mujoco.
241
+ | `-- visualizer.py............# `-- Class that simplifies opening the passive viewer and recording videos.
242
+ |-- parsers......................# Package containing utilities to parse model descriptions (SDF and URDF models).
243
+ | |-- descriptions/............# |-- Package containing the intermediate representation of a model description.
244
+ | |-- kinematic_graph.py.......# |-- Definition of the kinematic graph associated with a parsed model description.
245
+ | `-- rod/.....................# `-- Package to create the intermediate representation from model descriptions using ROD.
246
+ |-- rbda.........................# Package containing the low-level rigid body dynamics algorithms.
247
+ | |-- aba.py...................# |-- The Articulated Body Algorithm.
248
+ | |-- collidable_points.py.....# |-- Kinematics of collidable points.
249
+ | |-- contacts/................# |-- Package containing the supported contact models.
250
+ | |-- crba.py..................# |-- The Composite Rigid Body Algorithm.
251
+ | |-- forward_kinematics.py....# |-- Forward kinematics of the model.
252
+ | |-- jacobian.py..............# |-- Full Jacobian and full Jacobian derivative.
253
+ | |-- rnea.py..................# |-- The Recursive Newton-Euler Algorithm.
254
+ | `-- utils.py.................# `-- Common utilities used in the current package.
255
+ |-- terrain......................# Package containing resources to specify the terrain.
256
+ | `-- terrain.py...............# `-- Classes defining the supported terrains.
257
+ |-- typing.py....................# Module containing type hints.
258
+ `-- utils........................# Package of common utilities.
259
+ |-- jaxsim_dataclass.py......# |-- Utilities to operate on pytree dataclasses.
260
+ |-- tracing.py...............# |-- Utilities to use when JAX is tracing functions.
261
+ `-- wrappers.py..............# `-- Utilities to wrap objects for specific use cases on pytree dataclass attributes.
262
+ ```
263
+
264
+ </details>
265
+
181
266
  ## Credits
182
267
 
183
268
  The RBDAs are based on the theory of the [Rigid Body Dynamics Algorithms][RBDA]
@@ -223,6 +308,19 @@ Please read the [contributing guide](./CONTRIBUTING.md) to get started.
223
308
  }
224
309
  ```
225
310
 
311
+ Theoretical aspects of JaxSim are based on Chapters 7 and 8 of the following Ph.D. thesis:
312
+
313
+ ```bibtex
314
+ @phdthesis{ferigo_phd_thesis_2022,
315
+ title = {Simulation Architectures for Reinforcement Learning applied to Robotics},
316
+ author = {Diego Ferigo},
317
+ school = {University of Manchester},
318
+ type = {PhD Thesis},
319
+ month = {July},
320
+ year = {2022},
321
+ }
322
+ ```
323
+
226
324
  ## People
227
325
 
228
326
  | Author | Maintainers |
@@ -1,69 +1,3 @@
1
- Metadata-Version: 2.1
2
- Name: jaxsim
3
- Version: 0.3.1.dev113
4
- Home-page: https://github.com/ami-iit/jaxsim
5
- Author: Diego Ferigo
6
- Author-email: diego.ferigo@iit.it
7
- License: BSD
8
- Project-URL: Changelog, https://github.com/ami-iit/jaxsim/releases
9
- Project-URL: Documentation, https://jaxsim.readthedocs.io
10
- Project-URL: Source, https://github.com/ami-iit/jaxsim
11
- Project-URL: Tracker, https://github.com/ami-iit/jaxsim/issues
12
- Keywords: physics,physics engine,jax,rigid body dynamics,featherstone,reinforcement learning,robot,robotics,sdf,urdf
13
- Platform: any
14
- Classifier: Development Status :: 4 - Beta
15
- Classifier: Framework :: Robot Framework
16
- Classifier: Intended Audience :: Developers
17
- Classifier: Intended Audience :: Science/Research
18
- Classifier: License :: OSI Approved :: BSD License
19
- Classifier: Operating System :: POSIX :: Linux
20
- Classifier: Operating System :: MacOS
21
- Classifier: Operating System :: Microsoft
22
- Classifier: Programming Language :: Python :: 3.10
23
- Classifier: Programming Language :: Python :: 3.11
24
- Classifier: Programming Language :: Python :: 3.12
25
- Classifier: Programming Language :: Python :: 3 :: Only
26
- Classifier: Programming Language :: Python :: Implementation :: CPython
27
- Classifier: Topic :: Games/Entertainment :: Simulation
28
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
29
- Classifier: Topic :: Scientific/Engineering :: Physics
30
- Classifier: Topic :: Software Development
31
- Requires-Python: >=3.10
32
- Description-Content-Type: text/markdown
33
- License-File: LICENSE
34
- Requires-Dist: coloredlogs
35
- Requires-Dist: jax>=0.4.13
36
- Requires-Dist: jaxlib>=0.4.13
37
- Requires-Dist: jaxlie>=1.3.0
38
- Requires-Dist: jax_dataclasses>=1.4.0
39
- Requires-Dist: pptree
40
- Requires-Dist: rod>=0.3.0
41
- Requires-Dist: typing_extensions; python_version < "3.12"
42
- Provides-Extra: style
43
- Requires-Dist: black[jupyter]~=24.0; extra == "style"
44
- Requires-Dist: isort; extra == "style"
45
- Requires-Dist: pre-commit; extra == "style"
46
- Provides-Extra: testing
47
- Requires-Dist: idyntree>=12.2.1; extra == "testing"
48
- Requires-Dist: pytest>=6.0; extra == "testing"
49
- Requires-Dist: pytest-icdiff; extra == "testing"
50
- Requires-Dist: robot-descriptions; extra == "testing"
51
- Provides-Extra: viz
52
- Requires-Dist: lxml; extra == "viz"
53
- Requires-Dist: mediapy; extra == "viz"
54
- Requires-Dist: mujoco>=3.0.0; extra == "viz"
55
- Provides-Extra: all
56
- Requires-Dist: black[jupyter]~=24.0; extra == "all"
57
- Requires-Dist: isort; extra == "all"
58
- Requires-Dist: pre-commit; extra == "all"
59
- Requires-Dist: idyntree>=12.2.1; extra == "all"
60
- Requires-Dist: pytest>=6.0; extra == "all"
61
- Requires-Dist: pytest-icdiff; extra == "all"
62
- Requires-Dist: robot-descriptions; extra == "all"
63
- Requires-Dist: lxml; extra == "all"
64
- Requires-Dist: mediapy; extra == "all"
65
- Requires-Dist: mujoco>=3.0.0; extra == "all"
66
-
67
1
  # JaxSim
68
2
 
69
3
  JaxSim is a **differentiable physics engine** and **multibody dynamics library** designed for applications in control and robot learning, implemented with JAX.
@@ -95,6 +29,7 @@ Its design facilitates research and accelerates prototyping in the intersection
95
29
  - Provides all the quantities included in the Euler-Poincarè formulation of the equations of motion.
96
30
  - Supports body-fixed, inertial-fixed, and mixed [velocity representations][notation].
97
31
  - Exposes all the necessary quantities to develop controllers in centroidal coordinates.
32
+ - Supports running open-loop and full closed-loop control architectures on hardware accelerators.
98
33
 
99
34
  ### JaxSim for robot learning
100
35
 
@@ -148,7 +83,7 @@ You can install the project using [`pypa/pip`][pip], preferably in a [virtual en
148
83
  pip install jaxsim
149
84
  ```
150
85
 
151
- Check [`setup.cfg`](setup.cfg) for the complete list of optional dependencies.
86
+ Check [`pyproject.toml`](pyproject.toml) for the complete list of optional dependencies.
152
87
  You can obtain a full installation using `jaxsim[all]`.
153
88
 
154
89
  If you need GPU support, follow the official [installation instructions][jax_gpu] of JAX.
@@ -178,6 +113,71 @@ pip install --no-deps -e .
178
113
  [venv]: https://docs.python.org/3/tutorial/venv.html
179
114
  [jax_gpu]: https://github.com/google/jax/#installation
180
115
 
116
+ ## Overview
117
+
118
+ <details>
119
+ <summary>Structure of the Python package</summary>
120
+
121
+ ```
122
+ # tree -L 2 -I "__pycache__" -I "__init__*" -I "__main__*" src/jaxsim
123
+
124
+ src/jaxsim
125
+ |-- api..........................# Package containing the main functional APIs.
126
+ | |-- com.py...................# |-- APIs for computing quantities related to the center of mass.
127
+ | |-- common.py................# |-- Common utilities used in the current package.
128
+ | |-- contact.py...............# |-- APIs for computing quantities related to the collidable points.
129
+ | |-- data.py..................# |-- Class storing the data of a simulated model.
130
+ | |-- frame.py.................# |-- APIs for computing quantities related to additional frames.
131
+ | |-- joint.py.................# |-- APIs for computing quantities related to the joints.
132
+ | |-- kin_dyn_parameters.py....# |-- Class storing kinematic and dynamic parameters of a model.
133
+ | |-- link.py..................# |-- APIs for computing quantities related to the links.
134
+ | |-- model.py.................# |-- Class defining a simulated model and APIs for computing related quantities.
135
+ | |-- ode.py...................# |-- APIs for computing quantities related to the system dynamics.
136
+ | |-- ode_data.py..............# |-- Set of classes to store the data of the system dynamics.
137
+ | `-- references.py............# `-- Helper class to create references (link forces and joint torques).
138
+ |-- exceptions.py................# Module containing functions to raise exceptions from JIT-compiled functions.
139
+ |-- integrators..................# Package containing the integrators used to simulate the system dynamics.
140
+ | |-- common.py................# |-- Common utilities used in the current package.
141
+ | |-- fixed_step.py............# |-- Fixed-step integrators (explicit Runge-Kutta schemes).
142
+ | `-- variable_step.py.........# `-- Variable-step integrators (embedded Runge-Kutta schemes).
143
+ |-- logging.py...................# Module containing logging utilities.
144
+ |-- math.........................# Package containing mathematical utilities.
145
+ | |-- adjoint.py...............# |-- APIs for creating and manipulating 6D transformations.
146
+ | |-- cross.py.................# |-- APIs for computing cross products of 6D quantities.
147
+ | |-- inertia.py...............# |-- APIs for creating and manipulating 6D inertia matrices.
148
+ | |-- joint_model.py...........# |-- APIs defining the supported joint model and the corresponding transformations.
149
+ | |-- quaternion.py............# |-- APIs for creating and manipulating quaternions.
150
+ | |-- rotation.py..............# |-- APIs for creating and manipulating rotation matrices.
151
+ | |-- skew.py..................# |-- APIs for creating and manipulating skew-symmetric matrices.
152
+ | `-- transform.py.............# `-- APIs for creating and manipulating homogeneous transformations.
153
+ |-- mujoco.......................# Package containing utilities to interact with the Mujoco passive viewer.
154
+ | |-- loaders.py...............# |-- Utilities for converting JaxSim models to Mujoco models.
155
+ | |-- model.py.................# |-- Class providing high-level methods to compute quantities using Mujoco.
156
+ | `-- visualizer.py............# `-- Class that simplifies opening the passive viewer and recording videos.
157
+ |-- parsers......................# Package containing utilities to parse model descriptions (SDF and URDF models).
158
+ | |-- descriptions/............# |-- Package containing the intermediate representation of a model description.
159
+ | |-- kinematic_graph.py.......# |-- Definition of the kinematic graph associated with a parsed model description.
160
+ | `-- rod/.....................# `-- Package to create the intermediate representation from model descriptions using ROD.
161
+ |-- rbda.........................# Package containing the low-level rigid body dynamics algorithms.
162
+ | |-- aba.py...................# |-- The Articulated Body Algorithm.
163
+ | |-- collidable_points.py.....# |-- Kinematics of collidable points.
164
+ | |-- contacts/................# |-- Package containing the supported contact models.
165
+ | |-- crba.py..................# |-- The Composite Rigid Body Algorithm.
166
+ | |-- forward_kinematics.py....# |-- Forward kinematics of the model.
167
+ | |-- jacobian.py..............# |-- Full Jacobian and full Jacobian derivative.
168
+ | |-- rnea.py..................# |-- The Recursive Newton-Euler Algorithm.
169
+ | `-- utils.py.................# `-- Common utilities used in the current package.
170
+ |-- terrain......................# Package containing resources to specify the terrain.
171
+ | `-- terrain.py...............# `-- Classes defining the supported terrains.
172
+ |-- typing.py....................# Module containing type hints.
173
+ `-- utils........................# Package of common utilities.
174
+ |-- jaxsim_dataclass.py......# |-- Utilities to operate on pytree dataclasses.
175
+ |-- tracing.py...............# |-- Utilities to use when JAX is tracing functions.
176
+ `-- wrappers.py..............# `-- Utilities to wrap objects for specific use cases on pytree dataclass attributes.
177
+ ```
178
+
179
+ </details>
180
+
181
181
  ## Credits
182
182
 
183
183
  The RBDAs are based on the theory of the [Rigid Body Dynamics Algorithms][RBDA]
@@ -223,6 +223,19 @@ Please read the [contributing guide](./CONTRIBUTING.md) to get started.
223
223
  }
224
224
  ```
225
225
 
226
+ Theoretical aspects of JaxSim are based on Chapters 7 and 8 of the following Ph.D. thesis:
227
+
228
+ ```bibtex
229
+ @phdthesis{ferigo_phd_thesis_2022,
230
+ title = {Simulation Architectures for Reinforcement Learning applied to Robotics},
231
+ author = {Diego Ferigo},
232
+ school = {University of Manchester},
233
+ type = {PhD Thesis},
234
+ month = {July},
235
+ year = {2022},
236
+ }
237
+ ```
238
+
226
239
  ## People
227
240
 
228
241
  | Author | Maintainers |
@@ -0,0 +1,220 @@
1
+ [project]
2
+ name = "jaxsim"
3
+ dynamic = ["version"]
4
+ requires-python = ">= 3.10"
5
+ description = "A differentiable physics engine and multibody dynamics library for control and robot learning."
6
+ authors = [
7
+ { name = "Diego Ferigo", email = "dgferigo@gmail.com" },
8
+ ]
9
+ maintainers = [
10
+ { name = "Diego Ferigo", email = "dgferigo@gmail.com" },
11
+ { name = "Filippo Luca Ferretti", email = "filippo.ferretti@iit.it" },
12
+ ]
13
+ license.file = "LICENSE"
14
+ keywords = [
15
+ "physics",
16
+ "physics engine",
17
+ "jax",
18
+ "rigid body dynamics",
19
+ "featherstone",
20
+ "reinforcement learning",
21
+ "robot",
22
+ "robotics",
23
+ "sdf",
24
+ "urdf",
25
+ ]
26
+ classifiers = [
27
+ "Development Status :: 4 - Beta",
28
+ "Framework :: Robot Framework",
29
+ "Intended Audience :: Developers",
30
+ "Intended Audience :: Science/Research",
31
+ "License :: OSI Approved :: BSD License",
32
+ "Operating System :: POSIX :: Linux",
33
+ "Operating System :: MacOS",
34
+ "Operating System :: Microsoft",
35
+ "Programming Language :: Python :: 3 :: Only",
36
+ "Programming Language :: Python :: 3.10",
37
+ "Programming Language :: Python :: 3.11",
38
+ "Programming Language :: Python :: 3.12",
39
+ "Programming Language :: Python :: Implementation :: CPython",
40
+ "Topic :: Games/Entertainment :: Simulation",
41
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
42
+ "Topic :: Scientific/Engineering :: Physics",
43
+ "Topic :: Software Development",
44
+ ]
45
+ dependencies = [
46
+ "coloredlogs",
47
+ "jax >= 0.4.13",
48
+ "jaxlib >= 0.4.13",
49
+ "jaxlie >= 1.3.0",
50
+ "jax_dataclasses >= 1.4.0",
51
+ "pptree",
52
+ "rod >= 0.3.0",
53
+ "typing_extensions ; python_version < '3.12'",
54
+ ]
55
+
56
+ [project.optional-dependencies]
57
+ style = [
58
+ "black[jupyter] ~= 24.0",
59
+ "isort",
60
+ "pre-commit",
61
+ ]
62
+ testing = [
63
+ "idyntree >= 12.2.1",
64
+ "pytest >=6.0",
65
+ "pytest-icdiff",
66
+ "robot-descriptions",
67
+ ]
68
+ viz = [
69
+ "lxml",
70
+ "mediapy",
71
+ "mujoco >= 3.0.0",
72
+ ]
73
+ all = [
74
+ "jaxsim[style,testing,viz]",
75
+ ]
76
+
77
+ [project.readme]
78
+ file = "README.md"
79
+ content-type = "text/markdown"
80
+
81
+ [project.urls]
82
+ Changelog = "https://github.com/ami-iit/jaxsim/releases"
83
+ Documentation = "https://jaxsim.readthedocs.io"
84
+ Source = "https://github.com/ami-iit/jaxsim"
85
+ Tracker = "https://github.com/ami-iit/jaxsim/issues"
86
+
87
+ # ===========
88
+ # Build tools
89
+ # ===========
90
+
91
+ [build-system]
92
+ build-backend = "setuptools.build_meta"
93
+ requires = [
94
+ "setuptools>=64",
95
+ "setuptools-scm[toml]>=8",
96
+ "wheel",
97
+ ]
98
+
99
+ [tool.setuptools]
100
+ package-dir = { "" = "src" }
101
+
102
+ [tool.setuptools_scm]
103
+ local_scheme = "dirty-tag"
104
+ version_file = "src/jaxsim/_version.py"
105
+
106
+ # =================
107
+ # Style and testing
108
+ # =================
109
+
110
+ [tool.black]
111
+ line-length = 88
112
+
113
+ [tool.isort]
114
+ multi_line_output = 3
115
+ profile = "black"
116
+
117
+ [tool.pytest.ini_options]
118
+ addopts = "-rsxX -v --strict-markers"
119
+ minversion = "6.0"
120
+ testpaths = [
121
+ "tests",
122
+ ]
123
+
124
+ # ==================
125
+ # Ruff configuration
126
+ # ==================
127
+
128
+ [tool.ruff]
129
+ exclude = [
130
+ ".git",
131
+ ".pytest_cache",
132
+ ".ruff_cache",
133
+ ".vscode",
134
+ ".devcontainer",
135
+ "__pycache__",
136
+ ]
137
+ preview = true
138
+
139
+ [tool.ruff.lint]
140
+ # https://docs.astral.sh/ruff/rules/
141
+ select = [
142
+ "B",
143
+ "E",
144
+ "F",
145
+ "I",
146
+ "W",
147
+ "RUF",
148
+ "YTT",
149
+ ]
150
+
151
+ ignore = [
152
+ "B008", # Function call in default argument
153
+ "B024", # Abstract base class without abstract methods
154
+ "E402", # Module level import not at top of file
155
+ "E501", # Line too long
156
+ "E731", # Do not assign a `lambda` expression, use a `def`
157
+ "E741", # Ambiguous variable name
158
+ "F841", # Local variable is assigned to but never used
159
+ "I001", # Import block is unsorted or unformatted
160
+ "RUF003", # Ambigous unicode character in comment
161
+ ]
162
+
163
+ [tool.ruff.lint.per-file-ignores]
164
+ # Ignore `E402` (import violations) in all `__init__.py` files
165
+ "**/{tests,docs,tools}/*" = ["E402"]
166
+ "**/{tests}/*" = ["B007"]
167
+ "__init__.py" = ["F401"]
168
+ "docs/conf.py" = ["F401"]
169
+
170
+ # ==================
171
+ # Pixi configuration
172
+ # ==================
173
+
174
+ [tool.pixi.project]
175
+ channels = ["conda-forge"]
176
+ platforms = ["linux-64", "osx-arm64", "osx-64"]
177
+
178
+ [tool.pixi.dependencies]
179
+ coloredlogs = "*"
180
+ jax = "*"
181
+ jax-dataclasses = "*"
182
+ jaxlib = "*"
183
+ jaxlie = "*"
184
+ lxml = "*"
185
+ mediapy = "*"
186
+ mujoco = "*"
187
+ notebook = "*"
188
+ pptree = "*"
189
+ rod = "*"
190
+ sdformat14 = "*"
191
+ typing_extensions = "*"
192
+
193
+ [tool.pixi.feature.test.tasks]
194
+ examples = { cmd = "jupyter notebook ./examples" }
195
+ pipcheck = "pip check"
196
+ test = { cmd = "pytest", depends_on = ["pipcheck"] }
197
+
198
+ [tool.pixi.feature.test.dependencies]
199
+ black = "24.*"
200
+ idyntree = "*"
201
+ isort = "*"
202
+ pip = "*"
203
+ pre-commit = "*"
204
+ pytest = "*"
205
+ pytest-icdiff = "*"
206
+ robot_descriptions = "*"
207
+
208
+ [tool.pixi.feature.gpu]
209
+ dependencies = { cuda-version = "12.*", cuda-cupti = "*", jaxlib = "**cuda*" }
210
+ platforms = ["linux-64"]
211
+ system-requirements = { cuda = "12.1" }
212
+
213
+ [tool.pixi.pypi-dependencies]
214
+ jaxsim = { path = "./", editable = true }
215
+
216
+ [tool.pixi.environments]
217
+ default = { solve-group = "cpugroup" }
218
+ gpu = { features = ["gpu"], solve-group = "gpugroup" }
219
+ test-cpu = { features = ["test"], solve-group = "cpugroup" }
220
+ test-gpu = { features = ["test", "gpu"], solve-group = "gpugroup" }
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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.dev113'
16
- __version_tuple__ = version_tuple = (0, 3, 1, 'dev113')
15
+ __version__ = version = '0.3.1.dev121'
16
+ __version_tuple__ = version_tuple = (0, 3, 1, 'dev121')
@@ -378,7 +378,7 @@ class MujocoModelHelper:
378
378
  for i in range(self.joint_dofs(joint_name=joint_name))
379
379
  ]
380
380
  )
381
- for idx, joint_name in zip(idxs, joint_names)
381
+ for idx, joint_name in zip(idxs, joint_names, strict=True)
382
382
  ]
383
383
  ).squeeze()
384
384
  )
@@ -797,7 +797,7 @@ class KinematicGraphTransforms:
797
797
  self._transform_cache.clear()
798
798
 
799
799
  # Update initial joint positions.
800
- for joint_name, position in zip(joint_names, s):
800
+ for joint_name, position in zip(joint_names, s, strict=True):
801
801
  self._initial_joint_positions[joint_name] = position
802
802
 
803
803
  def transform(self, name: str) -> npt.NDArray:
@@ -5,6 +5,7 @@ import dataclasses
5
5
 
6
6
  import jax.numpy as jnp
7
7
  import jax_dataclasses
8
+ import numpy as np
8
9
 
9
10
  import jaxsim.typing as jtp
10
11
 
@@ -149,10 +150,10 @@ class PlaneTerrain(FlatTerrain):
149
150
  return False
150
151
 
151
152
  if not (
152
- jnp.allclose(self.z, other.z)
153
- and jnp.allclose(
154
- jnp.array(self.plane_normal, dtype=float),
155
- jnp.array(other.plane_normal, dtype=float),
153
+ np.allclose(self.z, other.z)
154
+ and np.allclose(
155
+ np.array(self.plane_normal, dtype=float),
156
+ np.array(other.plane_normal, dtype=float),
156
157
  )
157
158
  ):
158
159
  return False