jaxsim 0.7.1.dev18__tar.gz → 0.7.1.dev32__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 (136) hide show
  1. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/workflows/gpu_benchmark.yml +19 -14
  2. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/PKG-INFO +1 -1
  3. jaxsim-0.7.1.dev32/pixi.lock +3 -0
  4. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/pyproject.toml +1 -0
  5. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/_version.py +2 -2
  6. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/kin_dyn_parameters.py +9 -3
  7. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/model.py +23 -9
  8. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim.egg-info/PKG-INFO +1 -1
  9. jaxsim-0.7.1.dev18/pixi.lock +0 -3
  10. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.devcontainer/Dockerfile +0 -0
  11. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.devcontainer/devcontainer.json +0 -0
  12. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.gitattributes +0 -0
  13. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/CODEOWNERS +0 -0
  14. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/dependabot.yml +0 -0
  15. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/release.yml +0 -0
  16. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/workflows/ci_cd.yml +0 -0
  17. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/workflows/pixi.yml +0 -0
  18. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.github/workflows/read_the_docs.yml +0 -0
  19. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.gitignore +0 -0
  20. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.pre-commit-config.yaml +0 -0
  21. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/.readthedocs.yaml +0 -0
  22. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/CONTRIBUTING.md +0 -0
  23. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/LICENSE +0 -0
  24. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/README.md +0 -0
  25. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/Makefile +0 -0
  26. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/conf.py +0 -0
  27. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/examples.rst +0 -0
  28. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/guide/configuration.rst +0 -0
  29. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/guide/install.rst +0 -0
  30. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/index.rst +0 -0
  31. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/make.bat +0 -0
  32. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/api.rst +0 -0
  33. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/math.rst +0 -0
  34. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/mujoco.rst +0 -0
  35. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/parsers.rst +0 -0
  36. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/rbda.rst +0 -0
  37. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/typing.rst +0 -0
  38. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/docs/modules/utils.rst +0 -0
  39. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/environment.yml +0 -0
  40. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/.gitattributes +0 -0
  41. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/.gitignore +0 -0
  42. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/README.md +0 -0
  43. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/assets/build_cartpole_urdf.py +0 -0
  44. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/assets/cartpole.urdf +0 -0
  45. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
  46. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/jaxsim_as_physics_engine.ipynb +0 -0
  47. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
  48. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
  49. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/setup.cfg +0 -0
  50. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/__init__.py +0 -0
  51. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/__init__.py +0 -0
  52. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/actuation_model.py +0 -0
  53. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/com.py +0 -0
  54. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/common.py +0 -0
  55. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/contact.py +0 -0
  56. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/data.py +0 -0
  57. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/frame.py +0 -0
  58. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/integrators.py +0 -0
  59. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/joint.py +0 -0
  60. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/link.py +0 -0
  61. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/ode.py +0 -0
  62. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/api/references.py +0 -0
  63. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/exceptions.py +0 -0
  64. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/logging.py +0 -0
  65. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/__init__.py +0 -0
  66. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/adjoint.py +0 -0
  67. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/cross.py +0 -0
  68. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/inertia.py +0 -0
  69. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/joint_model.py +0 -0
  70. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/quaternion.py +0 -0
  71. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/rotation.py +0 -0
  72. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/skew.py +0 -0
  73. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/transform.py +0 -0
  74. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/math/utils.py +0 -0
  75. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/mujoco/__init__.py +0 -0
  76. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/mujoco/__main__.py +0 -0
  77. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/mujoco/loaders.py +0 -0
  78. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/mujoco/model.py +0 -0
  79. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/mujoco/utils.py +0 -0
  80. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/mujoco/visualizer.py +0 -0
  81. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/__init__.py +0 -0
  82. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  83. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  84. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  85. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/descriptions/link.py +0 -0
  86. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/descriptions/model.py +0 -0
  87. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  88. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/rod/__init__.py +0 -0
  89. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/rod/meshes.py +0 -0
  90. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/rod/parser.py +0 -0
  91. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/parsers/rod/utils.py +0 -0
  92. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/__init__.py +0 -0
  93. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/aba.py +0 -0
  94. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/actuation/__init__.py +0 -0
  95. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/actuation/common.py +0 -0
  96. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/collidable_points.py +0 -0
  97. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  98. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/contacts/common.py +0 -0
  99. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  100. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  101. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/contacts/soft.py +0 -0
  102. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/crba.py +0 -0
  103. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  104. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/jacobian.py +0 -0
  105. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/rnea.py +0 -0
  106. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/rbda/utils.py +0 -0
  107. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/terrain/__init__.py +0 -0
  108. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/terrain/terrain.py +0 -0
  109. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/typing.py +0 -0
  110. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/utils/__init__.py +0 -0
  111. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  112. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/utils/tracing.py +0 -0
  113. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim/utils/wrappers.py +0 -0
  114. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  115. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  116. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim.egg-info/requires.txt +0 -0
  117. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/src/jaxsim.egg-info/top_level.txt +0 -0
  118. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/__init__.py +0 -0
  119. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/conftest.py +0 -0
  120. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_actuation.py +0 -0
  121. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_com.py +0 -0
  122. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_contact.py +0 -0
  123. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_data.py +0 -0
  124. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_frame.py +0 -0
  125. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_joint.py +0 -0
  126. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_link.py +0 -0
  127. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_model.py +0 -0
  128. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_api_model_hw_parametrization.py +0 -0
  129. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_automatic_differentiation.py +0 -0
  130. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_benchmark.py +0 -0
  131. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_exceptions.py +0 -0
  132. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_meshes.py +0 -0
  133. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_pytree.py +0 -0
  134. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_simulations.py +0 -0
  135. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/test_visualizer.py +0 -0
  136. {jaxsim-0.7.1.dev18 → jaxsim-0.7.1.dev32}/tests/utils_idyntree.py +0 -0
