jaxsim 0.2.1.dev101__tar.gz → 0.2.1.dev106__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 (118) hide show
  1. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/PKG-INFO +1 -1
  2. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/_version.py +2 -2
  3. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/common.py +4 -2
  4. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/ode.py +14 -3
  5. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim.egg-info/PKG-INFO +1 -1
  6. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_simulations.py +81 -0
  7. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.devcontainer/Dockerfile +0 -0
  8. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.devcontainer/devcontainer.json +0 -0
  9. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.gitattributes +0 -0
  10. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.github/CODEOWNERS +0 -0
  11. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.github/workflows/ci_cd.yml +0 -0
  12. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.github/workflows/read_the_docs.yml +0 -0
  13. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.github/workflows/style.yml +0 -0
  14. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.gitignore +0 -0
  15. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.pre-commit-config.yaml +0 -0
  16. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/.readthedocs.yaml +0 -0
  17. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/CONTRIBUTING.md +0 -0
  18. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/LICENSE +0 -0
  19. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/README.md +0 -0
  20. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/Makefile +0 -0
  21. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/conf.py +0 -0
  22. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/guide/install.rst +0 -0
  23. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/index.rst +0 -0
  24. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/make.bat +0 -0
  25. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/api.rst +0 -0
  26. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/index.rst +0 -0
  27. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/integrators.rst +0 -0
  28. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/math.rst +0 -0
  29. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/mujoco.rst +0 -0
  30. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/parsers.rst +0 -0
  31. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/rbda.rst +0 -0
  32. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/typing.rst +0 -0
  33. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/docs/modules/utils.rst +0 -0
  34. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/environment.yml +0 -0
  35. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/examples/.gitattributes +0 -0
  36. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/examples/.gitignore +0 -0
  37. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/examples/PD_controller.ipynb +0 -0
  38. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/examples/Parallel_computing.ipynb +0 -0
  39. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/examples/README.md +0 -0
  40. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/examples/assets/cartpole.urdf +0 -0
  41. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/pixi.lock +0 -0
  42. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/pyproject.toml +0 -0
  43. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/setup.cfg +0 -0
  44. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/setup.py +0 -0
  45. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/__init__.py +0 -0
  46. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/__init__.py +0 -0
  47. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/com.py +0 -0
  48. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/contact.py +0 -0
  49. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/data.py +0 -0
  50. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/frame.py +0 -0
  51. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/joint.py +0 -0
  52. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  53. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/link.py +0 -0
  54. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/model.py +0 -0
  55. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/ode_data.py +0 -0
  56. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/api/references.py +0 -0
  57. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/integrators/__init__.py +0 -0
  58. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/integrators/common.py +0 -0
  59. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/integrators/fixed_step.py +0 -0
  60. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/integrators/variable_step.py +0 -0
  61. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/logging.py +0 -0
  62. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/__init__.py +0 -0
  63. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/adjoint.py +0 -0
  64. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/cross.py +0 -0
  65. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/inertia.py +0 -0
  66. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/joint_model.py +0 -0
  67. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/quaternion.py +0 -0
  68. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/rotation.py +0 -0
  69. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/skew.py +0 -0
  70. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/math/transform.py +0 -0
  71. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/mujoco/__init__.py +0 -0
  72. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/mujoco/__main__.py +0 -0
  73. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/mujoco/loaders.py +0 -0
  74. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/mujoco/model.py +0 -0
  75. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/mujoco/visualizer.py +0 -0
  76. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/__init__.py +0 -0
  77. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  78. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  79. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  80. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/descriptions/link.py +0 -0
  81. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/descriptions/model.py +0 -0
  82. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  83. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/rod/__init__.py +0 -0
  84. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/rod/parser.py +0 -0
  85. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/parsers/rod/utils.py +0 -0
  86. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/__init__.py +0 -0
  87. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/aba.py +0 -0
  88. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/collidable_points.py +0 -0
  89. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/crba.py +0 -0
  90. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  91. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/jacobian.py +0 -0
  92. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/rnea.py +0 -0
  93. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/soft_contacts.py +0 -0
  94. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/rbda/utils.py +0 -0
  95. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/terrain/__init__.py +0 -0
  96. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/terrain/terrain.py +0 -0
  97. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/typing.py +0 -0
  98. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/utils/__init__.py +0 -0
  99. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  100. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/utils/tracing.py +0 -0
  101. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim/utils/wrappers.py +0 -0
  102. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  103. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  104. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim.egg-info/not-zip-safe +0 -0
  105. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim.egg-info/requires.txt +0 -0
  106. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/src/jaxsim.egg-info/top_level.txt +0 -0
  107. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/__init__.py +0 -0
  108. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/conftest.py +0 -0
  109. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_api_com.py +0 -0
  110. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_api_data.py +0 -0
  111. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_api_frame.py +0 -0
  112. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_api_joint.py +0 -0
  113. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_api_link.py +0 -0
  114. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_api_model.py +0 -0
  115. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_automatic_differentiation.py +0 -0
  116. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_contact.py +0 -0
  117. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/test_pytree.py +0 -0
  118. {jaxsim-0.2.1.dev101 → jaxsim-0.2.1.dev106}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.1.dev101
