jaxsim 0.5.1.dev24__py3-none-any.whl → 0.5.1.dev37__py3-none-any.whl

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/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.5.1.dev24'
16
- __version_tuple__ = version_tuple = (0, 5, 1, 'dev24')
15
+ __version__ = version = '0.5.1.dev37'
16
+ __version_tuple__ = version_tuple = (0, 5, 1, 'dev37')
jaxsim/api/contact.py CHANGED
@@ -374,13 +374,7 @@ def estimate_good_contact_parameters(
374
374
  max_penetration=max_δ,
375
375
  number_of_active_collidable_points_steady_state=nc,
376
376
  damping_ratio=damping_ratio,
377
- **(
378
- dict(
379
- p=model.contact_model.parameters.p,
380
- q=model.contact_model.parameters.q,
381
- )
382
- | kwargs
383
- ),
377
+ **kwargs,
384
378
  )
385
379
 
386
380
  case contacts.ViscoElasticContacts():
@@ -394,13 +388,7 @@ def estimate_good_contact_parameters(
394
388
  max_penetration=max_δ,
395
389
  number_of_active_collidable_points_steady_state=nc,
396
390
  damping_ratio=damping_ratio,
397
- **(
398
- dict(
399
- p=model.contact_model.parameters.p,
400
- q=model.contact_model.parameters.q,
401
- )
402
- | kwargs
403
- ),
391
+ **kwargs,
404
392
  )
405
393
  )
406
394
 
jaxsim/api/data.py CHANGED
@@ -230,7 +230,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
230
230
  )
231
231
 
232
232
  else:
233
- contacts_params = model.contact_model.parameters
233
+ contacts_params = model.contact_model._parameters_class()
234
234
 
