jaxsim 0.2.1.dev121__tar.gz → 0.2.1.dev123__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.2.1.dev121 → jaxsim-0.2.1.dev123}/PKG-INFO +1 -1
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim.egg-info/PKG-INFO +1 -1
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_api_link.py +64 -1
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.gitattributes +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.github/CODEOWNERS +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.github/workflows/style.yml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.gitignore +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/.readthedocs.yaml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/CONTRIBUTING.md +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/LICENSE +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/README.md +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/Makefile +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/conf.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/guide/install.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/index.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/make.bat +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/api.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/index.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/integrators.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/math.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/mujoco.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/rbda.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/typing.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/docs/modules/utils.rst +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/environment.yml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/examples/.gitattributes +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/examples/.gitignore +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/examples/PD_controller.ipynb +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/examples/Parallel_computing.ipynb +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/examples/README.md +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/pixi.lock +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/pyproject.toml +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/setup.cfg +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/setup.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/data.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/frame.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/model.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/ode.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/ode_data.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/integrators/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/integrators/common.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/integrators/fixed_step.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/integrators/variable_step.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/soft_contacts.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim/utils/wrappers.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim.egg-info/SOURCES.txt +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim.egg-info/not-zip-safe +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim.egg-info/requires.txt +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/__init__.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/conftest.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_api_com.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_api_data.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_api_frame.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_api_joint.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_api_model.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_contact.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_pytree.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/tests/test_simulations.py +0 -0
- {jaxsim-0.2.1.dev121 → jaxsim-0.2.1.dev123}/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.2.1.
|
16
|
-
__version_tuple__ = version_tuple = (0, 2, 1, '
|
15
|
+
__version__ = version = '0.2.1.dev123'
|
16
|
+
__version_tuple__ = version_tuple = (0, 2, 1, 'dev123')
|
@@ -3,6 +3,7 @@ import jax.numpy as jnp
|
|
3
3
|
import pytest
|
4
4
|
|
5
5
|
import jaxsim.api as js
|
6
|
+
import jaxsim.math
|
6
7
|
from jaxsim import VelRepr
|
7
8
|
|
8
9
|
from . import utils_idyntree
|
@@ -250,4 +251,66 @@ def test_link_jacobian_derivative(
|
|
250
251
|
)(js.link.names_to_idxs(model=model, link_names=model.link_names()))
|
251
252
|
|
252
253
|
# Compare the two computations.
|
253
|
-
assert jnp.einsum("l6g,g->l6", O_J̇_WL_I, I_ν) == pytest.approx(
|
254
|
+
assert jnp.einsum("l6g,g->l6", O_J̇_WL_I, I_ν) == pytest.approx(
|
255
|
+
O_a_bias_WL, abs=1e-9
|
256
|
+
)
|
257
|
+
|
258
|
+
# Compute the plain Jacobian.
|
259
|
+
# This function will be used to compute the Jacobian derivative with AD.
|
260
|
+
# Given q, computing J̇ by AD-ing this function should work out-of-the-box with
|
261
|
+
# all velocity representations, that are handled internally when computing J.
|
262
|
+
def J(q) -> jax.Array:
|
263
|
+
|
264
|
+
data_ad = js.data.JaxSimModelData.zero(
|
265
|
+
model=model, velocity_representation=data.velocity_representation
|
266
|
+
)
|
267
|
+
|
268
|
+
data_ad = data_ad.reset_base_position(base_position=q[:3])
|
269
|
+
data_ad = data_ad.reset_base_quaternion(base_quaternion=q[3:7])
|
270
|
+
data_ad = data_ad.reset_joint_positions(positions=q[7:])
|
271
|
+
|
272
|
+
O_J_WL_I = js.model.generalized_free_floating_jacobian(
|
273
|
+
model=model, data=data_ad
|
274
|
+
)
|
275
|
+
|
276
|
+
return O_J_WL_I
|
277
|
+
|
278
|
+
def compute_q(data: js.data.JaxSimModelData) -> jax.Array:
|
279
|
+
|
280
|
+
q = jnp.hstack(
|
281
|
+
[data.base_position(), data.base_orientation(), data.joint_positions()]
|
282
|
+
)
|
283
|
+
|
284
|
+
return q
|
285
|
+
|
286
|
+
def compute_q̇(data: js.data.JaxSimModelData) -> jax.Array:
|
287
|
+
|
288
|
+
with data.switch_velocity_representation(VelRepr.Body):
|
289
|
+
B_ω_WB = data.base_velocity()[3:6]
|
290
|
+
|
291
|
+
with data.switch_velocity_representation(VelRepr.Mixed):
|
292
|
+
W_ṗ_B = data.base_velocity()[0:3]
|
293
|
+
|
294
|
+
W_Q̇_B = jaxsim.math.Quaternion.derivative(
|
295
|
+
quaternion=data.base_orientation(),
|
296
|
+
omega=B_ω_WB,
|
297
|
+
omega_in_body_fixed=True,
|
298
|
+
K=0.0,
|
299
|
+
).squeeze()
|
300
|
+
|
301
|
+
q̇ = jnp.hstack([W_ṗ_B, W_Q̇_B, data.joint_velocities()])
|
302
|
+
|
303
|
+
return q̇
|
304
|
+
|
305
|
+
# Compute q and q̇.
|
306
|
+
q = compute_q(data)
|
307
|
+
q̇ = compute_q̇(data)
|
308
|
+
|
309
|
+
# Compute dJ/dt with AD.
|
310
|
+
dJ_dq = jax.jacfwd(J, argnums=0)(q)
|
311
|
+
O_J̇_ad_WL_I = jnp.einsum("ijkq,q->ijk", dJ_dq, q̇)
|
312
|
+
|
313
|
+
assert O_J̇_ad_WL_I == pytest.approx(O_J̇_WL_I)
|
314
|
+
assert jnp.einsum("l6g,g->l6", O_J̇_ad_WL_I, I_ν) == pytest.approx(
|
315
|
+
jnp.einsum("l6g,g->l6", O_J̇_WL_I, I_ν)
|
316
|
+
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|