3
+ Version: 0.2.1.dev106
4
4
  Home-page: https://github.com/ami-iit/jaxsim
5
5
  Author: Diego Ferigo
6
6
  Author-email: diego.ferigo@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.2.1.dev101'
16
- __version_tuple__ = version_tuple = (0, 2, 1, 'dev101')
15
+ __version__ = version = '0.2.1.dev106'
16
+ __version_tuple__ = version_tuple = (0, 2, 1, 'dev106')
@@ -87,7 +87,8 @@ class ModelDataWithVelocityRepresentation(JaxsimDataclass, abc.ABC):
87
87
  array: jtp.Array,
88
88
  other_representation: VelRepr,
89
89
  transform: jtp.Matrix,
90
- is_force: bool = False,
90
+ *,
91
+ is_force: bool,
91
92
  ) -> jtp.Array:
92
93
  r"""
93
94
  Convert a 6D quantity from inertial-fixed to another representation.
@@ -153,7 +154,8 @@ class ModelDataWithVelocityRepresentation(JaxsimDataclass, abc.ABC):
153
154
  array: jtp.Array,
154
155
  other_representation: VelRepr,
155
156
  transform: jtp.Matrix,
156
- is_force: bool = False,
157
+ *,
158
+ is_force: bool,
157
159
  ) -> jtp.Array:
158
160
  r"""
159
161
  Convert a 6D quantity from another representation to inertial-fixed.
@@ -113,7 +113,7 @@ def system_velocity_dynamics(
113
113
  ).astype(float)
114
114
 
115
115
  # Build link forces if not provided