235
235
  return JaxSimModelData(
236
236
  state=ode_state,
@@ -775,6 +775,7 @@ def random_model_data(
775
775
  jtp.FloatLike | Sequence[jtp.FloatLike],
776
776
  jtp.FloatLike | Sequence[jtp.FloatLike],
777
777
  ] = (-1.0, 1.0),
778
+ contacts_params: jaxsim.rbda.contacts.ContactsParams | None = None,
778
779
  standard_gravity_bounds: tuple[jtp.FloatLike, jtp.FloatLike] = (
779
780
  jaxsim.math.StandardGravity,
780
781
  jaxsim.math.StandardGravity,
@@ -797,6 +798,7 @@ def random_model_data(
797
798
  base_vel_lin_bounds: The bounds for the base linear velocity.
798
799
  base_vel_ang_bounds: The bounds for the base angular velocity.
799
800
  joint_vel_bounds: The bounds for the joint velocities.
801
+ contacts_params: The parameters of the contact model.
800
802
  standard_gravity_bounds: The bounds for the standard gravity.
801
803
 
802
804
  Returns:
@@ -886,4 +888,25 @@ def random_model_data(
886
888
  )
887
889
  )
888
890
 
891
+ if contacts_params is None:
892
+
893
+ if isinstance(
894
+ model.contact_model,
895
+ jaxsim.rbda.contacts.SoftContacts
896
+ | jaxsim.rbda.contacts.ViscoElasticContacts,
897
+ ):
898
+
899
+ random_data = random_data.replace(
900
+ contacts_params=js.contact.estimate_good_contact_parameters(
901
+ model=model, standard_gravity=random_data.gravity
902
+ ),
903
+ validate=False,
904
+ )
905
+
906
+ else:
907
+ random_data = random_data.replace(
908
+ contacts_params=model.contact_model._parameters_class(),
909
+ validate=False,
910
+ )
911
+
889
912
  return random_data
jaxsim/api/model.py CHANGED
@@ -41,8 +41,7 @@ class JaxSimModel(JaxsimDataclass):
41
41
  )
42
42
 
43
43
  # Note that this is the default contact model.
44
- # Its parameters, if any, are then overridden from those stored in JaxSimModelData.
45
- contact_model: jaxsim.rbda.contacts.ContactModel | None = dataclasses.field(
44
+ contact_model: Static[jaxsim.rbda.contacts.ContactModel | None] = dataclasses.field(
46
45
  default=None, repr=False
47
46
  )
48
47
 
@@ -235,9 +234,7 @@ class JaxSimModel(JaxsimDataclass):
235
234
  contact_model = (
236
235
  contact_model
237
236
  if contact_model is not None
238
- else jaxsim.rbda.contacts.SoftContacts.build(
239
- terrain=terrain, parameters=None
240
- )
237
+ else jaxsim.rbda.contacts.SoftContacts.build()
241
238
  )
242
239
 
243
240
  # Build the integrator if not provided.
@@ -95,30 +95,17 @@ class ContactsParams(JaxsimDataclass):
95
95
  class ContactModel(JaxsimDataclass):
96
96
  """
97
97
  Abstract class representing a contact model.
98
-
99
- Attributes:
100
- parameters: The parameters of the contact model.
101
- terrain: The considered terrain.
102
98
  """
103
99
 
104
- parameters: ContactsParams
105
- terrain: jaxsim.terrain.Terrain
106
-
107
100
  @classmethod
108
101
  @abc.abstractmethod
109
102
  def build(
110
103
  cls: type[Self],
111
- parameters: ContactsParams,
112
- terrain: jaxsim.terrain.Terrain,
113
104
  **kwargs,
114
105
  ) -> Self:
115
106
  """
116
107
  Create a `ContactModel` instance with specified parameters.
117
108
 
118
- Args:
119
- parameters: The parameters of the contact model.
120
- terrain: The considered terrain.
121
-
122
109
  Returns:
123
110
  The `ContactModel` instance.
124
111
  """
@@ -304,30 +291,21 @@ class ContactModel(JaxsimDataclass):
304
291
 
305
292
  return {}
306
293
 
307
- def initialize_model_and_data(
308
- self,
309
- model: js.model.JaxSimModel,
310
- data: js.data.JaxSimModelData,
311
- validate: bool = True,
312
- ) -> tuple[js.model.JaxSimModel, js.data.JaxSimModelData]:
294
+ @property
295
+ def _parameters_class(cls) -> type[ContactsParams]:
313
296
  """
314
- Helper function to initialize the active model and data objects.
315
-
316
- Args:
317
- model: The robot model considered by the contact model.
318
- data: The data of the considered robot model.
319
- validate:
320
- Whether to validate if the model and data objects have been
321
- initialized with the current contact model.
297
+ Return the class of the contact parameters.
322
298
 
323
299
  Returns:
324
- The initialized model and data objects.
300
+ The class of the contact parameters.
325
301
  """
326
-
327
- with self.editable(validate=validate) as contact_model:
328
- contact_model.parameters = data.contacts_params
329
-
330
- with model.editable(validate=validate) as model_out:
331
- model_out.contact_model = contact_model
332
-
333
- return model_out, data
302
+ import importlib
303
+
304
+ return getattr(
305
+ importlib.import_module("jaxsim.rbda.contacts"),
306
+ (
307
+ cls.__name__ + "Params"
308
+ if isinstance(cls, type)
309
+ else cls.__class__.__name__ + "Params"
310
+ ),
311
+ )
@@ -12,9 +12,7 @@ import optax
12
12
  import jaxsim.api as js
13
13
  import jaxsim.rbda.contacts
14
14
  import jaxsim.typing as jtp
15
- from jaxsim import logging
16
15
  from jaxsim.api.common import ModelDataWithVelocityRepresentation, VelRepr
17
- from jaxsim.terrain.terrain import FlatTerrain, Terrain
18
16
 
19
17
  from . import common
20
18
 
@@ -180,14 +178,6 @@ class RelaxedRigidContactsParams(common.ContactsParams):
180
178
  class RelaxedRigidContacts(common.ContactModel):
181
179
  """Relaxed rigid contacts model."""
182
180
 
183
- parameters: RelaxedRigidContactsParams = dataclasses.field(
184
- default_factory=RelaxedRigidContactsParams.build
185
- )
186
-
187
- terrain: jax_dataclasses.Static[Terrain] = dataclasses.field(
188
- default_factory=FlatTerrain.build
189
- )
190
-
191
181
  _solver_options_keys: jax_dataclasses.Static[tuple[str, ...]] = dataclasses.field(
192
182
  default=("tol", "maxiter", "memory_size"), kw_only=True
193
183
  )
@@ -209,8 +199,6 @@ class RelaxedRigidContacts(common.ContactModel):
209
199
  @classmethod
210
200
  def build(
211
201
  cls: type[Self],
212
- parameters: RelaxedRigidContactsParams | None = None,
213
- terrain: Terrain | None = None,
214
202
  solver_options: dict[str, Any] | None = None,
215
203
  **kwargs,
216
204
  ) -> Self:
@@ -218,17 +206,12 @@ class RelaxedRigidContacts(common.ContactModel):
218
206
  Create a `RelaxedRigidContacts` instance with specified parameters.
219
207
 
220
208
  Args:
221
- parameters: The parameters of the rigid contacts model.
222
- terrain: The considered terrain.
223
209
  solver_options: The options to pass to the L-BFGS solver.
224
210
 
225
211
  Returns:
226
212
  The `RelaxedRigidContacts` instance.
227
213
  """
228
214
 
229
- if len(kwargs) != 0:
230
- logging.debug(msg=f"Ignoring extra arguments: {kwargs}")
231
-
232
215
  # Get the default solver options.
233
216
  default_solver_options = dict(
234
217
  zip(cls._solver_options_keys, cls._solver_options_values, strict=True)
@@ -250,18 +233,9 @@ class RelaxedRigidContacts(common.ContactModel):
250
233
  ) from exc
251
234
 
252
235
  return cls(
253
- parameters=(
254
- parameters
255
- if parameters is not None
256
- else cls.__dataclass_fields__["parameters"].default_factory()
257
- ),
258
- terrain=(
259
- terrain
260
- if terrain is not None
261
- else cls.__dataclass_fields__["terrain"].default_factory()
262
- ),
263
236
  _solver_options_keys=tuple(solver_options.keys()),
264
237
  _solver_options_values=tuple(solver_options.values()),
238
+ **kwargs,
265
239
  )
266
240
 
267
241
  @jax.jit
@@ -289,12 +263,6 @@ class RelaxedRigidContacts(common.ContactModel):
289
263
  A tuple containing as first element the computed contact forces.
290
264
  """
291
265
 
292
- # Initialize the model and data this contact model is operating on.
293
- # This will raise an exception if either the contact model or the
294
- # contact parameters are not compatible.
295
- model, data = self.initialize_model_and_data(model=model, data=data)
296
- assert isinstance(data.contacts_params, RelaxedRigidContactsParams)
297
-
298
266
  link_forces = jnp.atleast_2d(
299
267
  jnp.array(link_forces, dtype=float).squeeze()
300
268
  if link_forces is not None
@@ -11,7 +11,6 @@ import jaxsim.api as js
11
11
  import jaxsim.typing as jtp
12
12
  from jaxsim import logging
13
13
  from jaxsim.api.common import ModelDataWithVelocityRepresentation, VelRepr
14
- from jaxsim.terrain import FlatTerrain, Terrain
15
14
 
16
15
  from . import common
17
16
  from .common import ContactModel, ContactsParams
@@ -92,14 +91,6 @@ class RigidContactsParams(ContactsParams):
92
91
  class RigidContacts(ContactModel):
93
92
  """Rigid contacts model."""
94
93
 
95
- parameters: RigidContactsParams = dataclasses.field(
96
- default_factory=RigidContactsParams
97
- )
98
-
99
- terrain: jax_dataclasses.Static[Terrain] = dataclasses.field(
100
- default_factory=FlatTerrain.build
101
- )
102
-
103
94
  regularization_delassus: jax_dataclasses.Static[float] = dataclasses.field(
104
95
  default=1e-6, kw_only=True
105
96
  )
@@ -125,8 +116,6 @@ class RigidContacts(ContactModel):
125
116
  @classmethod
126
117
  def build(
127
118
  cls: type[Self],
128
- parameters: RigidContactsParams | None = None,
129
- terrain: Terrain | None = None,
130
119
  regularization_delassus: jtp.FloatLike | None = None,
131
120
  solver_options: dict[str, Any] | None = None,
132
121
  **kwargs,
@@ -135,8 +124,6 @@ class RigidContacts(ContactModel):
135
124
  Create a `RigidContacts` instance with specified parameters.
136
125
 
137
126
  Args:
138
- parameters: The parameters of the rigid contacts model.
139
- terrain: The considered terrain.
140
127
  regularization_delassus:
141
128
  The regularization term to add to the diagonal of the Delassus matrix.
142
129
  solver_options: The options to pass to the QP solver.
@@ -169,16 +156,6 @@ class RigidContacts(ContactModel):
169
156
  ) from exc
170
157
 
171
158
  return cls(
172
- parameters=(
173
- parameters
174
- if parameters is not None
175
- else cls.__dataclass_fields__["parameters"].default_factory()
176
- ),
177
- terrain=(
178
- terrain
179
- if terrain is not None
180
- else cls.__dataclass_fields__["terrain"].default_factory()
181
- ),
182
159
  regularization_delassus=float(
183
160
  regularization_delassus
184
161
  if regularization_delassus is not None
@@ -186,6 +163,7 @@ class RigidContacts(ContactModel):
186
163
  ),
187
164
  _solver_options_keys=tuple(solver_options.keys()),
188
165
  _solver_options_values=tuple(solver_options.values()),
166
+ **kwargs,
189
167
  )
190
168
 
191
169
  @staticmethod
@@ -276,12 +254,6 @@ class RigidContacts(ContactModel):
276
254
  A tuple containing as first element the computed contact forces.
277
255
  """
278
256
 
279
- # Initialize the model and data this contact model is operating on.
280
- # This will raise an exception if either the contact model or the
281
- # contact parameters are not compatible.
282
- model, data = self.initialize_model_and_data(model=model, data=data)
283
- assert isinstance(data.contacts_params, RigidContactsParams)
284
-
285
257
  # Import qpax privately just in this method.
286
258
  import qpax
287
259
 
@@ -12,7 +12,7 @@ import jaxsim.math
12
12
  import jaxsim.typing as jtp
13
13
  from jaxsim import logging
14
14
  from jaxsim.math import StandardGravity
15
- from jaxsim.terrain import FlatTerrain, Terrain
15
+ from jaxsim.terrain import Terrain
16
16
 
17
17
  from . import common
18
18
 
@@ -194,19 +194,9 @@ class SoftContactsParams(common.ContactsParams):
194
194
  class SoftContacts(common.ContactModel):
195
195
  """Soft contacts model."""
196
196
 
197
- parameters: SoftContactsParams = dataclasses.field(
198
- default_factory=SoftContactsParams.build
199
- )
200
-
201
- terrain: jax_dataclasses.Static[Terrain] = dataclasses.field(
202
- default_factory=FlatTerrain.build
203
- )
204
-
205
197
  @classmethod
206
198
  def build(
207
199
  cls: type[Self],
208
- parameters: SoftContactsParams | None = None,
209
- terrain: Terrain | None = None,
210
200
  model: js.model.JaxSimModel | None = None,
211
201
  **kwargs,
212
202
  ) -> Self:
@@ -214,8 +204,6 @@ class SoftContacts(common.ContactModel):
214
204
  Create a `SoftContacts` instance with specified parameters.
215
205
 
216
206
  Args:
217
- parameters: The parameters of the soft contacts model.
218
- terrain: The considered terrain.
219
207
  model:
220
208
  The robot model considered by the contact model.
221
209
  If passed, it is used to estimate good default parameters.
@@ -227,24 +215,7 @@ class SoftContacts(common.ContactModel):
227
215
  if len(kwargs) != 0:
228
216
  logging.debug(msg=f"Ignoring extra arguments: {kwargs}")
229
217
 
230
- # Build the contact parameters if not provided. Use the model to estimate
231
- # good default parameters, if passed. Users can later override these default
232
- # parameters with their own values -- possibly tuned better.
233
- if parameters is None:
234
- parameters = (
235
- SoftContactsParams.build_default_from_jaxsim_model(model=model)
236
- if model is not None
237
- else cls.__dataclass_fields__["parameters"].default_factory()
238
- )
239
-
240
- return cls(
241
- parameters=parameters,
242
- terrain=(
243
- terrain
244
- if terrain is not None
245
- else cls.__dataclass_fields__["terrain"].default_factory()
246
- ),
247
- )
218
+ return cls(**kwargs)
248
219
 
249
220
  @classmethod
250
221
  def zero_state_variables(cls, model: js.model.JaxSimModel) -> dict[str, jtp.Array]:
@@ -422,9 +393,9 @@ class SoftContacts(common.ContactModel):
422
393
 
423
394
  return W_f, ṁ
424
395
 
396
+ @staticmethod
425
397
  @jax.jit
426
398
  def compute_contact_forces(
427
- self,
428
399
  model: js.model.JaxSimModel,
429
400
  data: js.data.JaxSimModelData,
430
401
  ) -> tuple[jtp.Matrix, dict[str, jtp.PyTree]]:
@@ -440,11 +411,6 @@ class SoftContacts(common.ContactModel):
440
411
  second element a dictionary with derivative of the material deformation.
441
412
  """
442
413
 
443
- # Initialize the model and data this contact model is operating on.
444
- # This will raise an exception if either the contact model or the
445
- # contact parameters are not compatible.
446
- model, data = self.initialize_model_and_data(model=model, data=data)
447
-
448
414
  # Get the indices of the enabled collidable points.
449
415
  indices_of_enabled_collidable_points = (
450
416
  model.kin_dyn_parameters.contact_parameters.indices_of_enabled_collidable_points
@@ -15,7 +15,7 @@ import jaxsim.typing as jtp
15
15
  from jaxsim import logging
16
16
  from jaxsim.api.common import ModelDataWithVelocityRepresentation
17
17
  from jaxsim.math import StandardGravity
18
- from jaxsim.terrain import FlatTerrain, Terrain
18
+ from jaxsim.terrain import Terrain
19
19
 
20
20
  from . import common
21
21
  from .soft import SoftContacts, SoftContactsParams
@@ -188,21 +188,11 @@ class ViscoElasticContactsParams(common.ContactsParams):
188
188
  class ViscoElasticContacts(common.ContactModel):
189
189
  """Visco-elastic contacts model."""
190
190
 
191
- parameters: ViscoElasticContactsParams = dataclasses.field(
192
- default_factory=ViscoElasticContactsParams
193
- )
194
-
195
- terrain: jax_dataclasses.Static[Terrain] = dataclasses.field(
196
- default_factory=FlatTerrain
197
- )
198
-
199
191
  max_squarings: jax_dataclasses.Static[int] = dataclasses.field(default=25)
200
192
 
201
193
  @classmethod
202
194
  def build(
203
195
  cls: type[Self],
204
- parameters: SoftContactsParams | None = None,
205
- terrain: Terrain | None = None,
206
196
  model: js.model.JaxSimModel | None = None,
207
197
  max_squarings: jtp.IntLike | None = None,
208
198
  **kwargs,
@@ -211,8 +201,6 @@ class ViscoElasticContacts(common.ContactModel):
211
201
  Create a `ViscoElasticContacts` instance with specified parameters.
212
202
 
213
203
  Args:
214
- parameters: The parameters of the soft contacts model.
215
- terrain: The considered terrain.
216
204
  model:
217
205
  The robot model considered by the contact model.
218
206
  If passed, it is used to estimate good default parameters.
@@ -226,23 +214,7 @@ class ViscoElasticContacts(common.ContactModel):
226
214
  if len(kwargs) != 0:
227
215
  logging.debug(msg=f"Ignoring extra arguments: {kwargs}")
228
216
 
229
- # Build the contact parameters if not provided. Use the model to estimate
230
- # good default parameters, if passed. Users can later override these default
231
- # parameters with their own values -- possibly tuned better.
232
- if parameters is None:
233
- parameters = (
234
- ViscoElasticContactsParams.build_default_from_jaxsim_model(model=model)
235
- if model is not None
236
- else cls.__dataclass_fields__["parameters"].default_factory()
237
- )
238
-
239
217
  return cls(
240
- parameters=parameters,
241
- terrain=(
242
- terrain
243
- if terrain is not None
244
- else cls.__dataclass_fields__["terrain"].default_factory()
245
- ),
246
218
  max_squarings=int(
247
219
  max_squarings
248
220
  if max_squarings is not None
@@ -301,12 +273,6 @@ class ViscoElasticContacts(common.ContactModel):
301
273
  a dictionary of optional additional information.
302
274
  """
303
275
 
304
- # Initialize the model and data this contact model is operating on.
305
- # This will raise an exception if either the contact model or the
306
- # contact parameters are not compatible.
307
- model, data = self.initialize_model_and_data(model=model, data=data)
308
- assert isinstance(data.contacts_params, ViscoElasticContactsParams)
309
-
310
276
  # Extract the indices corresponding to the enabled collidable points.
311
277
  indices_of_enabled_collidable_points = (
312
278
  model.kin_dyn_parameters.contact_parameters.indices_of_enabled_collidable_points
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.5.1.dev24
3
+ Version: 0.5.1.dev37
4
4
  Summary: A differentiable physics engine and multibody dynamics library for control and robot learning.
5
5
  Author-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippoluca.ferretti@outlook.com>
6
6
  Maintainer-email: Filippo Luca Ferretti <filippo.ferretti@iit.it>, Alessandro Croci <alessandro.croci@iit.it>
@@ -1,18 +1,18 @@
1
1
  jaxsim/__init__.py,sha256=opgtbhhd1kDsHI4H1vOd3loMPDRi884yQ3tohfFGfNc,3382
2
- jaxsim/_version.py,sha256=jhM7ciLRfFJltcA0X7C5Adn5pIbSqnbwaSMWu6yJUos,426
2
+ jaxsim/_version.py,sha256=EGsUJS1ov-QK7EYvUCYPDPaWF0WWN1ORv-XJb2wLAyI,426
3
3
  jaxsim/exceptions.py,sha256=vSoScaRD4nvh6jltgK9Ry5pKnE0O5hb4_yI_pk_fvR8,2175
4
4
  jaxsim/logging.py,sha256=STI-D_upXZYX-ZezLrlJJ0UlD5YspST0vZ_DcIwkzO4,1553
5
5
  jaxsim/typing.py,sha256=2HXy9hgazPXjofi1vLQ09ZubPtgVmg80U9NKmZ6NYiI,761
6
6
  jaxsim/api/__init__.py,sha256=8eV22t2S3UwNyCg8karPetG1dmX1VDBXkyv28_FwNQA,210
7
7
  jaxsim/api/com.py,sha256=m-p3EJDhpnMTlXKplfbZE_aH9NqX_VyLlAE3vUhc6l4,13642
8
8
  jaxsim/api/common.py,sha256=SNgxq42r6eF_-aPszvOjUYkGwXOzz4hKmhDwEUkscFQ,6650
9
- jaxsim/api/contact.py,sha256=nSH-89veHu6yzdlMPJN7HU-mY_lyc3bAw7KiP790Qx4,25658
10
- jaxsim/api/data.py,sha256=ThRpoBlbdwf1N3xs8SWrY5d8RbfdYRwFcmkdIPgtee4,29004
9
+ jaxsim/api/contact.py,sha256=P62D4MpgcEJScmxuhh99YcoW4QLU6hVjG_lvlLL-mxg,25214
10
+ jaxsim/api/data.py,sha256=pGgQ8k_QJ0kh7igMmQGfccix3wOXKcSfsLnZQyOQHjo,29860
11
11
  jaxsim/api/frame.py,sha256=MT6Qpg5uJDnhik899QNpHskZMijgjMSOw-2v-t-kul4,14434
12
12
  jaxsim/api/joint.py,sha256=8rCIxRMeAidsaBbw7kkGp6z3-UmBPtqmYmV_arHDQJ8,7365
13
13
  jaxsim/api/kin_dyn_parameters.py,sha256=wnto0nzzEJ_M8tH2PUdldEyxQwQdsStYUoQFu696uuw,29897
14
14
  jaxsim/api/link.py,sha256=nHjffhNdi_xGkteMsqdb_hC9mdV9rNw7k3pl89Uhw_8,12798
15
- jaxsim/api/model.py,sha256=pNO-m7ZbHFvuGftu-ngvj05z8Fo0WOT69dU71fl_hA8,79801
15
+ jaxsim/api/model.py,sha256=0Ve1zEVoe5mFw4kX5sG6eCg0PXRnOZl1f-wsmFpAxeM,79659
16
16
  jaxsim/api/ode.py,sha256=_t18avoCJngQk6eMFTGpaeahbpchQP20qJnUOCPkz8s,15360
17
17
  jaxsim/api/ode_data.py,sha256=1SD-x-lYk_YSEnVpxTLd69uOKC0mFUj44ZqpSmEDOxw,20190
18
18
  jaxsim/api/references.py,sha256=eIOk3MAOc9LJSKfI8M4WA8gGD-meo50vRfhXdea4sNI,20539
@@ -55,19 +55,19 @@ jaxsim/rbda/jacobian.py,sha256=L6Vn4Kf9I6wj-MYcFY6o67mgIfLFaaW4i2wNQJ2PDL0,10981
55
55
  jaxsim/rbda/rnea.py,sha256=CLfqs9XFVaD-hvkLABshDAfdw5bm_AMV3UVAQ_IvURQ,7542
56
56
  jaxsim/rbda/utils.py,sha256=GLt7XIl1ROkx0_fnBCKUHYdB9_IBF3Yi4OnkHSX3gxA,5365
57
57
  jaxsim/rbda/contacts/__init__.py,sha256=L5MM-2pv76YPGzxExdz2EErgGBATuAjYnNHlq5QOySs,503
58
- jaxsim/rbda/contacts/common.py,sha256=mjOS1MJkf9zRfcAKBwmYtO5Vrcrv-kLFM57FfFB8LgM,11244
59
- jaxsim/rbda/contacts/relaxed_rigid.py,sha256=FYdW0JRZT_NjEhhoLEsJs7qNV7NiXVPWG01ZkUTpUrc,21678
60
- jaxsim/rbda/contacts/rigid.py,sha256=MSzkU6SFbW6CryNlyyxQ7K0-U-8k6VROGKv_DQrwqiw,17156
61
- jaxsim/rbda/contacts/soft.py,sha256=t6bqBfGAtV1AWoevY82LAcXy2XW8w_uu7bNywcyxF0s,17001
62
- jaxsim/rbda/contacts/visco_elastic.py,sha256=vQkfMuqQ3Qu8nbDTPY4jWBZjV3U7qtoRK1Aya3O3oFA,41424
58
+ jaxsim/rbda/contacts/common.py,sha256=BjwZMCkzd1ZOdZW7_Zt09Cl5j2JUHXM5Q8ao_qS6e64,10406
59
+ jaxsim/rbda/contacts/relaxed_rigid.py,sha256=PgwKfProN5sLXJsSov3nIidHHMVpJqIp7eIv6_bPGjs,20345
60
+ jaxsim/rbda/contacts/rigid.py,sha256=X-PE6PmZqlKoZTY6JhYBSW-vom-rq2uBKmBUNQeQHCg,15991
61
+ jaxsim/rbda/contacts/soft.py,sha256=sIWT4NUJmoVR5T1Fo0ExdPfzL_gPfiPiB-9CFuotE_s,15567
62
+ jaxsim/rbda/contacts/visco_elastic.py,sha256=4gVs3oVzn1IImAsnC7yZ3b-aMwaA-7bSbYqxTULY1FE,39899
63
63
  jaxsim/terrain/__init__.py,sha256=f7lVX-iNpH_wkkjef9Qpjh19TTAUOQw76EiLYJDVizc,78
64
64
  jaxsim/terrain/terrain.py,sha256=_G1QS3zWycj089R8fTP5s2VjcZpEdJxREjXZJ-oXIvc,5248
65
65
  jaxsim/utils/__init__.py,sha256=Y5zyoRevl3EMVQadhZ4EtSwTEkDt2vcnFoRhPJjKTZ0,215
66
66
  jaxsim/utils/jaxsim_dataclass.py,sha256=TGmTQV2Lq7Q-2nLoAEaeNtkPa_qj0IKkdBm4COj46Os,11312
67
67
  jaxsim/utils/tracing.py,sha256=eEY28MZW0Lm_jJNt1NkFqZz0ek01tvhR46OXZYCo7tc,532
68
68
  jaxsim/utils/wrappers.py,sha256=ZY7olSORzZRvSzkdeNLj8yjwUIAt9L0Douwl7wItjpk,4008
69
- jaxsim-0.5.1.dev24.dist-info/LICENSE,sha256=eaYdFmdeMbiIoIiPzEK0MjP1S9wtFXjXNR5er49uLR0,1546
70
- jaxsim-0.5.1.dev24.dist-info/METADATA,sha256=4KVr4SUY9KDPIwEaPmjEDB3Gaz1oXeoXq2ZC6HKyTXk,17885
71
- jaxsim-0.5.1.dev24.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
72
- jaxsim-0.5.1.dev24.dist-info/top_level.txt,sha256=LxGMA8FLtXjQ6oI7N5gd_R_oSUHxpXxUEOfT1xS_ni0,7
73
- jaxsim-0.5.1.dev24.dist-info/RECORD,,
69
+ jaxsim-0.5.1.dev37.dist-info/LICENSE,sha256=eaYdFmdeMbiIoIiPzEK0MjP1S9wtFXjXNR5er49uLR0,1546
70
+ jaxsim-0.5.1.dev37.dist-info/METADATA,sha256=MvFmiybAlX7yJrItqLaOW6S9wnw0kgEln4iuLMg-vUE,17885
71
+ jaxsim-0.5.1.dev37.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
72
+ jaxsim-0.5.1.dev37.dist-info/top_level.txt,sha256=LxGMA8FLtXjQ6oI7N5gd_R_oSUHxpXxUEOfT1xS_ni0,7
73
+ jaxsim-0.5.1.dev37.dist-info/RECORD,,