@@ -16,29 +16,28 @@ jobs:
16
16
  benchmark:
17
17
  runs-on: self-hosted
18
18
  container:
19
- image: ghcr.io/nvidia/jax@sha256:fdc493f32727405514caaecd9f0ea508a56cf645424cc66e03fedd8141c493bb
20
- options: --rm --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864
19
+ image: ghcr.io/prefix-dev/pixi:0.46.0-noble@sha256:c12bcbe8ba5dfd71867495d3471b95a6993b79cc7de7eafec016f8f59e4e4961
20
+ options: --rm --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 -e "TERM=xterm-256color"
21
21
 
22
22
  steps:
23
+ - name: Install Git and Git-LFS
24
+ run: |
25
+ apt update && apt install -y git git-lfs
26
+
23
27
  - name: Checkout repository
24
28
  uses: actions/checkout@v4
29
+ with:
30
+ lfs: true
31
+ fetch-depth: 0
25
32
 
26
- - name: Set up environment
27
- run: |
28
- pip install .[all]
29
-
30
- - name: Install Gazebo SDF
33
+ - name: Fetch pixi.lock from LFS
31
34
  run: |
32
- apt update && apt install -y lsb-release wget
33
- sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
34
- wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add -
35
- apt-get update
36
- apt install -y libsdformat14-dev libsdformat14
35
+ git config --global safe.directory /__w/jaxsim/jaxsim
36
+ git lfs checkout pixi.lock
37
37
 
38
38
  - name: Get main branch SHA
39
39
  id: get-main-branch-sha
40
40
  run: |
41
- git config --global --add safe.directory /__w/jaxsim/jaxsim
42
41
  SHA=$(git rev-parse origin/main)
43
42
  echo "sha=$SHA" >> $GITHUB_OUTPUT
44
43
 
@@ -49,9 +48,15 @@ jobs:
49
48
  path: ./cache
50
49
  key: ${{ steps.get-main-branch-sha.outputs.sha }}-${{ runner.os }}-benchmark
51
50
 
51
+ - name: Ensure version file is written
52
+ run: |
53
+ pixi run --frozen --environment gpu python -m setuptools_scm --force-write-version-file
54
+
52
55
  - name: Run benchmark and store result
53
56
  run: |
54
- pytest tests/test_benchmark.py --gpu-only --batch-size 128 --benchmark-only --benchmark-json output.json
57
+ pixi run --frozen --environment gpu benchmark --batch-size 128 --benchmark-json output.json
58
+ env:
59
+ PY_COLORS: "1"
55
60
 
56
61
  - name: Compare benchmark results with main branch
57
62
  uses: benchmark-action/github-action-benchmark@v1.20.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxsim
3
- Version: 0.7.1.dev18
3
+ Version: 0.7.1.dev32
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>
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cd22e2f700d17caf1b56d5896009d715c3412de25b7fd9361197dba51061a38a
3
+ size 493834
@@ -262,6 +262,7 @@ pytest = "*"
262
262
  pytest-benchmark = "*"
263
263
  pytest-icdiff = "*"
264
264
  robot_descriptions = ">=1.16.0"
265
+ setuptools_scm = ">=8.3.1,<9"
265
266
 
266
267
  # ----------------
267
268
  # feature.examples
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.7.1.dev18'
21
- __version_tuple__ = version_tuple = (0, 7, 1, 'dev18')
20
+ __version__ = version = '0.7.1.dev32'
21
+ __version_tuple__ = version_tuple = (0, 7, 1, 'dev32')
@@ -910,9 +910,9 @@ class HwLinkMetadata(JaxsimDataclass):
910
910
 
911
911
  Attributes:
912
912
  shape: The shape of the link.
913
- 0 = box, 1 = sphere, 2 = cylinder, -1 = unsupported.
913
+ 0 = box, 1 = cylinder, 2 = sphere, -1 = unsupported.
914
914
  dims: The dimensions of the link.
915
- box: [lx,ly,lz], sphere: [r,0,0], cylinder: [r,l,0]
915
+ box: [lx,ly,lz], cylinder: [r,l,0], sphere: [r,0,0].
916
916
  density: The density of the link.
917
917
  L_H_G: The homogeneous transformation matrix from the link frame to the CoM frame G.
918
918
  L_H_vis: The homogeneous transformation matrix from the link frame to the visual frame.