116
- W_f_L = (
116
+ O_f_L = (
117
117
  jnp.atleast_2d(link_forces.squeeze())
118
118
  if link_forces is not None
119
119
  else jnp.zeros((model.number_of_links(), 6))
@@ -125,7 +125,7 @@ def system_velocity_dynamics(
125
125
 
126
126
  # Initialize the 6D forces W_f ∈ ℝ^{n_L × 6} applied to links due to contact
127
127
  # with the terrain.
128
- W_f_Li_terrain = jnp.zeros_like(W_f_L).astype(float)
128
+ W_f_Li_terrain = jnp.zeros_like(O_f_L).astype(float)
129
129
 
130
130
  # Initialize the 6D contact forces W_f ∈ ℝ^{n_c × 6} applied to collidable points,
131
131
  # expressed in the world frame.
@@ -183,7 +183,7 @@ def system_velocity_dynamics(
183
183
 
184
184
  # Compute the joint friction torque
185
185
  τ_friction = -(
186
- jnp.diag(kc) @ jnp.sign(data.state.physics_model.joint_positions)
186
+ jnp.diag(kc) @ jnp.sign(data.state.physics_model.joint_velocities)
187
187
  + jnp.diag(kv) @ data.state.physics_model.joint_velocities
188
188
  )
189
189
 
@@ -194,6 +194,17 @@ def system_velocity_dynamics(
194
194
  # Compute the total joint forces
195
195
  τ_total = τ + τ_friction + τ_position_limit
196
196
 
197
+ references = js.references.JaxSimModelReferences.build(
198
+ model=model,
199
+ joint_force_references=τ_total,
200
+ link_forces=O_f_L,
201
+ data=data,
202
+ velocity_representation=data.velocity_representation,
203
+ )
204
+
205
+ with references.switch_velocity_representation(VelRepr.Inertial):
206
+ W_f_L = references.link_forces(model=model, data=data)
207
+
197
208
  # Compute the total external 6D forces applied to the links
198
209
  W_f_L_total = W_f_L + W_f_Li_terrain
199
210
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.1.dev101
3
+ Version: 0.2.1.dev106
4
4
  Home-page: https://github.com/ami-iit/jaxsim
5
5
  Author: Diego Ferigo
6
6
  Author-email: diego.ferigo@iit.it
@@ -1,3 +1,4 @@
1
+ import jax
1
2
  import jax.numpy as jnp
2
3
  import pytest
3
4
 
@@ -90,3 +91,83 @@ def test_box_with_external_forces(
90
91
  assert data.time() == t_ns / 1e9 + dt
91
92
  assert data.base_position() == pytest.approx(data0.base_position())
92
93
  assert data.base_orientation() == pytest.approx(data0.base_orientation())
94
+
95
+
96
+ def test_box_with_zero_gravity(
97
+ jaxsim_model_box: js.model.JaxSimModel,
98
+ velocity_representation: VelRepr,
99
+ prng_key: jnp.ndarray,
100
+ ):
101
+
102
+ model = jaxsim_model_box
103
+
104
+ # Split the PRNG key.
105
+ key, subkey, subkey2 = jax.random.split(prng_key, num=3)
106
+
107
+ # Build the data of the model.
108
+ data0 = js.data.JaxSimModelData.build(
109
+ model=model,
110
+ base_position=jax.random.uniform(subkey2, shape=(3,)),
111
+ velocity_representation=velocity_representation,
112
+ standard_gravity=0.0,
113
+ soft_contacts_params=jaxsim.rbda.SoftContactsParams.build(K=0.0, D=0.0, mu=0.0),
114
+ )
115
+
116
+ # Generate a random linear force.
117
+ L_f = (
118
+ jax.random.uniform(subkey, shape=(model.number_of_links(), 6))
119
+ .at[:, 3:]
120
+ .set(jnp.zeros(3))
121
+ )
122
+
123
+ # Initialize a references object that simplifies handling external forces.
124
+ references = js.references.JaxSimModelReferences.build(
125
+ model=model,
126
+ data=data0,
127
+ velocity_representation=velocity_representation,
128
+ )
129
+
130
+ # Apply a link forces to the base link.
131
+ references = references.apply_link_forces(
132
+ forces=jnp.atleast_2d(L_f),
133
+ link_names=model.link_names(),
134
+ model=model,
135
+ data=data0,
136
+ additive=False,
137
+ )
138
+
139
+ # Create the integrator.
140
+ integrator = jaxsim.integrators.fixed_step.RungeKutta4SO3.build(
141
+ dynamics=js.ode.wrap_system_dynamics_for_integration(
142
+ model=model, data=data0, system_dynamics=js.ode.system_dynamics
143
+ )
144
+ )
145
+
146
+ # Initialize the integrator.
147
+ tf = 1.0
148
+ dt = 0.010
149
+ T = jnp.arange(start=0, stop=tf * 1e9, step=dt * 1e9, dtype=int)
150
+ integrator_state = integrator.init(x0=data0.state, t0=0.0, dt=dt)
151
+
152
+ # Copy the initial data...
153
+ data = data0.copy()
154
+
155
+ # ... and step the simulation.
156
+ for t_ns in T:
157
+
158
+ data, integrator_state = js.model.step(
159
+ model=model,
160
+ data=data,
161
+ dt=dt,
162
+ integrator=integrator,
163
+ integrator_state=integrator_state,
164
+ link_forces=references.link_forces(model=model, data=data),
165
+ )
166
+
167
+ # Check that the box moved as expected.
168
+ assert data.time() == t_ns / 1e9 + dt
169
+ assert data.base_position() == pytest.approx(
170
+ data0.base_position()
171
+ + 0.5 * L_f[:, :3].squeeze() / js.model.total_mass(model=model) * tf**2,
172
+ rel=1e-4,
173
+ )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes