jaxsim 0.4.3.dev169__py3-none-any.whl → 0.4.3.dev181__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/__init__.py +20 -6
- jaxsim/_version.py +2 -2
- jaxsim/api/data.py +0 -25
- jaxsim/api/model.py +38 -29
- jaxsim/api/ode.py +0 -1
- jaxsim/exceptions.py +4 -0
- jaxsim/rbda/contacts/visco_elastic.py +13 -11
- {jaxsim-0.4.3.dev169.dist-info → jaxsim-0.4.3.dev181.dist-info}/METADATA +1 -1
- {jaxsim-0.4.3.dev169.dist-info → jaxsim-0.4.3.dev181.dist-info}/RECORD +12 -12
- {jaxsim-0.4.3.dev169.dist-info → jaxsim-0.4.3.dev181.dist-info}/LICENSE +0 -0
- {jaxsim-0.4.3.dev169.dist-info → jaxsim-0.4.3.dev181.dist-info}/WHEEL +0 -0
- {jaxsim-0.4.3.dev169.dist-info → jaxsim-0.4.3.dev181.dist-info}/top_level.txt +0 -0
jaxsim/__init__.py
CHANGED
@@ -8,21 +8,35 @@ def _jnp_options() -> None:
|
|
8
8
|
|
9
9
|
import jax
|
10
10
|
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
# Check if running on TPU
|
12
|
+
is_tpu = jax.devices()[0].platform == "tpu"
|
13
|
+
|
14
|
+
# Enable by default 64-bit precision to get accurate physics.
|
15
|
+
# Users can enforce 32-bit precision by setting the following variable to 0.
|
16
|
+
use_x64 = os.environ.get("JAX_ENABLE_X64", "1") != "0"
|
17
|
+
|
18
|
+
# Notify the user if unsupported 64-bit precision was enforced on TPU.
|
19
|
+
if is_tpu and use_x64:
|
20
|
+
msg = "64-bit precision is not allowed on TPU. Enforcing 32bit precision."
|
21
|
+
logging.warning(msg)
|
22
|
+
use_x64 = False
|
23
|
+
|
24
|
+
# Enable 64-bit precision in JAX.
|
25
|
+
if use_x64:
|
26
|
+
logging.info("Enabling JAX to use 64-bit precision")
|
15
27
|
jax.config.update("jax_enable_x64", True)
|
16
28
|
|
17
29
|
import jax.numpy as jnp
|
18
30
|
import numpy as np
|
19
31
|
|
32
|
+
# Verify that 64-bit precision is correctly set.
|
20
33
|
if jnp.empty(0, dtype=float).dtype != jnp.empty(0, dtype=np.float64).dtype:
|
21
|
-
logging.warning("Failed to enable
|
34
|
+
logging.warning("Failed to enable 64-bit precision in JAX")
|
22
35
|
|
36
|
+
# Warn about experimental usage of 32-bit precision.
|
23
37
|
else:
|
24
38
|
logging.warning(
|
25
|
-
"Using
|
39
|
+
"Using 32-bit precision in JaxSim is still experimental, please avoid to use variable step integrators."
|
26
40
|
)
|
27
41
|
|
28
42
|
|
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.4.3.
|
16
|
-
__version_tuple__ = version_tuple = (0, 4, 3, '
|
15
|
+
__version__ = version = '0.4.3.dev181'
|
16
|
+
__version_tuple__ = version_tuple = (0, 4, 3, 'dev181')
|
jaxsim/api/data.py
CHANGED
@@ -38,12 +38,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
38
38
|
|
39
39
|
contacts_params: jaxsim.rbda.contacts.ContactsParams = dataclasses.field(repr=False)
|
40
40
|
|
41
|
-
time_ns: jtp.Int = dataclasses.field(
|
42
|
-
default_factory=lambda: jnp.array(
|
43
|
-
0, dtype=jnp.uint64 if jax.config.read("jax_enable_x64") else jnp.uint32
|
44
|
-
),
|
45
|
-
)
|
46
|
-
|
47
41
|
def __hash__(self) -> int:
|
48
42
|
|
49
43
|
from jaxsim.utils.wrappers import HashedNumpyArray
|
@@ -52,7 +46,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
52
46
|
(
|
53
47
|
hash(self.state),
|
54
48
|
HashedNumpyArray.hash_of_array(self.gravity),
|
55
|
-
HashedNumpyArray.hash_of_array(self.time_ns),
|
56
49
|
hash(self.contacts_params),
|
57
50
|
)
|
58
51
|
)
|
@@ -115,7 +108,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
115
108
|
standard_gravity: jtp.FloatLike = jaxsim.math.StandardGravity,
|
116
109
|
contacts_params: jaxsim.rbda.contacts.ContactsParams | None = None,
|
117
110
|
velocity_representation: VelRepr = VelRepr.Inertial,
|
118
|
-
time: jtp.FloatLike | None = None,
|
119
111
|
extended_ode_state: dict[str, jtp.PyTree] | None = None,
|
120
112
|
) -> JaxSimModelData:
|
121
113
|
"""
|
@@ -134,7 +126,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
134
126
|
standard_gravity: The standard gravity constant.
|
135
127
|
contacts_params: The parameters of the soft contacts.
|
136
128
|
velocity_representation: The velocity representation to use.
|
137
|
-
time: The time at which the state is created.
|
138
129
|
extended_ode_state:
|
139
130
|
Additional user-defined state variables that are not part of the
|
140
131
|
standard `ODEState` object. Useful to extend the system dynamics
|
@@ -196,11 +187,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
196
187
|
).squeeze()
|
197
188
|
)
|
198
189
|
|
199
|
-
time_ns = jnp.array(
|
200
|
-
time * 1e9 if time is not None else 0.0,
|
201
|
-
dtype=jnp.uint64 if jax.config.read("jax_enable_x64") else jnp.uint32,
|
202
|
-
)
|
203
|
-
|
204
190
|
W_H_B = jaxsim.math.Transform.from_quaternion_and_translation(
|
205
191
|
translation=base_position, quaternion=base_quaternion
|
206
192
|
)
|
@@ -246,7 +232,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
246
232
|
contacts_params = model.contact_model.parameters
|
247
233
|
|
248
234
|
return JaxSimModelData(
|
249
|
-
time_ns=time_ns,
|
250
235
|
state=ode_state,
|
251
236
|
gravity=gravity,
|
252
237
|
contacts_params=contacts_params,
|
@@ -257,16 +242,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
257
242
|
# Extract quantities
|
258
243
|
# ==================
|
259
244
|
|
260
|
-
def time(self) -> jtp.Float:
|
261
|
-
"""
|
262
|
-
Get the simulated time.
|
263
|
-
|
264
|
-
Returns:
|
265
|
-
The simulated time in seconds.
|
266
|
-
"""
|
267
|
-
|
268
|
-
return self.time_ns.astype(float) / 1e9
|
269
|
-
|
270
245
|
def standard_gravity(self) -> jtp.Float:
|
271
246
|
"""
|
272
247
|
Get the standard gravity constant.
|
jaxsim/api/model.py
CHANGED
@@ -32,6 +32,10 @@ class JaxSimModel(JaxsimDataclass):
|
|
32
32
|
|
33
33
|
model_name: Static[str]
|
34
34
|
|
35
|
+
time_step: jaxsim.integrators.TimeStep = dataclasses.field(
|
36
|
+
default_factory=lambda: jnp.array(0.001, dtype=float),
|
37
|
+
)
|
38
|
+
|
35
39
|
terrain: Static[jaxsim.terrain.Terrain] = dataclasses.field(
|
36
40
|
default_factory=jaxsim.terrain.FlatTerrain.build, repr=False
|
37
41
|
)
|
@@ -64,6 +68,9 @@ class JaxSimModel(JaxsimDataclass):
|
|
64
68
|
if self.model_name != other.model_name:
|
65
69
|
return False
|
66
70
|
|
71
|
+
if self.time_step != other.time_step:
|
72
|
+
return False
|
73
|
+
|
67
74
|
if self.kin_dyn_parameters != other.kin_dyn_parameters:
|
68
75
|
return False
|
69
76
|
|
@@ -74,6 +81,7 @@ class JaxSimModel(JaxsimDataclass):
|
|
74
81
|
return hash(
|
75
82
|
(
|
76
83
|
hash(self.model_name),
|
84
|
+
hash(float(self.time_step)),
|
77
85
|
hash(self.kin_dyn_parameters),
|
78
86
|
hash(self.contact_model),
|
79
87
|
)
|
@@ -88,6 +96,7 @@ class JaxSimModel(JaxsimDataclass):
|
|
88
96
|
model_description: str | pathlib.Path | rod.Model,
|
89
97
|
model_name: str | None = None,
|
90
98
|
*,
|
99
|
+
time_step: jtp.FloatLike | None = None,
|
91
100
|
terrain: jaxsim.terrain.Terrain | None = None,
|
92
101
|
contact_model: jaxsim.rbda.contacts.ContactModel | None = None,
|
93
102
|
is_urdf: bool | None = None,
|
@@ -102,6 +111,9 @@ class JaxSimModel(JaxsimDataclass):
|
|
102
111
|
its content, or a pre-parsed/pre-built rod model.
|
103
112
|
model_name:
|
104
113
|
The name of the model. If not specified, it is read from the description.
|
114
|
+
time_step:
|
115
|
+
The default time step to consider for the simulation. It can be
|
116
|
+
manually overridden in the function that steps the simulation.
|
105
117
|
terrain: The terrain to consider (the default is a flat infinite plane).
|
106
118
|
contact_model:
|
107
119
|
The contact model to consider.
|
@@ -135,6 +147,7 @@ class JaxSimModel(JaxsimDataclass):
|
|
135
147
|
model = JaxSimModel.build(
|
136
148
|
model_description=intermediate_description,
|
137
149
|
model_name=model_name,
|
150
|
+
time_step=time_step,
|
138
151
|
terrain=terrain,
|
139
152
|
contact_model=contact_model,
|
140
153
|
)
|
@@ -150,6 +163,7 @@ class JaxSimModel(JaxsimDataclass):
|
|
150
163
|
model_description: ModelDescription,
|
151
164
|
model_name: str | None = None,
|
152
165
|
*,
|
166
|
+
time_step: jtp.FloatLike | None = None,
|
153
167
|
terrain: jaxsim.terrain.Terrain | None = None,
|
154
168
|
contact_model: jaxsim.rbda.contacts.ContactModel | None = None,
|
155
169
|
) -> JaxSimModel:
|
@@ -162,6 +176,9 @@ class JaxSimModel(JaxsimDataclass):
|
|
162
176
|
of the model.
|
163
177
|
model_name:
|
164
178
|
The name of the model. If not specified, it is read from the description.
|
179
|
+
time_step:
|
180
|
+
The default time step to consider for the simulation. It can be
|
181
|
+
manually overridden in the function that steps the simulation.
|
165
182
|
terrain: The terrain to consider (the default is a flat infinite plane).
|
166
183
|
contact_model:
|
167
184
|
The contact model to consider.
|
@@ -179,6 +196,11 @@ class JaxSimModel(JaxsimDataclass):
|
|
179
196
|
terrain or JaxSimModel.__dataclass_fields__["terrain"].default_factory()
|
180
197
|
)
|
181
198
|
|
199
|
+
# Consider the default time step if not specified.
|
200
|
+
time_step = (
|
201
|
+
time_step or JaxSimModel.__dataclass_fields__["time_step"].default_factory()
|
202
|
+
)
|
203
|
+
|
182
204
|
# Create the default contact model.
|
183
205
|
# It will be populated with an initial estimation of good parameters.
|
184
206
|
# While these might not be the best, they are a good starting point.
|
@@ -192,6 +214,7 @@ class JaxSimModel(JaxsimDataclass):
|
|
192
214
|
kin_dyn_parameters=js.kin_dyn_parameters.KynDynParameters.build(
|
193
215
|
model_description=model_description
|
194
216
|
),
|
217
|
+
time_step=time_step,
|
195
218
|
terrain=terrain,
|
196
219
|
contact_model=contact_model,
|
197
220
|
# The following is wrapped as hashless since it's a static argument, and we
|
@@ -1915,8 +1938,9 @@ def step(
|
|
1915
1938
|
model: JaxSimModel,
|
1916
1939
|
data: js.data.JaxSimModelData,
|
1917
1940
|
*,
|
1918
|
-
dt: jtp.FloatLike,
|
1919
1941
|
integrator: jaxsim.integrators.Integrator,
|
1942
|
+
t0: jtp.FloatLike = 0.0,
|
1943
|
+
dt: jtp.FloatLike | None = None,
|
1920
1944
|
integrator_state: dict[str, Any] | None = None,
|
1921
1945
|
link_forces: jtp.MatrixLike | None = None,
|
1922
1946
|
joint_force_references: jtp.VectorLike | None = None,
|
@@ -1928,9 +1952,10 @@ def step(
|
|
1928
1952
|
Args:
|
1929
1953
|
model: The model to consider.
|
1930
1954
|
data: The data of the considered model.
|
1931
|
-
dt: The time step to consider.
|
1932
1955
|
integrator: The integrator to use.
|
1933
1956
|
integrator_state: The state of the integrator.
|
1957
|
+
t0: The initial time to consider. Only relevant for time-dependent dynamics.
|
1958
|
+
dt: The time step to consider. If not specified, it is read from the model.
|
1934
1959
|
link_forces:
|
1935
1960
|
The 6D forces to apply to the links expressed in the frame corresponding to
|
1936
1961
|
the velocity representation of `data`.
|
@@ -1951,17 +1976,20 @@ def step(
|
|
1951
1976
|
|
1952
1977
|
integrator_state = integrator_state if integrator_state is not None else dict()
|
1953
1978
|
|
1954
|
-
#
|
1955
|
-
t0_ns = data.time_ns
|
1979
|
+
# Initialize the time-related variables.
|
1956
1980
|
state_t0 = data.state
|
1957
|
-
|
1981
|
+
t0 = jnp.array(t0, dtype=float)
|
1982
|
+
dt = jnp.array(dt if dt is not None else model.time_step).astype(float)
|
1983
|
+
|
1984
|
+
# Rename the integrator state.
|
1985
|
+
integrator_state_t0 = integrator_state
|
1958
1986
|
|
1959
1987
|
# Step the dynamics forward.
|
1960
1988
|
state_tf, integrator_state_tf = integrator.step(
|
1961
1989
|
x0=state_t0,
|
1962
|
-
t0=
|
1990
|
+
t0=t0,
|
1963
1991
|
dt=dt,
|
1964
|
-
params=
|
1992
|
+
params=integrator_state_t0,
|
1965
1993
|
# Always inject the current (model, data) pair into the system dynamics
|
1966
1994
|
# considered by the integrator, and include the input variables represented
|
1967
1995
|
# by the pair (joint_force_references, link_forces).
|
@@ -1980,24 +2008,8 @@ def step(
|
|
1980
2008
|
),
|
1981
2009
|
)
|
1982
2010
|
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
jax.lax.cond(
|
1987
|
-
pred=tf_ns < t0_ns,
|
1988
|
-
true_fun=lambda: jax.debug.print(
|
1989
|
-
"The simulation time overflowed, resetting simulation time to 0."
|
1990
|
-
),
|
1991
|
-
false_fun=lambda: None,
|
1992
|
-
)
|
1993
|
-
|
1994
|
-
data_tf = (
|
1995
|
-
# Store the new state of the model and the new time.
|
1996
|
-
data.replace(
|
1997
|
-
state=state_tf,
|
1998
|
-
time_ns=tf_ns,
|
1999
|
-
)
|
2000
|
-
)
|
2011
|
+
# Store the new state of the model.
|
2012
|
+
data_tf = data.replace(state=state_tf)
|
2001
2013
|
|
2002
2014
|
# Post process the simulation state, if needed.
|
2003
2015
|
match model.contact_model:
|
@@ -2064,7 +2076,4 @@ def step(
|
|
2064
2076
|
velocity_representation=data.velocity_representation, validate=False
|
2065
2077
|
)
|
2066
2078
|
|
2067
|
-
return
|
2068
|
-
data_tf,
|
2069
|
-
integrator_state_tf,
|
2070
|
-
)
|
2079
|
+
return data_tf, integrator_state_tf
|
jaxsim/api/ode.py
CHANGED
@@ -63,7 +63,6 @@ def wrap_system_dynamics_for_integration(
|
|
63
63
|
# Update the state and time stored inside data.
|
64
64
|
with data_f.editable(validate=True) as data_rw:
|
65
65
|
data_rw.state = x
|
66
|
-
data_rw.time_ns = jnp.array(t * 1e9).astype(data_rw.time_ns.dtype)
|
67
66
|
|
68
67
|
# Evaluate the system dynamics, allowing to override the kwargs originally
|
69
68
|
# passed when the closure was created.
|
jaxsim/exceptions.py
CHANGED
@@ -17,6 +17,10 @@ def raise_if(
|
|
17
17
|
format string (fmt), whose fields are filled with the args and kwargs.
|
18
18
|
"""
|
19
19
|
|
20
|
+
# Disable host callback if running on TPU.
|
21
|
+
if jax.devices()[0].platform == "tpu":
|
22
|
+
return
|
23
|
+
|
20
24
|
# Check early that the format string is well-formed.
|
21
25
|
try:
|
22
26
|
_ = msg.format(*args, **kwargs)
|
@@ -263,7 +263,7 @@ class ViscoElasticContacts(common.ContactModel):
|
|
263
263
|
model: js.model.JaxSimModel,
|
264
264
|
data: js.data.JaxSimModelData,
|
265
265
|
*,
|
266
|
-
dt: jtp.FloatLike,
|
266
|
+
dt: jtp.FloatLike | None = None,
|
267
267
|
link_forces: jtp.MatrixLike | None = None,
|
268
268
|
joint_force_references: jtp.VectorLike | None = None,
|
269
269
|
) -> tuple[jtp.Vector, tuple[Any, ...]]:
|
@@ -273,7 +273,7 @@ class ViscoElasticContacts(common.ContactModel):
|
|
273
273
|
Args:
|
274
274
|
model: The robot model considered by the contact model.
|
275
275
|
data: The data of the considered model.
|
276
|
-
dt: The
|
276
|
+
dt: The time step to consider. If not specified, it is read from the model.
|
277
277
|
link_forces:
|
278
278
|
The 6D forces to apply to the links expressed in the frame corresponding
|
279
279
|
to the velocity representation of `data`.
|
@@ -305,13 +305,16 @@ class ViscoElasticContacts(common.ContactModel):
|
|
305
305
|
model.kin_dyn_parameters.contact_parameters.indices_of_enabled_collidable_points
|
306
306
|
)
|
307
307
|
|
308
|
+
# Initialize the time step.
|
309
|
+
dt = dt if dt is not None else model.time_step
|
310
|
+
|
308
311
|
# Compute the average contact linear forces in mixed representation by
|
309
312
|
# integrating the contact dynamics in the continuous time domain.
|
310
313
|
CW_f̅l, CW_fl̿, m_tf = (
|
311
314
|
ViscoElasticContacts._compute_contact_forces_with_exponential_integration(
|
312
315
|
model=model,
|
313
316
|
data=data,
|
314
|
-
dt=dt,
|
317
|
+
dt=jnp.array(dt).astype(float),
|
315
318
|
joint_force_references=joint_force_references,
|
316
319
|
link_forces=link_forces,
|
317
320
|
indices_of_enabled_collidable_points=indices_of_enabled_collidable_points,
|
@@ -923,14 +926,10 @@ class ViscoElasticContacts(common.ContactModel):
|
|
923
926
|
)
|
924
927
|
|
925
928
|
# Create the data at the final time.
|
926
|
-
|
927
|
-
data_tf: js.data.JaxSimModelData
|
928
|
-
data_tf.time_ns = data.time_ns + (dt * 1e9).astype(data.time_ns.dtype)
|
929
|
-
|
929
|
+
data_tf = data.copy()
|
930
930
|
data_tf = data_tf.reset_joint_positions(q_plus[7:])
|
931
931
|
data_tf = data_tf.reset_base_position(q_plus[0:3])
|
932
932
|
data_tf = data_tf.reset_base_quaternion(q_plus[3:7])
|
933
|
-
|
934
933
|
data_tf = data_tf.reset_joint_velocities(W_ν_plus[6:])
|
935
934
|
data_tf = data_tf.reset_base_velocity(
|
936
935
|
W_ν_plus[0:6], velocity_representation=jaxsim.VelRepr.Inertial
|
@@ -946,7 +945,7 @@ def step(
|
|
946
945
|
model: js.model.JaxSimModel,
|
947
946
|
data: js.data.JaxSimModelData,
|
948
947
|
*,
|
949
|
-
dt: jtp.FloatLike,
|
948
|
+
dt: jtp.FloatLike | None = None,
|
950
949
|
link_forces: jtp.MatrixLike | None = None,
|
951
950
|
joint_force_references: jtp.VectorLike | None = None,
|
952
951
|
) -> tuple[js.data.JaxSimModelData, dict[str, Any]]:
|
@@ -956,7 +955,7 @@ def step(
|
|
956
955
|
Args:
|
957
956
|
model: The model to consider.
|
958
957
|
data: The data of the considered model.
|
959
|
-
dt: The time step to consider.
|
958
|
+
dt: The time step to consider. If not specified, it is read from the model.
|
960
959
|
link_forces:
|
961
960
|
The 6D forces to apply to the links expressed in the frame corresponding to
|
962
961
|
the velocity representation of `data`.
|
@@ -970,11 +969,14 @@ def step(
|
|
970
969
|
assert isinstance(model.contact_model, ViscoElasticContacts)
|
971
970
|
assert isinstance(data.contacts_params, ViscoElasticContactsParams)
|
972
971
|
|
972
|
+
# Initialize the time step.
|
973
|
+
dt = dt if dt is not None else model.time_step
|
974
|
+
|
973
975
|
# Compute the contact forces with the exponential integrator.
|
974
976
|
W_f̅_C, (W_f̿_C, m_tf) = model.contact_model.compute_contact_forces(
|
975
977
|
model=model,
|
976
978
|
data=data,
|
977
|
-
dt=dt,
|
979
|
+
dt=jnp.array(dt).astype(float),
|
978
980
|
link_forces=link_forces,
|
979
981
|
joint_force_references=joint_force_references,
|
980
982
|
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.4.3.
|
3
|
+
Version: 0.4.3.dev181
|
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>
|
6
6
|
Maintainer-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippo.ferretti@iit.it>
|
@@ -1,19 +1,19 @@
|
|
1
|
-
jaxsim/__init__.py,sha256=
|
2
|
-
jaxsim/_version.py,sha256=
|
3
|
-
jaxsim/exceptions.py,sha256=
|
1
|
+
jaxsim/__init__.py,sha256=opgtbhhd1kDsHI4H1vOd3loMPDRi884yQ3tohfFGfNc,3382
|
2
|
+
jaxsim/_version.py,sha256=2YMpT461ObsI3rceAHrUVR-OPYPsQ43SHkzRH20mlDY,428
|
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
9
|
jaxsim/api/contact.py,sha256=2qBIStXWxIJTrW3Eyx6UPQcTXDXalOyasgD7Pk1_v1E,24486
|
10
|
-
jaxsim/api/data.py,sha256=
|
10
|
+
jaxsim/api/data.py,sha256=sfu_uJtYRQIf_sg9IWzR95McRdZgtHwArAuzF6KD-1A,28939
|
11
11
|
jaxsim/api/frame.py,sha256=KS8A5wRfjxhe9NgcVo2QA516iP5zky7UVnWxG7nTa7c,12911
|
12
12
|
jaxsim/api/joint.py,sha256=lksT1Doxz2jknHyhb4ls20z6f6dofpZSzBJtVacZXAE,7129
|
13
13
|
jaxsim/api/kin_dyn_parameters.py,sha256=thJbz9XhpXgom23S6MXX2ugxGoAD-k947ZMAHDisy2w,29620
|
14
14
|
jaxsim/api/link.py,sha256=LAA6ZMQXkWomXeptURBtc7z3_xDZ2BBnBMhVrohh0bE,18621
|
15
|
-
jaxsim/api/model.py,sha256
|
16
|
-
jaxsim/api/ode.py,sha256=
|
15
|
+
jaxsim/api/model.py,sha256=-Au3Xdm3TJLyKN_r06pr9G99zmzjNhDI4KZz4xox7iE,69783
|
16
|
+
jaxsim/api/ode.py,sha256=J_WuaoPl3ZY-yvTrCQun-rQoIAv_duynSXAGxqx93sg,14211
|
17
17
|
jaxsim/api/ode_data.py,sha256=1SD-x-lYk_YSEnVpxTLd69uOKC0mFUj44ZqpSmEDOxw,20190
|
18
18
|
jaxsim/api/references.py,sha256=fW77LitZ8DYgT6ZmUInJfm5luBV1mTcqcNRiC_i79og,20862
|
19
19
|
jaxsim/integrators/__init__.py,sha256=hxvOD-VK_mmd6v31wtC-nb28AYve1gLuZCNLV9wS-Kg,103
|
@@ -57,15 +57,15 @@ jaxsim/rbda/contacts/common.py,sha256=_yrxTM16Je9ck5aM95ndk8Kwu_oijxG9Jaf1jEjHEY
|
|
57
57
|
jaxsim/rbda/contacts/relaxed_rigid.py,sha256=Ob5LdKe3D7tGlIdT4LamJ6_F0j5pzUmWNYoWqy8Di98,17169
|
58
58
|
jaxsim/rbda/contacts/rigid.py,sha256=1TTiGXSOipO8l5FDTtxqRNo1ArCNtDg-Yr3olPgBLGs,17588
|
59
59
|
jaxsim/rbda/contacts/soft.py,sha256=TMCUDtFmNIae04LCla57iXMjdt9F5qTFjYEnP5NdLFg,16809
|
60
|
-
jaxsim/rbda/contacts/visco_elastic.py,sha256=
|
60
|
+
jaxsim/rbda/contacts/visco_elastic.py,sha256=tfcH4_JFox6_6PyR29kLlqc8pYN8WCslYnClxV7TnSU,39780
|
61
61
|
jaxsim/terrain/__init__.py,sha256=f7lVX-iNpH_wkkjef9Qpjh19TTAUOQw76EiLYJDVizc,78
|
62
62
|
jaxsim/terrain/terrain.py,sha256=K91HEzPqTSyNrc_j1KfAAEF_5oDeuk_-jnnZGrcMEcY,5015
|
63
63
|
jaxsim/utils/__init__.py,sha256=Y5zyoRevl3EMVQadhZ4EtSwTEkDt2vcnFoRhPJjKTZ0,215
|
64
64
|
jaxsim/utils/jaxsim_dataclass.py,sha256=TGmTQV2Lq7Q-2nLoAEaeNtkPa_qj0IKkdBm4COj46Os,11312
|
65
65
|
jaxsim/utils/tracing.py,sha256=KDMoyVPlu2NJvFkhtZwq5AkqMMgajt3munvJom-vEjQ,650
|
66
66
|
jaxsim/utils/wrappers.py,sha256=Fh82ZcaFi5fUnByyFLnmumaobsu1hJIvFdopUVzJ1ps,4052
|
67
|
-
jaxsim-0.4.3.
|
68
|
-
jaxsim-0.4.3.
|
69
|
-
jaxsim-0.4.3.
|
70
|
-
jaxsim-0.4.3.
|
71
|
-
jaxsim-0.4.3.
|
67
|
+
jaxsim-0.4.3.dev181.dist-info/LICENSE,sha256=eaYdFmdeMbiIoIiPzEK0MjP1S9wtFXjXNR5er49uLR0,1546
|
68
|
+
jaxsim-0.4.3.dev181.dist-info/METADATA,sha256=w-b474j6ugFST4V5QJ2h9DTtrb2xRH0cdCRAMyBG8wg,17276
|
69
|
+
jaxsim-0.4.3.dev181.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
70
|
+
jaxsim-0.4.3.dev181.dist-info/top_level.txt,sha256=LxGMA8FLtXjQ6oI7N5gd_R_oSUHxpXxUEOfT1xS_ni0,7
|
71
|
+
jaxsim-0.4.3.dev181.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|