@@ -1026,7 +1026,13 @@ class HwLinkMetadata(JaxsimDataclass):
1026
1026
  shape,
1027
1027
  branches=[
1028
1028
  # Box
1029
- lambda: scaling_factors,
1029
+ lambda: jnp.array(
1030
+ [
1031
+ scaling_factors[0],
1032
+ scaling_factors[1],
1033
+ scaling_factors[2],
1034
+ ]
1035
+ ),
1030
1036
  # Cylinder
1031
1037
  lambda: jnp.array(
1032
1038
  [
@@ -387,7 +387,7 @@ class JaxSimModel(JaxsimDataclass):
387
387
  L_H_Gs = []
388
388
  L_H_vises = []
389
389
  L_H_pre_masks = []
390
- L_H_pres = []
390
+ L_H_pre = []
391
391
 
392
392
  # Process each link
393
393
  for link_description in ordered_links:
@@ -454,17 +454,17 @@ class JaxSimModel(JaxsimDataclass):
454
454
  L_H_pre_masks.append(
455
455
  [
456
456
  int(joint_index in child_joints_indices)
457
- for joint_index in range(self.number_of_joints())
457
+ for joint_index in range(0, self.number_of_joints())
458
458
  ]
459
459
  )
460
- L_H_pres.append(
460
+ L_H_pre.append(
461
461
  [
462
462
  (
463
463
  self.kin_dyn_parameters.joint_model.λ_H_pre[joint_index + 1]
464
464
  if joint_index in child_joints_indices
465
465
  else jnp.eye(4)
466
466
  )
467
- for joint_index in range(self.number_of_joints())
467
+ for joint_index in range(0, self.number_of_joints())
468
468
  ]
469
469
  )
470
470
 
@@ -476,7 +476,7 @@ class JaxSimModel(JaxsimDataclass):
476
476
  L_H_G=jnp.array(L_H_Gs, dtype=float),
477
477
  L_H_vis=jnp.array(L_H_vises, dtype=float),
478
478
  L_H_pre_mask=jnp.array(L_H_pre_masks, dtype=bool),
479
- L_H_pre=jnp.array(L_H_pres, dtype=float),
479
+ L_H_pre=jnp.array(L_H_pre, dtype=float),
480
480
  )
481
481
 
482
482
  def export_updated_model(self) -> str:
@@ -777,10 +777,17 @@ def reduce(
777
777
  integrator=model.integrator,
778
778
  )
779
779
 
780
- # Store the origin of the model, in case downstream logic needs it.
781
780
  with reduced_model.mutable_context(mutability=Mutability.MUTABLE_NO_VALIDATION):
781
+ # Store the origin of the model, in case downstream logic needs it.
782
782
  reduced_model.built_from = model.built_from
783
783
 
784
+ # Compute the hw parametrization metadata of the reduced model
785
+ # TODO: move the building of the metadata to KinDynParameters.build()
786
+ # and use the model_description instead of model.built_from.
787
+ reduced_model.kin_dyn_parameters.hw_link_metadata = (
788
+ reduced_model.compute_hw_link_metadata()
789
+ )
790
+
784
791
  return reduced_model
785
792
 
786
793
 
@@ -2373,15 +2380,22 @@ def update_hw_parameters(
2373
2380
  return jax.lax.cond(
2374
2381
  jnp.any(L_H_pre_mask_for_joint),
2375
2382
  lambda: selected_transform,
2376
- lambda: kin_dyn_params.joint_model.λ_H_pre[joint_index],
2383
+ lambda: kin_dyn_params.joint_model.λ_H_pre[joint_index + 1],
2377
2384
  )
2378
2385
 
2379
2386
  # Apply the update function to all joint indices
2380
2387
  updated_λ_H_pre = jax.vmap(update_λ_H_pre)(
2381
- jnp.arange(kin_dyn_params.number_of_joints() + 1)
2388
+ jnp.arange(kin_dyn_params.number_of_joints())
2389
+ )
2390
+ # NOTE: λ_H_pre should be of len (1+n_joints) with the 0-th element equal
2391
+ # to identity to represent the world-to-base tree transform. See JointModel class
2392
+ updated_λ_H_pre_with_base = jnp.concatenate(
2393
+ (jnp.eye(4).reshape(1, 4, 4), updated_λ_H_pre), axis=0
2382
2394
  )
2383
2395
  # Replace the joint model with the updated transforms
2384
- updated_joint_model = kin_dyn_params.joint_model.replace(λ_H_pre=updated_λ_H_pre)
2396
+ updated_joint_model = kin_dyn_params.joint_model.replace(
2397
+ λ_H_pre=updated_λ_H_pre_with_base
2398
+ )
2385
2399
 
2386
2400
  # Replace the kin_dyn_parameters with updated values
2387
2401
  updated_kin_dyn_params = kin_dyn_params.replace(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxsim
3
- Version: 0.7.1.dev18
3
+ Version: 0.7.1.dev32
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>
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:6f90d0084533761c9d9eca88087a5ab53994efee72ecaa2e3efcd91790633d95
3
- size 493137
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes