jaxsim 0.7.1.dev50__tar.gz → 0.7.1.dev58__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 (137) hide show
  1. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/workflows/ci_cd.yml +13 -9
  2. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/PKG-INFO +1 -1
  3. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/_version.py +2 -2
  4. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/contact.py +6 -23
  5. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/contacts/common.py +17 -11
  6. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim.egg-info/PKG-INFO +1 -1
  7. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.devcontainer/Dockerfile +0 -0
  8. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.devcontainer/devcontainer.json +0 -0
  9. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.gitattributes +0 -0
  10. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/CODEOWNERS +0 -0
  11. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/dependabot.yml +0 -0
  12. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/release.yml +0 -0
  13. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/workflows/gpu_benchmark.yml +0 -0
  14. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/workflows/pixi.yml +0 -0
  15. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.github/workflows/read_the_docs.yml +0 -0
  16. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.gitignore +0 -0
  17. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.pre-commit-config.yaml +0 -0
  18. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/.readthedocs.yaml +0 -0
  19. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/CONTRIBUTING.md +0 -0
  20. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/LICENSE +0 -0
  21. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/README.md +0 -0
  22. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/Makefile +0 -0
  23. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/conf.py +0 -0
  24. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/examples.rst +0 -0
  25. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/guide/configuration.rst +0 -0
  26. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/guide/install.rst +0 -0
  27. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/index.rst +0 -0
  28. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/make.bat +0 -0
  29. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/api.rst +0 -0
  30. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/math.rst +0 -0
  31. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/mujoco.rst +0 -0
  32. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/parsers.rst +0 -0
  33. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/rbda.rst +0 -0
  34. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/typing.rst +0 -0
  35. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/docs/modules/utils.rst +0 -0
  36. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/environment.yml +0 -0
  37. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/.gitattributes +0 -0
  38. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/.gitignore +0 -0
  39. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/README.md +0 -0
  40. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/assets/build_cartpole_urdf.py +0 -0
  41. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/assets/cartpole.urdf +0 -0
  42. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
  43. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/jaxsim_as_physics_engine.ipynb +0 -0
  44. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
  45. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
  46. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/pixi.lock +0 -0
  47. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/pyproject.toml +0 -0
  48. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/setup.cfg +0 -0
  49. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/__init__.py +0 -0
  50. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/__init__.py +0 -0
  51. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/actuation_model.py +0 -0
  52. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/com.py +0 -0
  53. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/common.py +0 -0
  54. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/data.py +0 -0
  55. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/frame.py +0 -0
  56. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/integrators.py +0 -0
  57. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/joint.py +0 -0
  58. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  59. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/link.py +0 -0
  60. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/model.py +0 -0
  61. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/ode.py +0 -0
  62. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/api/references.py +0 -0
  63. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/exceptions.py +0 -0
  64. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/logging.py +0 -0
  65. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/__init__.py +0 -0
  66. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/adjoint.py +0 -0
  67. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/cross.py +0 -0
  68. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/inertia.py +0 -0
  69. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/joint_model.py +0 -0
  70. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/quaternion.py +0 -0
  71. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/rotation.py +0 -0
  72. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/skew.py +0 -0
  73. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/transform.py +0 -0
  74. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/math/utils.py +0 -0
  75. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/mujoco/__init__.py +0 -0
  76. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/mujoco/__main__.py +0 -0
  77. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/mujoco/loaders.py +0 -0
  78. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/mujoco/model.py +0 -0
  79. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/mujoco/utils.py +0 -0
  80. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/mujoco/visualizer.py +0 -0
  81. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/__init__.py +0 -0
  82. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  83. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  84. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  85. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/descriptions/link.py +0 -0
  86. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/descriptions/model.py +0 -0
  87. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  88. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/rod/__init__.py +0 -0
  89. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/rod/meshes.py +0 -0
  90. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/rod/parser.py +0 -0
  91. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/parsers/rod/utils.py +0 -0
  92. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/__init__.py +0 -0
  93. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/aba.py +0 -0
  94. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/actuation/__init__.py +0 -0
  95. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/actuation/common.py +0 -0
  96. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/collidable_points.py +0 -0
  97. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  98. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  99. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  100. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/contacts/soft.py +0 -0
  101. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/crba.py +0 -0
  102. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  103. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/jacobian.py +0 -0
  104. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/kinematic_constraints.py +0 -0
  105. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/rnea.py +0 -0
  106. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/rbda/utils.py +0 -0
  107. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/terrain/__init__.py +0 -0
  108. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/terrain/terrain.py +0 -0
  109. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/typing.py +0 -0
  110. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/utils/__init__.py +0 -0
  111. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  112. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/utils/tracing.py +0 -0
  113. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim/utils/wrappers.py +0 -0
  114. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  115. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  116. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim.egg-info/requires.txt +0 -0
  117. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/src/jaxsim.egg-info/top_level.txt +0 -0
  118. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/__init__.py +0 -0
  119. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/assets/double_pendulum.sdf +0 -0
  120. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/conftest.py +0 -0
  121. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_actuation.py +0 -0
  122. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_com.py +0 -0
  123. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_contact.py +0 -0
  124. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_data.py +0 -0
  125. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_frame.py +0 -0
  126. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_joint.py +0 -0
  127. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_link.py +0 -0
  128. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_model.py +0 -0
  129. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_api_model_hw_parametrization.py +0 -0
  130. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_automatic_differentiation.py +0 -0
  131. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_benchmark.py +0 -0
  132. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_exceptions.py +0 -0
  133. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_meshes.py +0 -0
  134. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_pytree.py +0 -0
  135. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_simulations.py +0 -0
  136. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/test_visualizer.py +0 -0
  137. {jaxsim-0.7.1.dev50 → jaxsim-0.7.1.dev58}/tests/utils_idyntree.py +0 -0
