jaxsim 0.6.2.dev240__tar.gz → 0.6.2.dev253__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 (135) hide show
  1. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/PKG-INFO +2 -2
  2. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/environment.yml +1 -1
  3. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_multibody_dynamics_library.ipynb +3 -3
  4. jaxsim-0.6.2.dev253/pixi.lock +3 -0
  5. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/pyproject.toml +3 -3
  6. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/_version.py +2 -2
  7. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/actuation_model.py +30 -1
  8. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/model.py +14 -0
  9. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/__init__.py +1 -1
  10. jaxsim-0.6.2.dev253/src/jaxsim/rbda/actuation/__init__.py +1 -0
  11. jaxsim-0.6.2.dev253/src/jaxsim/rbda/actuation/common.py +17 -0
  12. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/PKG-INFO +2 -2
  13. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/SOURCES.txt +3 -0
  14. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/requires.txt +1 -1
  15. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/conftest.py +2 -2
  16. jaxsim-0.6.2.dev253/tests/test_actuation.py +37 -0
  17. jaxsim-0.6.2.dev240/pixi.lock +0 -3
  18. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.devcontainer/Dockerfile +0 -0
  19. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.devcontainer/devcontainer.json +0 -0
  20. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.gitattributes +0 -0
  21. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/CODEOWNERS +0 -0
  22. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/dependabot.yml +0 -0
  23. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/ci_cd.yml +0 -0
  24. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/gpu_benchmark.yml +0 -0
  25. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/pixi.yml +0 -0
  26. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/read_the_docs.yml +0 -0
  27. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.gitignore +0 -0
  28. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.pre-commit-config.yaml +0 -0
  29. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.readthedocs.yaml +0 -0
  30. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/CONTRIBUTING.md +0 -0
  31. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/LICENSE +0 -0
  32. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/README.md +0 -0
  33. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/Makefile +0 -0
  34. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/conf.py +0 -0
  35. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/examples.rst +0 -0
  36. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/guide/configuration.rst +0 -0
  37. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/guide/install.rst +0 -0
  38. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/index.rst +0 -0
  39. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/make.bat +0 -0
  40. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/api.rst +0 -0
  41. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/math.rst +0 -0
  42. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/mujoco.rst +0 -0
  43. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/parsers.rst +0 -0
  44. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/rbda.rst +0 -0
  45. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/typing.rst +0 -0
  46. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/utils.rst +0 -0
  47. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/.gitattributes +0 -0
  48. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/.gitignore +0 -0
  49. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/README.md +0 -0
  50. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/assets/build_cartpole_urdf.py +0 -0
  51. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/assets/cartpole.urdf +0 -0
  52. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_physics_engine.ipynb +0 -0
  53. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
  54. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
  55. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/setup.cfg +0 -0
  56. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/setup.py +0 -0
  57. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/__init__.py +0 -0
  58. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/__init__.py +0 -0
  59. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/com.py +0 -0
  60. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/common.py +0 -0
  61. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/contact.py +0 -0
  62. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/data.py +0 -0
  63. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/frame.py +0 -0
  64. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/integrators.py +0 -0
  65. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/joint.py +0 -0
  66. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  67. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/link.py +0 -0
  68. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/ode.py +0 -0
  69. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/references.py +0 -0
  70. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/exceptions.py +0 -0
  71. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/logging.py +0 -0
  72. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/__init__.py +0 -0
  73. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/adjoint.py +0 -0
  74. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/cross.py +0 -0
  75. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/inertia.py +0 -0
  76. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/joint_model.py +0 -0
  77. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/quaternion.py +0 -0
  78. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/rotation.py +0 -0
  79. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/skew.py +0 -0
  80. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/transform.py +0 -0
  81. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/utils.py +0 -0
  82. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/__init__.py +0 -0
  83. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/__main__.py +0 -0
  84. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/loaders.py +0 -0
  85. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/model.py +0 -0
  86. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/utils.py +0 -0
  87. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/visualizer.py +0 -0
  88. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/__init__.py +0 -0
  89. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  90. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  91. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  92. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/link.py +0 -0
  93. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/model.py +0 -0
  94. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  95. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/__init__.py +0 -0
  96. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/meshes.py +0 -0
  97. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/parser.py +0 -0
  98. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/utils.py +0 -0
  99. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/aba.py +0 -0
  100. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/collidable_points.py +0 -0
  101. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  102. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/common.py +0 -0
  103. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  104. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  105. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/soft.py +0 -0
  106. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/crba.py +0 -0
  107. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  108. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/jacobian.py +0 -0
  109. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/rnea.py +0 -0
  110. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/utils.py +0 -0
  111. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/terrain/__init__.py +0 -0
  112. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/terrain/terrain.py +0 -0
  113. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/typing.py +0 -0
  114. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/__init__.py +0 -0
  115. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  116. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/tracing.py +0 -0
  117. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/wrappers.py +0 -0
  118. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  119. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/top_level.txt +0 -0
  120. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/__init__.py +0 -0
  121. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_com.py +0 -0
  122. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_contact.py +0 -0
  123. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_data.py +0 -0
  124. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_frame.py +0 -0
  125. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_joint.py +0 -0
  126. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_link.py +0 -0
  127. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_model.py +0 -0
  128. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_automatic_differentiation.py +0 -0
  129. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_benchmark.py +0 -0
  130. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_exceptions.py +0 -0
  131. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_meshes.py +0 -0
  132. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_pytree.py +0 -0
  133. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_simulations.py +0 -0
  134. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_visualizer.py +0 -0
  135. {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxsim
3
- Version: 0.6.2.dev240
3
+ Version: 0.6.2.dev253
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>
@@ -80,7 +80,7 @@ Requires-Dist: idyntree>=12.2.1; extra == "testing"
80
80
  Requires-Dist: pytest>=6.0; extra == "testing"
81
81
  Requires-Dist: pytest-benchmark; extra == "testing"
82
82
  Requires-Dist: pytest-icdiff; extra == "testing"
83
- Requires-Dist: robot-descriptions; extra == "testing"
83
+ Requires-Dist: robot-descriptions>=1.16.0; extra == "testing"
84
84
  Requires-Dist: icub-models; extra == "testing"
85
85
  Provides-Extra: viz
86
86
  Requires-Dist: lxml; extra == "viz"
@@ -29,7 +29,7 @@ dependencies:
29
29
  - pytest
30
30
  - pytest-benchmark
31
31
  - pytest-icdiff
32
- - robot_descriptions
32
+ - robot_descriptions >= 1.16.0
33
33
  - icub-models
34
34
  # [viz]
35
35
  - lxml
@@ -51,7 +51,7 @@
51
51
  "# Install JAX, sdformat, and other notebook dependencies.\n",
52
52
  "if IS_COLAB:\n",
53
53
  " !{sys.executable} -m pip install --pre -qU jaxsim\n",
54
- " !{sys.executable} -m pip install robot_descriptions\n",
54
+ " !{sys.executable} -m pip install robot_descriptions>=1.16.0\n",
55
55
  " !apt install -qq lsb-release wget gnupg\n",
56
56
  " !wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg\n",
57
57
  " !echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null\n",
@@ -108,7 +108,7 @@
108
108
  "# @title Fetch the URDF file\n",
109
109
  "\n",
110
110
  "try:\n",
111
- " os.environ[\"ROBOT_DESCRIPTION_COMMIT\"] = \"v0.7.1\"\n",
111
+ " os.environ[\"ROBOT_DESCRIPTION_COMMIT\"] = \"v0.7.7\"\n",
112
112
  "\n",
113
113
  " import robot_descriptions.ergocub_description\n",
114
114
  "\n",
@@ -117,7 +117,7 @@
117
117
  "\n",
118
118
  "model_description_path = pathlib.Path(\n",
119
119
  " robot_descriptions.ergocub_description.URDF_PATH.replace(\n",
120
- " \"ergoCubSN000\", \"ergoCubSN001\"\n",
120
+ " \"ergoCubSN002\", \"ergoCubSN001\"\n",
121
121
  " )\n",
122
122
  ")\n",
123
123
  "\n",
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:48c8ea1c4d89491d5e0f2626fb91edc164ca8354158ee3d0be0291323ceff0a4
3
+ size 490670
@@ -69,7 +69,7 @@ testing = [
69
69
  "pytest >=6.0",
70
70
  "pytest-benchmark",
71
71
  "pytest-icdiff",
72
- "robot-descriptions",
72
+ "robot-descriptions >= 1.16.0",
73
73
  "icub-models",
74
74
  ]
75
75
  viz = [
@@ -258,7 +258,7 @@ pre-commit = "*"
258
258
  pytest = "*"
259
259
  pytest-benchmark = "*"
260
260
  pytest-icdiff = "*"
261
- robot_descriptions = "*"
261
+ robot_descriptions = ">=1.16.0"
262
262
 
263
263
  # ----------------
264
264
  # feature.examples
@@ -269,7 +269,7 @@ examples = { cmd = "jupyter notebook ./examples" }
269
269
 
270
270
  [tool.pixi.feature.examples.dependencies]
271
271
  notebook = "*"
272
- robot_descriptions = "*"
272
+ robot_descriptions = ">=1.16.0"
273
273
 
274
274
  # -----------
275
275
  # feature.gpu
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.6.2.dev240'
21
- __version_tuple__ = version_tuple = (0, 6, 2, 'dev240')
20
+ __version__ = version = '0.6.2.dev253'
21
+ __version_tuple__ = version_tuple = (0, 6, 2, 'dev253')
@@ -92,5 +92,34 @@ def compute_resultant_torques(
92
92
  # ===============================
93
93
 
94
94
  τ_total = τ_references + τ_friction + τ_position_limit
95
-
95
+ τ_lim = tn_curve_fn(model=model, data=data)
96
+ τ_total = jnp.clip(τ_total, -τ_lim, τ_lim)
96
97
  return τ_total
98
+
99
+
100
+ def tn_curve_fn(
101
+ model: js.model.JaxSimModel, data: js.data.JaxSimModelData
102
+ ) -> jtp.Vector:
103
+ """
104
+ Compute the torque limits using the tn curve.
105
+
106
+ Args:
107
+ model: The model to consider.
108
+ data: The data of the considered model.
109
+
110
+ Returns:
111
+ The torque limits.
112
+ """
113
+
114
+ τ_max = model.actuation_params.torque_max # Max torque (Nm)
115
+ ω_th = model.actuation_params.omega_th # Threshold speed (rad/s)
116
+ ω_max = model.actuation_params.omega_max # Max speed for torque drop-off (rad/s)
117
+ abs_vel = jnp.abs(data.joint_velocities)
118
+ τ_lim = jnp.where(
119
+ abs_vel <= ω_th,
120
+ τ_max,
121
+ jnp.where(
122
+ abs_vel <= ω_max, τ_max * (1 - (abs_vel - ω_th) / (ω_max - ω_th)), 0.0
123
+ ),
124
+ )
125
+ return τ_lim
@@ -57,6 +57,10 @@ class JaxSimModel(JaxsimDataclass):
57
57
  default=None, repr=False
58
58
  )
59
59
 
60
+ actuation_params: Static[jaxsim.rbda.actuation.ActuationParams] = dataclasses.field(
61
+ default=None, repr=False
62
+ )
63
+
60
64
  kin_dyn_parameters: js.kin_dyn_parameters.KinDynParameters | None = (
61
65
  dataclasses.field(default=None, repr=False)
62
66
  )
@@ -121,6 +125,7 @@ class JaxSimModel(JaxsimDataclass):
121
125
  terrain: jaxsim.terrain.Terrain | None = None,
122
126
  contact_model: jaxsim.rbda.contacts.ContactModel | None = None,
123
127
  contact_params: jaxsim.rbda.contacts.ContactsParams | None = None,
128
+ actuation_params: jaxsim.rbda.actuation.ActuationParams | None = None,
124
129
  integrator: IntegratorType | None = None,
125
130
  is_urdf: bool | None = None,
126
131
  considered_joints: Sequence[str] | None = None,
@@ -143,6 +148,7 @@ class JaxSimModel(JaxsimDataclass):
143
148
  The contact model to consider.
144
149
  If not specified, a soft contacts model is used.
145
150
  contact_params: The parameters of the contact model.
151
+ actuation_params: The parameters of the actuation model.
146
152
  integrator: The integrator to use for the simulation.
147
153
  is_urdf:
148
154
  The optional flag to force the model description to be parsed as a URDF.
@@ -177,6 +183,7 @@ class JaxSimModel(JaxsimDataclass):
177
183
  time_step=time_step,
178
184
  terrain=terrain,
179
185
  contact_model=contact_model,
186
+ actuation_params=actuation_params,
180
187
  contact_params=contact_params,
181
188
  integrator=integrator,
182
189
  gravity=-gravity,
@@ -198,6 +205,7 @@ class JaxSimModel(JaxsimDataclass):
198
205
  terrain: jaxsim.terrain.Terrain | None = None,
199
206
  contact_model: jaxsim.rbda.contacts.ContactModel | None = None,
200
207
  contact_params: jaxsim.rbda.contacts.ContactsParams | None = None,
208
+ actuation_params: jaxsim.rbda.actuation.ActuationParams | None = None,
201
209
  integrator: IntegratorType | None = None,
202
210
  gravity: jtp.FloatLike = jaxsim.math.STANDARD_GRAVITY,
203
211
  ) -> JaxSimModel:
@@ -219,6 +227,7 @@ class JaxSimModel(JaxsimDataclass):
219
227
  The contact model to consider.
220
228
  If not specified, a relaxed-constraints rigid contacts model is used.
221
229
  contact_params: The parameters of the contact model.
230
+ actuation_params: The parameters of the actuation model.
222
231
  integrator: The integrator to use for the simulation.
223
232
  gravity: The gravity constant.
224
233
 
@@ -255,6 +264,9 @@ class JaxSimModel(JaxsimDataclass):
255
264
  if contact_params is None:
256
265
  contact_params = contact_model._parameters_class()
257
266
 
267
+ if actuation_params is None:
268
+ actuation_params = jaxsim.rbda.actuation.ActuationParams()
269
+
258
270
  # Consider the default integrator if not specified.
259
271
  integrator = (
260
272
  integrator
@@ -272,6 +284,7 @@ class JaxSimModel(JaxsimDataclass):
272
284
  terrain=terrain,
273
285
  contact_model=contact_model,
274
286
  contact_params=contact_params,
287
+ actuation_params=actuation_params,
275
288
  integrator=integrator,
276
289
  gravity=gravity,
277
290
  # The following is wrapped as hashless since it's a static argument, and we
@@ -474,6 +487,7 @@ def reduce(
474
487
  terrain=model.terrain,
475
488
  contact_model=model.contact_model,
476
489
  contact_params=model.contact_params,
490
+ actuation_params=model.actuation_params,
477
491
  gravity=model.gravity,
478
492
  integrator=model.integrator,
479
493
  )
@@ -1,4 +1,4 @@
1
- from . import contacts
1
+ from . import actuation, contacts
2
2
  from .aba import aba
3
3
  from .collidable_points import collidable_points_pos_vel
4
4
  from .crba import crba
@@ -0,0 +1 @@
1
+ from .common import ActuationParams
@@ -0,0 +1,17 @@
1
+ import dataclasses
2
+
3
+ import jax_dataclasses
4
+
5
+ import jaxsim.typing as jtp
6
+ from jaxsim.utils import JaxsimDataclass
7
+
8
+
9
+ @jax_dataclasses.pytree_dataclass
10
+ class ActuationParams(JaxsimDataclass):
11
+ """
12
+ Parameters class for the actuation model.
13
+ """
14
+
15
+ torque_max: jtp.Float = dataclasses.field(default=3000.0) # (Nm)
16
+ omega_th: jtp.Float = dataclasses.field(default=30.0) # (rad/s)
17
+ omega_max: jtp.Float = dataclasses.field(default=100.0) # (rad/s)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jaxsim
3
- Version: 0.6.2.dev240
3
+ Version: 0.6.2.dev253
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>
@@ -80,7 +80,7 @@ Requires-Dist: idyntree>=12.2.1; extra == "testing"
80
80
  Requires-Dist: pytest>=6.0; extra == "testing"
81
81
  Requires-Dist: pytest-benchmark; extra == "testing"
82
82
  Requires-Dist: pytest-icdiff; extra == "testing"
83
- Requires-Dist: robot-descriptions; extra == "testing"
83
+ Requires-Dist: robot-descriptions>=1.16.0; extra == "testing"
84
84
  Requires-Dist: icub-models; extra == "testing"
85
85
  Provides-Extra: viz
86
86
  Requires-Dist: lxml; extra == "viz"
@@ -99,6 +99,8 @@ src/jaxsim/rbda/forward_kinematics.py
99
99
  src/jaxsim/rbda/jacobian.py
100
100
  src/jaxsim/rbda/rnea.py
101
101
  src/jaxsim/rbda/utils.py
102
+ src/jaxsim/rbda/actuation/__init__.py
103
+ src/jaxsim/rbda/actuation/common.py
102
104
  src/jaxsim/rbda/contacts/__init__.py
103
105
  src/jaxsim/rbda/contacts/common.py
104
106
  src/jaxsim/rbda/contacts/relaxed_rigid.py
@@ -112,6 +114,7 @@ src/jaxsim/utils/tracing.py
112
114
  src/jaxsim/utils/wrappers.py
113
115
  tests/__init__.py
114
116
  tests/conftest.py
117
+ tests/test_actuation.py
115
118
  tests/test_api_com.py
116
119
  tests/test_api_contact.py
117
120
  tests/test_api_data.py
@@ -25,7 +25,7 @@ idyntree>=12.2.1
25
25
  pytest>=6.0
26
26
  pytest-benchmark
27
27
  pytest-icdiff
28
- robot-descriptions
28
+ robot-descriptions>=1.16.0
29
29
  icub-models
30
30
 
31
31
  [viz]
@@ -269,7 +269,7 @@ def ergocub_model_description_path() -> pathlib.Path:
269
269
  """
270
270
 
271
271
  try:
272
- os.environ["ROBOT_DESCRIPTION_COMMIT"] = "v0.7.1"
272
+ os.environ["ROBOT_DESCRIPTION_COMMIT"] = "v0.7.7"
273
273
 
274
274
  import robot_descriptions.ergocub_description
275
275
 
@@ -278,7 +278,7 @@ def ergocub_model_description_path() -> pathlib.Path:
278
278
 
279
279
  model_urdf_path = pathlib.Path(
280
280
  robot_descriptions.ergocub_description.URDF_PATH.replace(
281
- "ergoCubSN000", "ergoCubSN001"
281
+ "ergoCubSN002", "ergoCubSN001"
282
282
  )
283
283
  )
284
284
 
@@ -0,0 +1,37 @@
1
+ import jax.numpy as jnp
2
+
3
+ import jaxsim.api as js
4
+ import jaxsim.rbda
5
+ from jaxsim import VelRepr
6
+
7
+
8
+ def test_tn_curve(jaxsim_model_single_pendulum: js.model.JaxSimModel):
9
+
10
+ model = jaxsim_model_single_pendulum
11
+ new_act_params = jaxsim.rbda.actuation.ActuationParams()
12
+ with new_act_params.editable(validate=False) as new_act_params:
13
+ new_act_params.torque_max = 10
14
+ new_act_params.omega_th = 1
15
+ new_act_params.omega_max = 2
16
+ with model.editable(validate=False) as model:
17
+ model.actuation_params = new_act_params
18
+ data = js.data.JaxSimModelData.build(
19
+ model=model,
20
+ velocity_representation=VelRepr.Inertial,
21
+ )
22
+ new_joint_velocities = 1.5 * jnp.ones(model.dofs())
23
+ joint_torques_0 = 30 * jnp.ones(model.dofs())
24
+ data_0 = data.replace(model=model, joint_velocities=new_joint_velocities)
25
+
26
+ τ_total = js.actuation_model.compute_resultant_torques(
27
+ model, data_0, joint_force_references=joint_torques_0
28
+ )
29
+ assert (τ_total <= joint_torques_0).all()
30
+ new_joint_velocities = 2.5 * jnp.ones(model.dofs())
31
+ joint_torques_0 = 30 * jnp.ones(model.dofs())
32
+ data_0 = data.replace(model=model, joint_velocities=new_joint_velocities)
33
+
34
+ τ_total = js.actuation_model.compute_resultant_torques(
35
+ model, data_0, joint_force_references=joint_torques_0
36
+ )
37
+ assert (τ_total == jnp.zeros(model.dofs())).all()
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:527236666dd1ad835cb4947e1b6f3da979e41d44de5b11295c8d1178d725fadb
3
- size 490653
File without changes
File without changes
File without changes
File without changes
File without changes