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.
Files changed (113) hide show
  1. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/PKG-INFO +1 -1
  2. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/_version.py +2 -2
  3. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/PKG-INFO +1 -1
  4. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/SOURCES.txt +1 -0
  5. jaxsim-0.2.dev366/tests/test_simulations.py +92 -0
  6. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.devcontainer/Dockerfile +0 -0
  7. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.devcontainer/devcontainer.json +0 -0
  8. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/CODEOWNERS +0 -0
  9. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/workflows/ci_cd.yml +0 -0
  10. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/workflows/read_the_docs.yml +0 -0
  11. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.github/workflows/style.yml +0 -0
  12. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.gitignore +0 -0
  13. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.pre-commit-config.yaml +0 -0
  14. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/.readthedocs.yaml +0 -0
  15. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/CONTRIBUTING.md +0 -0
  16. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/LICENSE +0 -0
  17. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/README.md +0 -0
  18. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/Makefile +0 -0
  19. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/conf.py +0 -0
  20. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/guide/install.rst +0 -0
  21. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/index.rst +0 -0
  22. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/make.bat +0 -0
  23. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/high_level.rst +0 -0
  24. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/math.rst +0 -0
  25. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/parsers.rst +0 -0
  26. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/physics.rst +0 -0
  27. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/simulation.rst +0 -0
  28. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/typing.rst +0 -0
  29. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/docs/modules/utils.rst +0 -0
  30. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/environment.yml +0 -0
  31. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/.gitattributes +0 -0
  32. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/.gitignore +0 -0
  33. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/PD_controller.ipynb +0 -0
  34. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/Parallel_computing.ipynb +0 -0
  35. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/README.md +0 -0
  36. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/assets/cartpole.urdf +0 -0
  37. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/pixi.lock +0 -0
  38. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/examples/pixi.toml +0 -0
  39. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/pyproject.toml +0 -0
  40. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/setup.cfg +0 -0
  41. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/setup.py +0 -0
  42. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/__init__.py +0 -0
  43. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/__init__.py +0 -0
  44. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/com.py +0 -0
  45. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/common.py +0 -0
  46. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/contact.py +0 -0
  47. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/data.py +0 -0
  48. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/joint.py +0 -0
  49. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  50. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/link.py +0 -0
  51. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/model.py +0 -0
  52. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/ode.py +0 -0
  53. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/ode_data.py +0 -0
  54. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/api/references.py +0 -0
  55. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/__init__.py +0 -0
  56. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/common.py +0 -0
  57. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/fixed_step.py +0 -0
  58. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/integrators/variable_step.py +0 -0
  59. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/logging.py +0 -0
  60. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/__init__.py +0 -0
  61. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/adjoint.py +0 -0
  62. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/cross.py +0 -0
  63. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/inertia.py +0 -0
  64. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/joint_model.py +0 -0
  65. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/quaternion.py +0 -0
  66. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/rotation.py +0 -0
  67. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/skew.py +0 -0
  68. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/math/transform.py +0 -0
  69. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/__init__.py +0 -0
  70. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/__main__.py +0 -0
  71. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/loaders.py +0 -0
  72. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/model.py +0 -0
  73. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/mujoco/visualizer.py +0 -0
  74. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/__init__.py +0 -0
  75. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  76. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  77. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  78. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/link.py +0 -0
  79. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/descriptions/model.py +0 -0
  80. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  81. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/rod/__init__.py +0 -0
  82. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/rod/parser.py +0 -0
  83. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/parsers/rod/utils.py +0 -0
  84. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/__init__.py +0 -0
  85. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/aba.py +0 -0
  86. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/collidable_points.py +0 -0
  87. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/crba.py +0 -0
  88. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  89. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/jacobian.py +0 -0
  90. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/rnea.py +0 -0
  91. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/soft_contacts.py +0 -0
  92. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/rbda/utils.py +0 -0
  93. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/terrain/__init__.py +0 -0
  94. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/terrain/terrain.py +0 -0
  95. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/typing.py +0 -0
  96. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/__init__.py +0 -0
  97. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/hashless.py +0 -0
  98. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  99. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim/utils/tracing.py +0 -0
  100. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  101. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/not-zip-safe +0 -0
  102. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/requires.txt +0 -0
  103. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/src/jaxsim.egg-info/top_level.txt +0 -0
  104. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/__init__.py +0 -0
  105. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/conftest.py +0 -0
  106. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_com.py +0 -0
  107. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_data.py +0 -0
  108. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_joint.py +0 -0
  109. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_link.py +0 -0
  110. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_api_model.py +0 -0
  111. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_automatic_differentiation.py +0 -0
  112. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/test_pytree.py +0 -0
  113. {jaxsim-0.2.dev364 → jaxsim-0.2.dev366}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.dev364
3
+ Version: 0.2.dev366
4
4
  Summary: A physics engine in reduced coordinates implemented with JAX.
5
5
  Home-page: https://github.com/ami-iit/jaxsim
6
6
  Author: Diego Ferigo
@@ -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.dev364'
16
- __version_tuple__ = version_tuple = (0, 2, 'dev364')
15
+ __version__ = version = '0.2.dev366'
16
+ __version_tuple__ = version_tuple = (0, 2, 'dev366')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.dev364
3
+ Version: 0.2.dev366
4
4
  Summary: A physics engine in reduced coordinates implemented with JAX.
5
5
  Home-page: https://github.com/ami-iit/jaxsim
6
6
  Author: Diego Ferigo
@@ -108,4 +108,5 @@ tests/test_api_link.py
108
108
  tests/test_api_model.py
109
109
  tests/test_automatic_differentiation.py
110
110
  tests/test_pytree.py
111
+ tests/test_simulations.py
111
112
  tests/utils_idyntree.py
@@ -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