@@ -83,7 +83,7 @@ jobs:
83
83
  - name: Install wheel (ubuntu)
84
84
  if: contains(matrix.os, 'ubuntu')
85
85
  shell: bash
86
- run: pip install "$(find dist/ -type f -name '*.whl')[all]"
86
+ run: pip install "$(find dist/ -type f -name '*.whl')"
87
87
 
88
88
  - name: Install wheel (macos|windows)
89
89
  if: contains(matrix.os, 'macos') || contains(matrix.os, 'windows')
@@ -99,24 +99,28 @@ jobs:
99
99
 
100
100
  - uses: actions/checkout@v4
101
101
  with:
102
- fetch-depth: 0
102
+ lfs: true
103
+
104
+ - uses: prefix-dev/setup-pixi@v0.8.5
105
+ if: contains(matrix.os, 'ubuntu')
106
+ with:
107
+ pixi-version: "latest"
108
+ frozen: true
109
+ cache: true
110
+ cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }}
103
111
 
104
- - name: Install 'gz sdf' system command
112
+ - name: Ensure version file is written
105
113
  if: |
106
114
  contains(matrix.os, 'ubuntu') &&
107
115
  (github.event_name != 'pull_request')
108
116
  run: |
109
- sudo apt update && sudo apt install -y lsb-release wget
110
- sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
111
- wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
112
- sudo apt-get update
113
- sudo apt install -y libsdformat14-dev libsdformat14
117
+ pixi run --frozen python -m setuptools_scm --force-write-version-file
114
118
 
115
119
  - name: Run the Python tests
116
120
  if: |
117
121
  contains(matrix.os, 'ubuntu') &&
118
122
  (github.event_name != 'pull_request')
119
- run: pytest
123
+ run: pixi run --frozen test
120
124
  env:
121
125
  # https://github.com/pytest-dev/pytest/issues/7443#issuecomment-656642591
122
126
  PY_COLORS: "1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxsim
