jaxsim 0.3.1.dev51__tar.gz → 0.3.1.dev56__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.3.1.dev51 → jaxsim-0.3.1.dev56}/PKG-INFO +1 -1
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/ode.py +5 -8
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/PKG-INFO +1 -1
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_link.py +68 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.gitattributes +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/CODEOWNERS +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.github/workflows/style.yml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.gitignore +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/.readthedocs.yaml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/CONTRIBUTING.md +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/LICENSE +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/README.md +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/Makefile +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/conf.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/guide/install.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/index.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/make.bat +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/api.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/index.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/integrators.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/math.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/mujoco.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/rbda.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/typing.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/docs/modules/utils.rst +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/environment.yml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/.gitattributes +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/.gitignore +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/PD_controller.ipynb +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/Parallel_computing.ipynb +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/README.md +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/pixi.lock +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/pyproject.toml +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/setup.cfg +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/setup.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/data.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/frame.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/model.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/ode_data.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/exceptions.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/common.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/fixed_step.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/integrators/variable_step.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/contacts/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/contacts/common.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/contacts/soft.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim/utils/wrappers.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/SOURCES.txt +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/not-zip-safe +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/requires.txt +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/__init__.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/conftest.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_com.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_data.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_frame.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_joint.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_api_model.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_contact.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_exceptions.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_pytree.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/test_simulations.py +0 -0
- {jaxsim-0.3.1.dev51 → jaxsim-0.3.1.dev56}/tests/utils_idyntree.py +0 -0
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.3.1.
|
16
|
-
__version_tuple__ = version_tuple = (0, 3, 1, '
|
15
|
+
__version__ = version = '0.3.1.dev56'
|
16
|
+
__version_tuple__ = version_tuple = (0, 3, 1, 'dev56')
|
@@ -150,14 +150,11 @@ def system_velocity_dynamics(
|
|
150
150
|
# Sum the forces of all collidable points rigidly attached to a body.
|
151
151
|
# Since the contact forces W_f_Ci are expressed in the world frame,
|
152
152
|
# we don't need any coordinate transformation.
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
* W_f_Ci
|
159
|
-
).sum(axis=0)
|
160
|
-
)(jnp.arange(model.number_of_links()))
|
153
|
+
mask = parent_link_index_of_collidable_points[:, jnp.newaxis] == jnp.arange(
|
154
|
+
model.number_of_links()
|
155
|
+
)
|
156
|
+
|
157
|
+
W_f_Li_terrain = mask.T @ W_f_Ci
|
161
158
|
|
162
159
|
# ====================
|
163
160
|
# Enforce joint limits
|
@@ -223,6 +223,74 @@ def test_link_bias_acceleration(
|
|
223
223
|
Jν_js = js.link.bias_acceleration(model=model, data=data, link_index=index)
|
224
224
|
assert pytest.approx(Jν_idt) == Jν_js
|
225
225
|
|
226
|
+
# Test that the conversion of the link bias acceleration works as expected.
|
227
|
+
match data.velocity_representation:
|
228
|
+
|
229
|
+
# We exclude the mixed representation because converting the acceleration is
|
230
|
+
# more complex than using the plain 6D transform matrix.
|
231
|
+
case VelRepr.Mixed:
|
232
|
+
pass
|
233
|
+
|
234
|
+
# Inertial-fixed to body-fixed conversion.
|
235
|
+
case VelRepr.Inertial:
|
236
|
+
|
237
|
+
W_H_L = js.model.forward_kinematics(model=model, data=data)
|
238
|
+
|
239
|
+
W_a_bias_WL = jax.vmap(
|
240
|
+
lambda index: js.link.bias_acceleration(
|
241
|
+
model=model, data=data, link_index=index
|
242
|
+
)
|
243
|
+
)(jnp.arange(model.number_of_links()))
|
244
|
+
|
245
|
+
with data.switch_velocity_representation(VelRepr.Body):
|
246
|
+
|
247
|
+
W_X_L = jax.vmap(
|
248
|
+
lambda W_H_L: jaxsim.math.Adjoint.from_transform(transform=W_H_L)
|
249
|
+
)(W_H_L)
|
250
|
+
|
251
|
+
L_a_bias_WL = jax.vmap(
|
252
|
+
lambda index: js.link.bias_acceleration(
|
253
|
+
model=model, data=data, link_index=index
|
254
|
+
)
|
255
|
+
)(jnp.arange(model.number_of_links()))
|
256
|
+
|
257
|
+
W_a_bias_WL_converted = jax.vmap(
|
258
|
+
lambda W_X_L, L_a_bias_WL: W_X_L @ L_a_bias_WL
|
259
|
+
)(W_X_L, L_a_bias_WL)
|
260
|
+
|
261
|
+
assert W_a_bias_WL == pytest.approx(W_a_bias_WL_converted)
|
262
|
+
|
263
|
+
# Body-fixed to inertial-fixed conversion.
|
264
|
+
case VelRepr.Body:
|
265
|
+
|
266
|
+
W_H_L = js.model.forward_kinematics(model=model, data=data)
|
267
|
+
|
268
|
+
L_a_bias_WL = jax.vmap(
|
269
|
+
lambda index: js.link.bias_acceleration(
|
270
|
+
model=model, data=data, link_index=index
|
271
|
+
)
|
272
|
+
)(jnp.arange(model.number_of_links()))
|
273
|
+
|
274
|
+
with data.switch_velocity_representation(VelRepr.Inertial):
|
275
|
+
|
276
|
+
L_X_W = jax.vmap(
|
277
|
+
lambda W_H_L: jaxsim.math.Adjoint.from_transform(
|
278
|
+
transform=W_H_L, inverse=True
|
279
|
+
)
|
280
|
+
)(W_H_L)
|
281
|
+
|
282
|
+
W_a_bias_WL = jax.vmap(
|
283
|
+
lambda index: js.link.bias_acceleration(
|
284
|
+
model=model, data=data, link_index=index
|
285
|
+
)
|
286
|
+
)(jnp.arange(model.number_of_links()))
|
287
|
+
|
288
|
+
L_a_bias_WL_converted = jax.vmap(
|
289
|
+
lambda L_X_W, W_a_bias_WL: L_X_W @ W_a_bias_WL
|
290
|
+
)(L_X_W, W_a_bias_WL)
|
291
|
+
|
292
|
+
assert L_a_bias_WL == pytest.approx(L_a_bias_WL_converted)
|
293
|
+
|
226
294
|
|
227
295
|
def test_link_jacobian_derivative(
|
228
296
|
jaxsim_models_types: js.model.JaxSimModel,
|
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
|
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
|