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.
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/PKG-INFO +2 -2
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/environment.yml +1 -1
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_multibody_dynamics_library.ipynb +3 -3
- jaxsim-0.6.2.dev253/pixi.lock +3 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/pyproject.toml +3 -3
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/actuation_model.py +30 -1
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/model.py +14 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/__init__.py +1 -1
- jaxsim-0.6.2.dev253/src/jaxsim/rbda/actuation/__init__.py +1 -0
- jaxsim-0.6.2.dev253/src/jaxsim/rbda/actuation/common.py +17 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/PKG-INFO +2 -2
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/SOURCES.txt +3 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/requires.txt +1 -1
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/conftest.py +2 -2
- jaxsim-0.6.2.dev253/tests/test_actuation.py +37 -0
- jaxsim-0.6.2.dev240/pixi.lock +0 -3
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.gitattributes +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/CODEOWNERS +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/dependabot.yml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/gpu_benchmark.yml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/pixi.yml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.gitignore +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/.readthedocs.yaml +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/CONTRIBUTING.md +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/LICENSE +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/README.md +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/Makefile +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/conf.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/examples.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/guide/configuration.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/guide/install.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/index.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/make.bat +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/api.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/math.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/mujoco.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/rbda.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/typing.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/docs/modules/utils.rst +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/.gitattributes +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/.gitignore +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/README.md +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/assets/build_cartpole_urdf.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_physics_engine.ipynb +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/setup.cfg +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/setup.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/data.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/frame.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/integrators.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/ode.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/exceptions.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/math/utils.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/utils.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/meshes.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/common.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/rigid.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/contacts/soft.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim/utils/wrappers.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/__init__.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_com.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_contact.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_data.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_frame.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_joint.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_link.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_api_model.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_benchmark.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_exceptions.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_meshes.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_pytree.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_simulations.py +0 -0
- {jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/tests/test_visualizer.py +0 -0
- {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.
|
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"
|
{jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_multibody_dynamics_library.ipynb
RENAMED
@@ -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.
|
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
|
-
" \"
|
120
|
+
" \"ergoCubSN002\", \"ergoCubSN001\"\n",
|
121
121
|
" )\n",
|
122
122
|
")\n",
|
123
123
|
"\n",
|
@@ -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.
|
21
|
-
__version_tuple__ = version_tuple = (0, 6, 2, '
|
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
|
)
|
@@ -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.
|
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
|
@@ -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.
|
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
|
-
"
|
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()
|
jaxsim-0.6.2.dev240/pixi.lock
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jaxsim-0.6.2.dev240 → jaxsim-0.6.2.dev253}/examples/jaxsim_as_physics_engine_advanced.ipynb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|