jaxsim 0.2.dev364__tar.gz → 0.2.dev366__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.dev364 → jaxsim-0.2.dev366}/PKG-INFO +1 -1
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/PKG-INFO +1 -1
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/SOURCES.txt +1 -0
- jaxsim-0.2.dev366/tests/test_simulations.py +92 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/CODEOWNERS +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/workflows/style.yml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.gitignore +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.readthedocs.yaml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/CONTRIBUTING.md +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/LICENSE +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/README.md +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/Makefile +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/conf.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/guide/install.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/index.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/make.bat +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/high_level.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/math.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/physics.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/simulation.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/typing.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/utils.rst +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/environment.yml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/.gitattributes +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/.gitignore +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/PD_controller.ipynb +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/Parallel_computing.ipynb +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/README.md +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/pixi.lock +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/pixi.toml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/pyproject.toml +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/setup.cfg +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/setup.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/data.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/model.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/ode.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/ode_data.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/common.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/fixed_step.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/variable_step.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/soft_contacts.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/hashless.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/not-zip-safe +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/requires.txt +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/__init__.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/conftest.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_com.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_data.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_joint.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_link.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_model.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_pytree.py +0 -0
- {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/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.
|
16
|
-
__version_tuple__ = version_tuple = (0, 2, '
|
15
|
+
__version__ = version = '0.2.dev366'
|
16
|
+
__version_tuple__ = version_tuple = (0, 2, 'dev366')
|
@@ -0,0 +1,92 @@
|
|
1
|
+
import jax.numpy as jnp
|
2
|
+
import pytest
|
3
|
+
|
4
|
+
import jaxsim.api as js
|
5
|
+
import jaxsim.integrators
|
6
|
+
import jaxsim.rbda
|
7
|
+
from jaxsim import VelRepr
|
8
|
+
|
9
|
+
|
10
|
+
def test_box_with_external_forces(
|
11
|
+
jaxsim_model_box: js.model.JaxSimModel,
|
12
|
+
velocity_representation: VelRepr,
|
13
|
+
):
|
14
|
+
"""
|
15
|
+
This test simulates a box falling due to gravity.
|
16
|
+
We apply to its CoM a 6D force that balances exactly the gravitational force.
|
17
|
+
The box should not fall.
|
18
|
+
"""
|
19
|
+
|
20
|
+
model = jaxsim_model_box
|
21
|
+
|
22
|
+
# Build the data of the model.
|
23
|
+
data0 = js.data.JaxSimModelData.build(
|
24
|
+
model=model,
|
25
|
+
base_position=jnp.array([0.0, 0.0, 0.5]),
|
26
|
+
velocity_representation=velocity_representation,
|
27
|
+
)
|
28
|
+
|
29
|
+
# Compute the force due to gravity at the CoM.
|
30
|
+
mg = data0.standard_gravity() * js.model.total_mass(model=model)
|
31
|
+
G_f = jnp.array([0.0, 0.0, mg, 0, 0, 0])
|
32
|
+
|
33
|
+
# Compute the position of the CoM expressed in the coordinates of the link frame L.
|
34
|
+
L_p_CoM = js.link.com_position(
|
35
|
+
model=model, data=data0, link_index=0, in_link_frame=True
|
36
|
+
)
|
37
|
+
|
38
|
+
# Compute the transform of 6D forces from the CoM to the link frame.
|
39
|
+
L_H_G = jaxsim.math.Transform.from_quaternion_and_translation(translation=L_p_CoM)
|
40
|
+
G_Xv_L = jaxsim.math.Adjoint.from_transform(transform=L_H_G, inverse=True)
|
41
|
+
L_Xf_G = G_Xv_L.T
|
42
|
+
L_f = L_Xf_G @ G_f
|
43
|
+
|
44
|
+
# Initialize a references object that simplifies handling external forces.
|
45
|
+
references = js.references.JaxSimModelReferences.build(
|
46
|
+
model=model,
|
47
|
+
data=data0,
|
48
|
+
velocity_representation=velocity_representation,
|
49
|
+
)
|
50
|
+
|
51
|
+
# Apply a link forces to the base link.
|
52
|
+
with references.switch_velocity_representation(VelRepr.Body):
|
53
|
+
references = references.apply_link_forces(
|
54
|
+
forces=jnp.atleast_2d(L_f),
|
55
|
+
link_names=model.link_names()[0:1],
|
56
|
+
model=model,
|
57
|
+
data=data0,
|
58
|
+
additive=False,
|
59
|
+
)
|
60
|
+
|
61
|
+
# Create the integrator.
|
62
|
+
integrator = jaxsim.integrators.fixed_step.RungeKutta4SO3.build(
|
63
|
+
dynamics=js.ode.wrap_system_dynamics_for_integration(
|
64
|
+
model=model, data=data0, system_dynamics=js.ode.system_dynamics
|
65
|
+
)
|
66
|
+
)
|
67
|
+
|
68
|
+
# Initialize the integrator.
|
69
|
+
tf = 0.5
|
70
|
+
dt = 0.001
|
71
|
+
T = jnp.arange(start=0, stop=tf * 1e9, step=dt * 1e9, dtype=int)
|
72
|
+
integrator_state = integrator.init(x0=data0.state, t0=0.0, dt=dt)
|
73
|
+
|
74
|
+
# Copy the initial data...
|
75
|
+
data = data0.copy()
|
76
|
+
|
77
|
+
# ... and step the simulation.
|
78
|
+
for t_ns in T:
|
79
|
+
|
80
|
+
data, integrator_state = js.model.step(
|
81
|
+
model=model,
|
82
|
+
data=data,
|
83
|
+
dt=dt,
|
84
|
+
integrator=integrator,
|
85
|
+
integrator_state=integrator_state,
|
86
|
+
link_forces=references.link_forces(model=model, data=data),
|
87
|
+
)
|
88
|
+
|
89
|
+
# Check that the box didn't move.
|
90
|
+
assert data.time() == t_ns / 1e9 + dt
|
91
|
+
assert data.base_position() == pytest.approx(data0.base_position())
|
92
|
+
assert data.base_orientation() == pytest.approx(data0.base_orientation())
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|