3
- Version: 0.7.1.dev50
3
+ Version: 0.7.1.dev58
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>
@@ -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.dev50'
21
- __version_tuple__ = version_tuple = (0, 7, 1, 'dev50')
20
+ __version__ = version = '0.7.1.dev58'
21
+ __version_tuple__ = version_tuple = (0, 7, 1, 'dev58')
@@ -191,39 +191,22 @@ def estimate_good_contact_parameters(
191
191
  The user is encouraged to fine-tune the parameters based on the
192
192
  specific application.
193
193
  """
194
-
195
- def estimate_model_height(model: js.model.JaxSimModel) -> jtp.Float:
196
- """
197
- Displacement between the CoM and the lowest collidable point using zero
198
- joint positions.
199
- """
200
-
201
- zero_data = js.data.JaxSimModelData.build(
202
- model=model,
203
- )
204
-
194
+ if max_penetration is None:
195
+ zero_data = js.data.JaxSimModelData.build(model=model)
205
196
  W_pz_CoM = js.com.com_position(model=model, data=zero_data)[2]
206
-
207
197
  if model.floating_base():
208
198
  W_pz_C = collidable_point_positions(model=model, data=zero_data)[:, -1]
209
- return 2 * (W_pz_CoM - W_pz_C.min())
210
-
211
- return 2 * W_pz_CoM
199
+ W_pz_CoM = W_pz_CoM - W_pz_C.min()
212
200
 
213
- max_δ = (
214
- max_penetration
215
- if max_penetration is not None
216
- # Consider as default a 0.5% of the model height.
217
- else 0.005 * estimate_model_height(model=model)
218
- )
201
+ # Consider as default a 1% of the model center of mass height.
202
+ max_penetration = 0.01 * W_pz_CoM
219
203
 
220
204
  nc = number_of_active_collidable_points_steady_state
221
-
222
205
  return model.contact_model._parameters_class().build_default_from_jaxsim_model(
223
206
  model=model,
224
207
  standard_gravity=standard_gravity,
225
208
  static_friction_coefficient=static_friction_coefficient,
226
- max_penetration=max_δ,
209
+ max_penetration=max_penetration,
227
210
  number_of_active_collidable_points_steady_state=nc,
228
211
  damping_ratio=damping_ratio,
229
212
  )
@@ -18,6 +18,10 @@ except ImportError:
18
18
  from typing_extensions import Self
19
19
 
20
20
 
21
+ MAX_STIFFNESS = 1e6
22
+ MAX_DAMPING = 1e4
23
+
24
+
21
25
  @functools.partial(jax.jit, static_argnames=("terrain",))
22
26
  def compute_penetration_data(
23
27
  p: jtp.VectorLike,
@@ -133,28 +137,30 @@ class ContactsParams(JaxsimDataclass):
133
137
  ξ = damping_ratio
134
138
  δ_max = max_penetration
135
139
  μc = static_friction_coefficient
140
+ nc = number_of_active_collidable_points_steady_state
136
141
 
137
142
  # Compute the total mass of the model.
138
143
  m = jnp.array(model.kin_dyn_parameters.link_parameters.mass).sum()
139
144
 
140
- # Rename the standard gravity.
141
- g = standard_gravity
142
-
143
- # Compute the average support force on each collidable point.
144
- f_average = m * g / number_of_active_collidable_points_steady_state
145
-
146
145
  # Compute the stiffness to get the desired steady-state penetration.
147
146
  # Note that this is dependent on the non-linear exponent used in
148
147
  # the damping term of the Hunt/Crossley model.
149
- K = f_average / jnp.power(δ_max, 1 + p) if stiffness is None else stiffness
148
+ if stiffness is None:
149
+ # Compute the average support force on each collidable point.
150
+ f_average = m * standard_gravity / nc
151
+
152
+ stiffness = f_average / jnp.power(δ_max, 1 + p)
153
+ stiffness = jnp.clip(stiffness, 0, MAX_STIFFNESS)
150
154
 
151
155
  # Compute the damping using the damping ratio.
152
- critical_damping = 2 * jnp.sqrt(K * m)
153
- D = ξ * critical_damping if damping is None else damping
156
+ critical_damping = 2 * jnp.sqrt(stiffness * m)
157
+ if damping is None:
158
+ damping = ξ * critical_damping
159
+ damping = jnp.clip(damping, 0, MAX_DAMPING)
154
160
 
155
161
  return self.build(
156
- K=K,
157
- D=D,
162
+ K=stiffness,
163
+ D=damping,
158
164
  mu=μc,
159
165
  p=p,
160
166
  q=q,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxsim
3
- Version: 0.7.1.dev50
3
+ Version: 0.7.1.dev58
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>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes