jaxsim 0.5.1.dev56__tar.gz → 0.5.1.dev63__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.5.1.dev56 → jaxsim-0.5.1.dev63}/PKG-INFO +1 -1
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/com.py +8 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/common.py +17 -1
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/contact.py +9 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/data.py +16 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/frame.py +7 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/joint.py +4 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/model.py +19 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/ode.py +3 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/references.py +3 -2
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/rod/utils.py +31 -26
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim.egg-info/PKG-INFO +1 -1
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.gitattributes +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.github/CODEOWNERS +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.github/dependabot.yml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.github/workflows/pixi.yml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.gitignore +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/.readthedocs.yaml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/CONTRIBUTING.md +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/LICENSE +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/README.md +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/Makefile +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/conf.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/examples.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/guide/install.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/index.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/make.bat +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/api.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/integrators.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/math.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/mujoco.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/rbda.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/typing.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/docs/modules/utils.rst +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/environment.yml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/.gitattributes +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/.gitignore +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/README.md +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/assets/build_cartpole_urdf.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/jaxsim_as_physics_engine.ipynb +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/pixi.lock +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/pyproject.toml +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/setup.cfg +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/setup.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/api/ode_data.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/exceptions.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/integrators/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/integrators/common.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/integrators/fixed_step.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/integrators/variable_step.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/mujoco/utils.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/rod/meshes.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/contacts/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/contacts/common.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/contacts/rigid.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/contacts/soft.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/contacts/visco_elastic.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim/utils/wrappers.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim.egg-info/SOURCES.txt +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim.egg-info/requires.txt +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/__init__.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/conftest.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_com.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_contact.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_data.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_frame.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_joint.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_link.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_api_model.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_benchmark.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_contact.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_exceptions.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_meshes.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_pytree.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/test_simulations.py +0 -0
- {jaxsim-0.5.1.dev56 → jaxsim-0.5.1.dev63}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.5.1.
|
3
|
+
Version: 0.5.1.dev63
|
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>
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.5.1.
|
16
|
-
__version_tuple__ = version_tuple = (0, 5, 1, '
|
15
|
+
__version__ = version = '0.5.1.dev63'
|
16
|
+
__version_tuple__ = version_tuple = (0, 5, 1, 'dev63')
|
@@ -8,6 +8,7 @@ import jaxsim.typing as jtp
|
|
8
8
|
from .common import VelRepr
|
9
9
|
|
10
10
|
|
11
|
+
@js.common.named_scope
|
11
12
|
@jax.jit
|
12
13
|
def com_position(
|
13
14
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -44,6 +45,7 @@ def com_position(
|
|
44
45
|
return (W_H_B @ B_p̃_CoM)[0:3].astype(float)
|
45
46
|
|
46
47
|
|
48
|
+
@js.common.named_scope
|
47
49
|
@jax.jit
|
48
50
|
def com_linear_velocity(
|
49
51
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -74,6 +76,7 @@ def com_linear_velocity(
|
|
74
76
|
return G_vl_WG
|
75
77
|
|
76
78
|
|
79
|
+
@js.common.named_scope
|
77
80
|
@jax.jit
|
78
81
|
def centroidal_momentum(
|
79
82
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -101,6 +104,7 @@ def centroidal_momentum(
|
|
101
104
|
return G_J @ ν
|
102
105
|
|
103
106
|
|
107
|
+
@js.common.named_scope
|
104
108
|
@jax.jit
|
105
109
|
def centroidal_momentum_jacobian(
|
106
110
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -149,6 +153,7 @@ def centroidal_momentum_jacobian(
|
|
149
153
|
return G_Xf_B @ B_Jh
|
150
154
|
|
151
155
|
|
156
|
+
@js.common.named_scope
|
152
157
|
@jax.jit
|
153
158
|
def locked_centroidal_spatial_inertia(
|
154
159
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -186,6 +191,7 @@ def locked_centroidal_spatial_inertia(
|
|
186
191
|
return G_Xf_B @ B_Mbb_B @ B_Xv_G
|
187
192
|
|
188
193
|
|
194
|
+
@js.common.named_scope
|
189
195
|
@jax.jit
|
190
196
|
def average_centroidal_velocity(
|
191
197
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -213,6 +219,7 @@ def average_centroidal_velocity(
|
|
213
219
|
return G_J @ ν
|
214
220
|
|
215
221
|
|
222
|
+
@js.common.named_scope
|
216
223
|
@jax.jit
|
217
224
|
def average_centroidal_velocity_jacobian(
|
218
225
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -239,6 +246,7 @@ def average_centroidal_velocity_jacobian(
|
|
239
246
|
return jnp.linalg.inv(G_Mbb) @ G_J
|
240
247
|
|
241
248
|
|
249
|
+
@js.common.named_scope
|
242
250
|
@jax.jit
|
243
251
|
def bias_acceleration(
|
244
252
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -3,7 +3,8 @@ import contextlib
|
|
3
3
|
import dataclasses
|
4
4
|
import enum
|
5
5
|
import functools
|
6
|
-
from collections.abc import Iterator
|
6
|
+
from collections.abc import Callable, Iterator
|
7
|
+
from typing import ParamSpec, TypeVar
|
7
8
|
|
8
9
|
import jax
|
9
10
|
import jax.numpy as jnp
|
@@ -20,6 +21,21 @@ except ImportError:
|
|
20
21
|
from typing_extensions import Self
|
21
22
|
|
22
23
|
|
24
|
+
_P = ParamSpec("_P")
|
25
|
+
_R = TypeVar("_R")
|
26
|
+
|
27
|
+
|
28
|
+
def named_scope(fn, name: str | None = None) -> Callable[_P, _R]:
|
29
|
+
"""Applies a JAX named scope to a function for improved profiling and clarity."""
|
30
|
+
|
31
|
+
@functools.wraps(fn)
|
32
|
+
def wrapper(*args: _P.args, **kwargs: _P.kwargs) -> _R:
|
33
|
+
with jax.named_scope(name or fn.__name__):
|
34
|
+
return fn(*args, **kwargs)
|
35
|
+
|
36
|
+
return wrapper
|
37
|
+
|
38
|
+
|
23
39
|
@enum.unique
|
24
40
|
class VelRepr(enum.IntEnum):
|
25
41
|
"""
|
@@ -16,6 +16,7 @@ from jaxsim.rbda import contacts
|
|
16
16
|
from .common import VelRepr
|
17
17
|
|
18
18
|
|
19
|
+
@js.common.named_scope
|
19
20
|
@jax.jit
|
20
21
|
def collidable_point_kinematics(
|
21
22
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -52,6 +53,7 @@ def collidable_point_kinematics(
|
|
52
53
|
return W_p_Ci, W_ṗ_Ci
|
53
54
|
|
54
55
|
|
56
|
+
@js.common.named_scope
|
55
57
|
@jax.jit
|
56
58
|
def collidable_point_positions(
|
57
59
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -72,6 +74,7 @@ def collidable_point_positions(
|
|
72
74
|
return W_p_Ci
|
73
75
|
|
74
76
|
|
77
|
+
@js.common.named_scope
|
75
78
|
@jax.jit
|
76
79
|
def collidable_point_velocities(
|
77
80
|
model: js.model.JaxSimModel, data: js.data.JaxSimModelData
|
@@ -92,6 +95,7 @@ def collidable_point_velocities(
|
|
92
95
|
return W_ṗ_Ci
|
93
96
|
|
94
97
|
|
98
|
+
@js.common.named_scope
|
95
99
|
@jax.jit
|
96
100
|
def collidable_point_forces(
|
97
101
|
model: js.model.JaxSimModel,
|
@@ -129,6 +133,7 @@ def collidable_point_forces(
|
|
129
133
|
return f_Ci
|
130
134
|
|
131
135
|
|
136
|
+
@js.common.named_scope
|
132
137
|
@jax.jit
|
133
138
|
def collidable_point_dynamics(
|
134
139
|
model: js.model.JaxSimModel,
|
@@ -227,6 +232,7 @@ def collidable_point_dynamics(
|
|
227
232
|
return f_Ci, aux_data
|
228
233
|
|
229
234
|
|
235
|
+
@js.common.named_scope
|
230
236
|
@functools.partial(jax.jit, static_argnames=["link_names"])
|
231
237
|
def in_contact(
|
232
238
|
model: js.model.JaxSimModel,
|
@@ -424,6 +430,7 @@ def estimate_good_contact_parameters(
|
|
424
430
|
return parameters
|
425
431
|
|
426
432
|
|
433
|
+
@js.common.named_scope
|
427
434
|
@jax.jit
|
428
435
|
def transforms(model: js.model.JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Array:
|
429
436
|
r"""
|
@@ -469,6 +476,7 @@ def transforms(model: js.model.JaxSimModel, data: js.data.JaxSimModelData) -> jt
|
|
469
476
|
return jax.vmap(lambda W_H_Li, L_H_Ci: W_H_Li @ L_H_Ci)(W_H_L, L_H_C)
|
470
477
|
|
471
478
|
|
479
|
+
@js.common.named_scope
|
472
480
|
@functools.partial(jax.jit, static_argnames=["output_vel_repr"])
|
473
481
|
def jacobian(
|
474
482
|
model: js.model.JaxSimModel,
|
@@ -561,6 +569,7 @@ def jacobian(
|
|
561
569
|
return O_J_WC
|
562
570
|
|
563
571
|
|
572
|
+
@js.common.named_scope
|
564
573
|
@functools.partial(jax.jit, static_argnames=["output_vel_repr"])
|
565
574
|
def jacobian_derivative(
|
566
575
|
model: js.model.JaxSimModel,
|
@@ -253,6 +253,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
253
253
|
|
254
254
|
return -self.gravity[2]
|
255
255
|
|
256
|
+
@js.common.named_scope
|
256
257
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
257
258
|
def joint_positions(
|
258
259
|
self,
|
@@ -300,6 +301,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
300
301
|
|
301
302
|
return self.state.physics_model.joint_positions[joint_idxs]
|
302
303
|
|
304
|
+
@js.common.named_scope
|
303
305
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
304
306
|
def joint_velocities(
|
305
307
|
self,
|
@@ -347,6 +349,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
347
349
|
|
348
350
|
return self.state.physics_model.joint_velocities[joint_idxs]
|
349
351
|
|
352
|
+
@js.common.named_scope
|
350
353
|
@jax.jit
|
351
354
|
def base_position(self) -> jtp.Vector:
|
352
355
|
"""
|
@@ -358,6 +361,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
358
361
|
|
359
362
|
return self.state.physics_model.base_position.squeeze()
|
360
363
|
|
364
|
+
@js.common.named_scope
|
361
365
|
@functools.partial(jax.jit, static_argnames=["dcm"])
|
362
366
|
def base_orientation(self, dcm: jtp.BoolLike = False) -> jtp.Vector | jtp.Matrix:
|
363
367
|
"""
|
@@ -386,6 +390,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
386
390
|
float
|
387
391
|
)
|
388
392
|
|
393
|
+
@js.common.named_scope
|
389
394
|
@jax.jit
|
390
395
|
def base_transform(self) -> jtp.Matrix:
|
391
396
|
"""
|
@@ -405,6 +410,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
405
410
|
]
|
406
411
|
)
|
407
412
|
|
413
|
+
@js.common.named_scope
|
408
414
|
@jax.jit
|
409
415
|
def base_velocity(self) -> jtp.Vector:
|
410
416
|
"""
|
@@ -434,6 +440,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
434
440
|
.astype(float)
|
435
441
|
)
|
436
442
|
|
443
|
+
@js.common.named_scope
|
437
444
|
@jax.jit
|
438
445
|
def generalized_position(self) -> tuple[jtp.Matrix, jtp.Vector]:
|
439
446
|
r"""
|
@@ -446,6 +453,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
446
453
|
|
447
454
|
return self.base_transform(), self.joint_positions()
|
448
455
|
|
456
|
+
@js.common.named_scope
|
449
457
|
@jax.jit
|
450
458
|
def generalized_velocity(self) -> jtp.Vector:
|
451
459
|
r"""
|
@@ -466,6 +474,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
466
474
|
# Store quantities
|
467
475
|
# ================
|
468
476
|
|
477
|
+
@js.common.named_scope
|
469
478
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
470
479
|
def reset_joint_positions(
|
471
480
|
self,
|
@@ -514,6 +523,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
514
523
|
s=self.state.physics_model.joint_positions.at[joint_idxs].set(positions)
|
515
524
|
)
|
516
525
|
|
526
|
+
@js.common.named_scope
|
517
527
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
518
528
|
def reset_joint_velocities(
|
519
529
|
self,
|
@@ -562,6 +572,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
562
572
|
ṡ=self.state.physics_model.joint_velocities.at[joint_idxs].set(velocities)
|
563
573
|
)
|
564
574
|
|
575
|
+
@js.common.named_scope
|
565
576
|
@jax.jit
|
566
577
|
def reset_base_position(self, base_position: jtp.VectorLike) -> Self:
|
567
578
|
"""
|
@@ -585,6 +596,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
585
596
|
),
|
586
597
|
)
|
587
598
|
|
599
|
+
@js.common.named_scope
|
588
600
|
@jax.jit
|
589
601
|
def reset_base_quaternion(self, base_quaternion: jtp.VectorLike) -> Self:
|
590
602
|
"""
|
@@ -612,6 +624,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
612
624
|
),
|
613
625
|
)
|
614
626
|
|
627
|
+
@js.common.named_scope
|
615
628
|
@jax.jit
|
616
629
|
def reset_base_pose(self, base_pose: jtp.MatrixLike) -> Self:
|
617
630
|
"""
|
@@ -634,6 +647,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
634
647
|
base_quaternion=W_Q_B
|
635
648
|
)
|
636
649
|
|
650
|
+
@js.common.named_scope
|
637
651
|
@functools.partial(jax.jit, static_argnames=["velocity_representation"])
|
638
652
|
def reset_base_linear_velocity(
|
639
653
|
self,
|
@@ -665,6 +679,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
665
679
|
velocity_representation=velocity_representation,
|
666
680
|
)
|
667
681
|
|
682
|
+
@js.common.named_scope
|
668
683
|
@functools.partial(jax.jit, static_argnames=["velocity_representation"])
|
669
684
|
def reset_base_angular_velocity(
|
670
685
|
self,
|
@@ -696,6 +711,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
696
711
|
velocity_representation=velocity_representation,
|
697
712
|
)
|
698
713
|
|
714
|
+
@js.common.named_scope
|
699
715
|
@functools.partial(jax.jit, static_argnames=["velocity_representation"])
|
700
716
|
def reset_base_velocity(
|
701
717
|
self,
|
@@ -16,6 +16,7 @@ from .common import VelRepr
|
|
16
16
|
# =======================
|
17
17
|
|
18
18
|
|
19
|
+
@js.common.named_scope
|
19
20
|
@jax.jit
|
20
21
|
def idx_of_parent_link(
|
21
22
|
model: js.model.JaxSimModel, *, frame_index: jtp.IntLike
|
@@ -45,6 +46,7 @@ def idx_of_parent_link(
|
|
45
46
|
]
|
46
47
|
|
47
48
|
|
49
|
+
@js.common.named_scope
|
48
50
|
@functools.partial(jax.jit, static_argnames="frame_name")
|
49
51
|
def name_to_idx(model: js.model.JaxSimModel, *, frame_name: str) -> jtp.Int:
|
50
52
|
"""
|
@@ -97,6 +99,7 @@ def idx_to_name(model: js.model.JaxSimModel, *, frame_index: jtp.IntLike) -> str
|
|
97
99
|
]
|
98
100
|
|
99
101
|
|
102
|
+
@js.common.named_scope
|
100
103
|
@functools.partial(jax.jit, static_argnames=["frame_names"])
|
101
104
|
def names_to_idxs(
|
102
105
|
model: js.model.JaxSimModel, *, frame_names: Sequence[str]
|
@@ -139,6 +142,7 @@ def idxs_to_names(
|
|
139
142
|
# ==========
|
140
143
|
|
141
144
|
|
145
|
+
@js.common.named_scope
|
142
146
|
@jax.jit
|
143
147
|
def transform(
|
144
148
|
model: js.model.JaxSimModel,
|
@@ -180,6 +184,7 @@ def transform(
|
|
180
184
|
return W_H_L @ L_H_F
|
181
185
|
|
182
186
|
|
187
|
+
@js.common.named_scope
|
183
188
|
@functools.partial(jax.jit, static_argnames=["output_vel_repr"])
|
184
189
|
def velocity(
|
185
190
|
model: js.model.JaxSimModel,
|
@@ -230,6 +235,7 @@ def velocity(
|
|
230
235
|
return O_J_WF_I @ I_ν
|
231
236
|
|
232
237
|
|
238
|
+
@js.common.named_scope
|
233
239
|
@functools.partial(jax.jit, static_argnames=["output_vel_repr"])
|
234
240
|
def jacobian(
|
235
241
|
model: js.model.JaxSimModel,
|
@@ -309,6 +315,7 @@ def jacobian(
|
|
309
315
|
return O_J_WL_I
|
310
316
|
|
311
317
|
|
318
|
+
@js.common.named_scope
|
312
319
|
@functools.partial(jax.jit, static_argnames=["output_vel_repr"])
|
313
320
|
def jacobian_derivative(
|
314
321
|
model: js.model.JaxSimModel,
|
@@ -13,6 +13,7 @@ from jaxsim import exceptions
|
|
13
13
|
# =======================
|
14
14
|
|
15
15
|
|
16
|
+
@js.common.named_scope
|
16
17
|
@functools.partial(jax.jit, static_argnames="joint_name")
|
17
18
|
def name_to_idx(model: js.model.JaxSimModel, *, joint_name: str) -> jtp.Int:
|
18
19
|
"""
|
@@ -61,6 +62,7 @@ def idx_to_name(model: js.model.JaxSimModel, *, joint_index: jtp.IntLike) -> str
|
|
61
62
|
return model.kin_dyn_parameters.joint_model.joint_names[joint_index + 1]
|
62
63
|
|
63
64
|
|
65
|
+
@js.common.named_scope
|
64
66
|
@functools.partial(jax.jit, static_argnames="joint_names")
|
65
67
|
def names_to_idxs(
|
66
68
|
model: js.model.JaxSimModel, *, joint_names: Sequence[str]
|
@@ -141,6 +143,7 @@ def position_limit(
|
|
141
143
|
return s_min.astype(float), s_max.astype(float)
|
142
144
|
|
143
145
|
|
146
|
+
@js.common.named_scope
|
144
147
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
145
148
|
def position_limits(
|
146
149
|
model: js.model.JaxSimModel, *, joint_names: Sequence[str] | None = None
|
@@ -176,6 +179,7 @@ def position_limits(
|
|
176
179
|
# ======================
|
177
180
|
|
178
181
|
|
182
|
+
@js.common.named_scope
|
179
183
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
180
184
|
def random_joint_positions(
|
181
185
|
model: js.model.JaxSimModel,
|
@@ -491,6 +491,7 @@ def reduce(
|
|
491
491
|
# ===================
|
492
492
|
|
493
493
|
|
494
|
+
@js.common.named_scope
|
494
495
|
@jax.jit
|
495
496
|
def total_mass(model: JaxSimModel) -> jtp.Float:
|
496
497
|
"""
|
@@ -506,6 +507,7 @@ def total_mass(model: JaxSimModel) -> jtp.Float:
|
|
506
507
|
return model.kin_dyn_parameters.link_parameters.mass.sum().astype(float)
|
507
508
|
|
508
509
|
|
510
|
+
@js.common.named_scope
|
509
511
|
@jax.jit
|
510
512
|
def link_spatial_inertia_matrices(model: JaxSimModel) -> jtp.Array:
|
511
513
|
"""
|
@@ -528,6 +530,7 @@ def link_spatial_inertia_matrices(model: JaxSimModel) -> jtp.Array:
|
|
528
530
|
# ==============================
|
529
531
|
|
530
532
|
|
533
|
+
@js.common.named_scope
|
531
534
|
@jax.jit
|
532
535
|
def forward_kinematics(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Array:
|
533
536
|
"""
|
@@ -915,6 +918,7 @@ def forward_dynamics(
|
|
915
918
|
)
|
916
919
|
|
917
920
|
|
921
|
+
@js.common.named_scope
|
918
922
|
@jax.jit
|
919
923
|
def forward_dynamics_aba(
|
920
924
|
model: JaxSimModel,
|
@@ -1059,6 +1063,7 @@ def forward_dynamics_aba(
|
|
1059
1063
|
return C_v̇_WB.astype(float), s̈.astype(float)
|
1060
1064
|
|
1061
1065
|
|
1066
|
+
@js.common.named_scope
|
1062
1067
|
@jax.jit
|
1063
1068
|
def forward_dynamics_crb(
|
1064
1069
|
model: JaxSimModel,
|
@@ -1150,6 +1155,7 @@ def forward_dynamics_crb(
|
|
1150
1155
|
return v̇_WB, s̈
|
1151
1156
|
|
1152
1157
|
|
1158
|
+
@js.common.named_scope
|
1153
1159
|
@jax.jit
|
1154
1160
|
def free_floating_mass_matrix(
|
1155
1161
|
model: JaxSimModel, data: js.data.JaxSimModelData
|
@@ -1195,6 +1201,7 @@ def free_floating_mass_matrix(
|
|
1195
1201
|
raise ValueError(data.velocity_representation)
|
1196
1202
|
|
1197
1203
|
|
1204
|
+
@js.common.named_scope
|
1198
1205
|
@jax.jit
|
1199
1206
|
def free_floating_coriolis_matrix(
|
1200
1207
|
model: JaxSimModel, data: js.data.JaxSimModelData
|
@@ -1311,6 +1318,7 @@ def free_floating_coriolis_matrix(
|
|
1311
1318
|
raise ValueError(data.velocity_representation)
|
1312
1319
|
|
1313
1320
|
|
1321
|
+
@js.common.named_scope
|
1314
1322
|
@jax.jit
|
1315
1323
|
def inverse_dynamics(
|
1316
1324
|
model: JaxSimModel,
|
@@ -1466,6 +1474,7 @@ def inverse_dynamics(
|
|
1466
1474
|
return f_B.astype(float), τ.astype(float)
|
1467
1475
|
|
1468
1476
|
|
1477
|
+
@js.common.named_scope
|
1469
1478
|
@jax.jit
|
1470
1479
|
def free_floating_gravity_forces(
|
1471
1480
|
model: JaxSimModel, data: js.data.JaxSimModelData
|
@@ -1515,6 +1524,7 @@ def free_floating_gravity_forces(
|
|
1515
1524
|
).astype(float)
|
1516
1525
|
|
1517
1526
|
|
1527
|
+
@js.common.named_scope
|
1518
1528
|
@jax.jit
|
1519
1529
|
def free_floating_bias_forces(
|
1520
1530
|
model: JaxSimModel, data: js.data.JaxSimModelData
|
@@ -1584,6 +1594,7 @@ def free_floating_bias_forces(
|
|
1584
1594
|
# ==========================
|
1585
1595
|
|
1586
1596
|
|
1597
|
+
@js.common.named_scope
|
1587
1598
|
@jax.jit
|
1588
1599
|
def locked_spatial_inertia(
|
1589
1600
|
model: JaxSimModel, data: js.data.JaxSimModelData
|
@@ -1602,6 +1613,7 @@ def locked_spatial_inertia(
|
|
1602
1613
|
return total_momentum_jacobian(model=model, data=data)[:, 0:6]
|
1603
1614
|
|
1604
1615
|
|
1616
|
+
@js.common.named_scope
|
1605
1617
|
@jax.jit
|
1606
1618
|
def total_momentum(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Vector:
|
1607
1619
|
"""
|
@@ -1690,6 +1702,7 @@ def total_momentum_jacobian(
|
|
1690
1702
|
raise ValueError(output_vel_repr)
|
1691
1703
|
|
1692
1704
|
|
1705
|
+
@js.common.named_scope
|
1693
1706
|
@jax.jit
|
1694
1707
|
def average_velocity(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Vector:
|
1695
1708
|
"""
|
@@ -1778,6 +1791,7 @@ def average_velocity_jacobian(
|
|
1778
1791
|
# ========================
|
1779
1792
|
|
1780
1793
|
|
1794
|
+
@js.common.named_scope
|
1781
1795
|
@jax.jit
|
1782
1796
|
def link_bias_accelerations(
|
1783
1797
|
model: JaxSimModel,
|
@@ -1987,6 +2001,7 @@ def link_bias_accelerations(
|
|
1987
2001
|
return O_v̇_WL
|
1988
2002
|
|
1989
2003
|
|
2004
|
+
@js.common.named_scope
|
1990
2005
|
@jax.jit
|
1991
2006
|
def link_contact_forces(
|
1992
2007
|
model: js.model.JaxSimModel,
|
@@ -2062,6 +2077,7 @@ def link_contact_forces(
|
|
2062
2077
|
# ======
|
2063
2078
|
|
2064
2079
|
|
2080
|
+
@js.common.named_scope
|
2065
2081
|
@jax.jit
|
2066
2082
|
def mechanical_energy(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Float:
|
2067
2083
|
"""
|
@@ -2081,6 +2097,7 @@ def mechanical_energy(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.
|
|
2081
2097
|
return (K + U).astype(float)
|
2082
2098
|
|
2083
2099
|
|
2100
|
+
@js.common.named_scope
|
2084
2101
|
@jax.jit
|
2085
2102
|
def kinetic_energy(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Float:
|
2086
2103
|
"""
|
@@ -2102,6 +2119,7 @@ def kinetic_energy(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Flo
|
|
2102
2119
|
return K.squeeze().astype(float)
|
2103
2120
|
|
2104
2121
|
|
2122
|
+
@js.common.named_scope
|
2105
2123
|
@jax.jit
|
2106
2124
|
def potential_energy(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.Float:
|
2107
2125
|
"""
|
@@ -2128,6 +2146,7 @@ def potential_energy(model: JaxSimModel, data: js.data.JaxSimModelData) -> jtp.F
|
|
2128
2146
|
# ==========
|
2129
2147
|
|
2130
2148
|
|
2149
|
+
@js.common.named_scope
|
2131
2150
|
@jax.jit
|
2132
2151
|
def step(
|
2133
2152
|
model: JaxSimModel,
|
@@ -85,6 +85,7 @@ def wrap_system_dynamics_for_integration(
|
|
85
85
|
# ==================================
|
86
86
|
|
87
87
|
|
88
|
+
@js.common.named_scope
|
88
89
|
@jax.jit
|
89
90
|
def system_velocity_dynamics(
|
90
91
|
model: js.model.JaxSimModel,
|
@@ -331,6 +332,7 @@ def system_acceleration(
|
|
331
332
|
return v̇_WB, s̈
|
332
333
|
|
333
334
|
|
335
|
+
@js.common.named_scope
|
334
336
|
@jax.jit
|
335
337
|
def system_position_dynamics(
|
336
338
|
model: js.model.JaxSimModel,
|
@@ -370,6 +372,7 @@ def system_position_dynamics(
|
|
370
372
|
return W_ṗ_B, W_Q̇_B, ṡ
|
371
373
|
|
372
374
|
|
375
|
+
@js.common.named_scope
|
373
376
|
@jax.jit
|
374
377
|
def system_dynamics(
|
375
378
|
model: js.model.JaxSimModel,
|
@@ -163,7 +163,7 @@ class JaxSimModelReferences(js.common.ModelDataWithVelocityRepresentation):
|
|
163
163
|
# ==================
|
164
164
|
# Extract quantities
|
165
165
|
# ==================
|
166
|
-
|
166
|
+
@js.common.named_scope
|
167
167
|
@functools.partial(jax.jit, static_argnames=["link_names"])
|
168
168
|
def link_forces(
|
169
169
|
self,
|
@@ -301,7 +301,7 @@ class JaxSimModelReferences(js.common.ModelDataWithVelocityRepresentation):
|
|
301
301
|
# ================
|
302
302
|
# Store quantities
|
303
303
|
# ================
|
304
|
-
|
304
|
+
@js.common.named_scope
|
305
305
|
@functools.partial(jax.jit, static_argnames=["joint_names"])
|
306
306
|
def set_joint_force_references(
|
307
307
|
self,
|
@@ -346,6 +346,7 @@ class JaxSimModelReferences(js.common.ModelDataWithVelocityRepresentation):
|
|
346
346
|
|
347
347
|
return replace(forces=self._joint_force_references.at[joint_idxs].set(forces))
|
348
348
|
|
349
|
+
@js.common.named_scope
|
349
350
|
@functools.partial(jax.jit, static_argnames=["link_names", "additive"])
|
350
351
|
def apply_link_forces(
|
351
352
|
self,
|
@@ -117,22 +117,19 @@ def create_box_collision(
|
|
117
117
|
|
118
118
|
center = np.array([x / 2, y / 2, z / 2])
|
119
119
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
np.array([x, 0, z]),
|
129
|
-
np.array([x, y, z]),
|
130
|
-
np.array([0, y, z]),
|
131
|
-
]
|
132
|
-
)
|
133
|
-
- center
|
120
|
+
# Define the bottom corners.
|
121
|
+
bottom_corners = np.array([[0, 0, 0], [x, 0, 0], [x, y, 0], [0, y, 0]])
|
122
|
+
|
123
|
+
# Conditionally add the top corners based on the environment variable.
|
124
|
+
top_corners = (
|
125
|
+
np.array([[0, 0, z], [x, 0, z], [x, y, z], [0, y, z]])
|
126
|
+
if not os.environ.get("JAXSIM_COLLISION_USE_BOTTOM_ONLY", "0")
|
127
|
+
else []
|
134
128
|
)
|
135
129
|
|
130
|
+
# Combine and shift by the center
|
131
|
+
box_corners = np.vstack([bottom_corners, *top_corners]) - center
|
132
|
+
|
136
133
|
H = collision.pose.transform() if collision.pose is not None else np.eye(4)
|
137
134
|
|
138
135
|
center_wrt_link = (H @ np.hstack([center, 1.0]))[0:-1]
|
@@ -170,23 +167,31 @@ def create_sphere_collision(
|
|
170
167
|
|
171
168
|
# From https://stackoverflow.com/a/26127012
|
172
169
|
def fibonacci_sphere(samples: int) -> npt.NDArray:
|
173
|
-
|
174
|
-
phi = np.pi * (3.0 - np.sqrt(5.0))
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
170
|
+
# Get the golden ratio in radians.
|
171
|
+
phi = np.pi * (3.0 - np.sqrt(5.0))
|
172
|
+
|
173
|
+
# Generate the points.
|
174
|
+
points = [
|
175
|
+
np.array(
|
176
|
+
[
|
177
|
+
np.cos(phi * i)
|
178
|
+
* np.sqrt(1 - (y := 1 - 2 * i / (samples - 1)) ** 2),
|
179
|
+
y,
|
180
|
+
np.sin(phi * i) * np.sqrt(1 - y**2),
|
181
|
+
]
|
182
|
+
)
|
183
|
+
for i in range(samples)
|
184
|
+
]
|
184
185
|
|
185
|
-
|
186
|
+
# Filter to keep only the bottom half if required.
|
187
|
+
if os.environ.get("JAXSIM_COLLISION_USE_BOTTOM_ONLY", "0"):
|
188
|
+
# Keep only the points with z <= 0.
|
189
|
+
points = [point for point in points if point[2] <= 0]
|
186
190
|
|
187
191
|
return np.vstack(points)
|
188
192
|
|
189
193
|
r = collision.geometry.sphere.radius
|
194
|
+
|
190
195
|
sphere_points = r * fibonacci_sphere(
|
191
196
|
samples=int(os.getenv(key="JAXSIM_COLLISION_SPHERE_POINTS", default="50"))
|
192
197
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.5.1.
|
3
|
+
Version: 0.5.1.dev63
|
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
|
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.5.1.dev56 → jaxsim-0.5.1.dev63}/examples/jaxsim_as_multibody_dynamics_library.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
|
File without changes
|
File without changes
|