jaxsim 0.4.3.dev70__py3-none-any.whl → 0.4.3.dev80__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 +2 -2
- jaxsim/api/contact.py +5 -0
- jaxsim/api/kin_dyn_parameters.py +2 -4
- jaxsim/api/link.py +1 -1
- jaxsim/api/ode.py +3 -1
- jaxsim/integrators/common.py +8 -12
- jaxsim/integrators/variable_step.py +13 -15
- jaxsim/rbda/contacts/relaxed_rigid.py +26 -1
- jaxsim/rbda/contacts/rigid.py +10 -0
- jaxsim/utils/jaxsim_dataclass.py +1 -1
- {jaxsim-0.4.3.dev70.dist-info → jaxsim-0.4.3.dev80.dist-info}/METADATA +3 -3
- {jaxsim-0.4.3.dev70.dist-info → jaxsim-0.4.3.dev80.dist-info}/RECORD +15 -15
- {jaxsim-0.4.3.dev70.dist-info → jaxsim-0.4.3.dev80.dist-info}/LICENSE +0 -0
- {jaxsim-0.4.3.dev70.dist-info → jaxsim-0.4.3.dev80.dist-info}/WHEEL +0 -0
- {jaxsim-0.4.3.dev70.dist-info → jaxsim-0.4.3.dev80.dist-info}/top_level.txt +0 -0
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.dev80'
|
16
|
+
__version_tuple__ = version_tuple = (0, 4, 3, 'dev80')
|
jaxsim/api/contact.py
CHANGED
@@ -117,6 +117,7 @@ def collidable_point_dynamics(
|
|
117
117
|
model: js.model.JaxSimModel,
|
118
118
|
data: js.data.JaxSimModelData,
|
119
119
|
link_forces: jtp.MatrixLike | None = None,
|
120
|
+
joint_force_references: jtp.VectorLike | None = None,
|
120
121
|
) -> tuple[jtp.Matrix, dict[str, jtp.Array]]:
|
121
122
|
r"""
|
122
123
|
Compute the 6D force applied to each collidable point.
|
@@ -127,6 +128,8 @@ def collidable_point_dynamics(
|
|
127
128
|
link_forces:
|
128
129
|
The 6D external forces to apply to the links expressed in the same
|
129
130
|
representation of data.
|
131
|
+
joint_force_references:
|
132
|
+
The joint force references to apply to the joints.
|
130
133
|
|
131
134
|
Returns:
|
132
135
|
The 6D force applied to each collidable point and additional data based on the contact model configured:
|
@@ -191,6 +194,7 @@ def collidable_point_dynamics(
|
|
191
194
|
model=model,
|
192
195
|
data=data,
|
193
196
|
link_forces=link_forces,
|
197
|
+
joint_force_references=joint_force_references,
|
194
198
|
)
|
195
199
|
|
196
200
|
aux_data = dict()
|
@@ -212,6 +216,7 @@ def collidable_point_dynamics(
|
|
212
216
|
model=model,
|
213
217
|
data=data,
|
214
218
|
link_forces=link_forces,
|
219
|
+
joint_force_references=joint_force_references,
|
215
220
|
)
|
216
221
|
|
217
222
|
aux_data = dict()
|
jaxsim/api/kin_dyn_parameters.py
CHANGED
@@ -98,9 +98,7 @@ class KynDynParameters(JaxsimDataclass):
|
|
98
98
|
]
|
99
99
|
|
100
100
|
# Create a vectorized object of link parameters.
|
101
|
-
link_parameters = jax.
|
102
|
-
lambda *l: jnp.stack(l), *link_parameters_list
|
103
|
-
)
|
101
|
+
link_parameters = jax.tree.map(lambda *l: jnp.stack(l), *link_parameters_list)
|
104
102
|
|
105
103
|
# =================
|
106
104
|
# Joints properties
|
@@ -114,7 +112,7 @@ class KynDynParameters(JaxsimDataclass):
|
|
114
112
|
|
115
113
|
# Create a vectorized object of joint parameters.
|
116
114
|
joint_parameters = (
|
117
|
-
jax.
|
115
|
+
jax.tree.map(lambda *l: jnp.stack(l), *joint_parameters_list)
|
118
116
|
if len(ordered_joints) > 0
|
119
117
|
else JointParameters(
|
120
118
|
index=jnp.array([], dtype=int),
|
jaxsim/api/link.py
CHANGED
jaxsim/api/ode.py
CHANGED
@@ -95,7 +95,7 @@ def system_velocity_dynamics(
|
|
95
95
|
Args:
|
96
96
|
model: The model to consider.
|
97
97
|
data: The data of the considered model.
|
98
|
-
joint_forces: The joint
|
98
|
+
joint_forces: The joint force references to apply.
|
99
99
|
link_forces:
|
100
100
|
The 6D forces to apply to the links expressed in the frame corresponding to
|
101
101
|
the velocity representation of `data`.
|
@@ -120,6 +120,7 @@ def system_velocity_dynamics(
|
|
120
120
|
references = js.references.JaxSimModelReferences.build(
|
121
121
|
model=model,
|
122
122
|
link_forces=O_f_L,
|
123
|
+
joint_force_references=joint_forces,
|
123
124
|
data=data,
|
124
125
|
velocity_representation=data.velocity_representation,
|
125
126
|
)
|
@@ -149,6 +150,7 @@ def system_velocity_dynamics(
|
|
149
150
|
model=model,
|
150
151
|
data=data,
|
151
152
|
link_forces=references.link_forces(model=model, data=data),
|
153
|
+
joint_force_references=references.joint_force_references(model=model),
|
152
154
|
)
|
153
155
|
|
154
156
|
# Construct the vector defining the parent link index of each collidable point.
|
jaxsim/integrators/common.py
CHANGED
@@ -173,9 +173,7 @@ class Integrator(JaxsimDataclass, abc.ABC, Generic[State, StateDerivative]):
|
|
173
173
|
|
174
174
|
# Make sure that all leafs of the dictionary are JAX arrays.
|
175
175
|
# Also, since these are dummy parameters, set them all to zero.
|
176
|
-
params_after_init = jax.
|
177
|
-
lambda l: jnp.zeros_like(l), integrator.params
|
178
|
-
)
|
176
|
+
params_after_init = jax.tree.map(lambda l: jnp.zeros_like(l), integrator.params)
|
179
177
|
|
180
178
|
# Mark the next step as first step after initialization.
|
181
179
|
params_after_init = params_after_init | {
|
@@ -290,7 +288,7 @@ class ExplicitRungeKutta(Integrator[PyTreeType, PyTreeType], Generic[PyTreeType]
|
|
290
288
|
z, aux_dict = self._compute_next_state(x0=x0, t0=t0, dt=dt, **kwargs)
|
291
289
|
|
292
290
|
# The next state is the batch element located at the configured index of solution.
|
293
|
-
next_state = jax.
|
291
|
+
next_state = jax.tree.map(lambda l: l[self.row_index_of_solution], z)
|
294
292
|
|
295
293
|
return next_state, aux_dict
|
296
294
|
|
@@ -327,7 +325,7 @@ class ExplicitRungeKutta(Integrator[PyTreeType, PyTreeType], Generic[PyTreeType]
|
|
327
325
|
"""
|
328
326
|
|
329
327
|
op = lambda x0_leaf, k_leaf: x0_leaf + dt * k_leaf
|
330
|
-
return jax.
|
328
|
+
return jax.tree.map(op, x0, k)
|
331
329
|
|
332
330
|
@classmethod
|
333
331
|
def post_process_state(
|
@@ -374,7 +372,7 @@ class ExplicitRungeKutta(Integrator[PyTreeType, PyTreeType], Generic[PyTreeType]
|
|
374
372
|
f = lambda x, t: self.dynamics(x=x, t=t, **kwargs)
|
375
373
|
|
376
374
|
# Initialize the carry of the for loop with the stacked kᵢ vectors.
|
377
|
-
carry0 = jax.
|
375
|
+
carry0 = jax.tree.map(
|
378
376
|
lambda l: jnp.repeat(jnp.zeros_like(l)[jnp.newaxis, ...], c.size, axis=0),
|
379
377
|
x0,
|
380
378
|
)
|
@@ -398,7 +396,7 @@ class ExplicitRungeKutta(Integrator[PyTreeType, PyTreeType], Generic[PyTreeType]
|
|
398
396
|
|
399
397
|
# Compute ∑ⱼ aᵢⱼ kⱼ.
|
400
398
|
op_sum_ak = lambda k: jnp.einsum("s,s...->...", A[i], k)
|
401
|
-
sum_ak = jax.
|
399
|
+
sum_ak = jax.tree.map(op_sum_ak, K)
|
402
400
|
|
403
401
|
# Compute the next state for the kᵢ evaluation.
|
404
402
|
# Note that this is not a Δt integration since aᵢⱼ could be fractional.
|
@@ -419,7 +417,7 @@ class ExplicitRungeKutta(Integrator[PyTreeType, PyTreeType], Generic[PyTreeType]
|
|
419
417
|
|
420
418
|
# Store the kᵢ derivative in K.
|
421
419
|
op = lambda l_k, l_ki: l_k.at[i].set(l_ki)
|
422
|
-
K = jax.
|
420
|
+
K = jax.tree.map(op, K, ki)
|
423
421
|
|
424
422
|
carry = K
|
425
423
|
return carry, aux_dict
|
@@ -433,14 +431,12 @@ class ExplicitRungeKutta(Integrator[PyTreeType, PyTreeType], Generic[PyTreeType]
|
|
433
431
|
|
434
432
|
# Update the FSAL property for the next iteration.
|
435
433
|
if self.has_fsal:
|
436
|
-
self.params["dxdt0"] = jax.
|
437
|
-
lambda l: l[self.index_of_fsal], K
|
438
|
-
)
|
434
|
+
self.params["dxdt0"] = jax.tree.map(lambda l: l[self.index_of_fsal], K)
|
439
435
|
|
440
436
|
# Compute the output state.
|
441
437
|
# Note that z contains as many new states as the rows of `b.T`.
|
442
438
|
op = lambda x0, k: x0 + Δt * jnp.einsum("zs,s...->z...", b.T, k)
|
443
|
-
z = jax.
|
439
|
+
z = jax.tree.map(op, x0, K)
|
444
440
|
|
445
441
|
# Transform the final state of the integration.
|
446
442
|
# This allows to inject custom logic, if needed.
|
@@ -87,13 +87,13 @@ def estimate_step_size(
|
|
87
87
|
|
88
88
|
# Compute the scaling factors of the initial state and its derivative.
|
89
89
|
compute_scale = lambda x: atol + jnp.abs(x) * rtol
|
90
|
-
scale0 = jax.
|
91
|
-
scale1 = jax.
|
90
|
+
scale0 = jax.tree.map(compute_scale, x0)
|
91
|
+
scale1 = jax.tree.map(compute_scale, ẋ0)
|
92
92
|
|
93
93
|
# Scale the initial state and its derivative.
|
94
94
|
scale_pytree = lambda x, scale: jnp.abs(x) / scale
|
95
|
-
x0_scaled = jax.
|
96
|
-
ẋ0_scaled = jax.
|
95
|
+
x0_scaled = jax.tree.map(scale_pytree, x0, scale0)
|
96
|
+
ẋ0_scaled = jax.tree.map(scale_pytree, ẋ0, scale1)
|
97
97
|
|
98
98
|
# Get the maximum of the scaled pytrees.
|
99
99
|
d0 = jnp.linalg.norm(flatten(x0_scaled), ord=jnp.inf)
|
@@ -103,16 +103,16 @@ def estimate_step_size(
|
|
103
103
|
h0 = jnp.where(jnp.minimum(d0, d1) <= 1e-5, 1e-6, 0.01 * d0 / d1)
|
104
104
|
|
105
105
|
# Compute the next state (explicit Euler step) and its derivative.
|
106
|
-
x1 = jax.
|
106
|
+
x1 = jax.tree.map(lambda x0, ẋ0: x0 + h0 * ẋ0, x0, ẋ0)
|
107
107
|
ẋ1 = f(x1, t0 + h0)[0]
|
108
108
|
|
109
109
|
# Compute the scaling factor of the state derivatives.
|
110
110
|
compute_scale_2 = lambda ẋ0, ẋ1: atol + jnp.maximum(jnp.abs(ẋ0), jnp.abs(ẋ1)) * rtol
|
111
|
-
scale2 = jax.
|
111
|
+
scale2 = jax.tree.map(compute_scale_2, ẋ0, ẋ1)
|
112
112
|
|
113
113
|
# Scale the difference of the state derivatives.
|
114
114
|
scale_ẋ_difference = lambda ẋ0, ẋ1, scale: jnp.abs((ẋ0 - ẋ1) / scale)
|
115
|
-
ẋ_difference_scaled = jax.
|
115
|
+
ẋ_difference_scaled = jax.tree.map(scale_ẋ_difference, ẋ0, ẋ1, scale2)
|
116
116
|
|
117
117
|
# Get the maximum of the scaled derivatives difference.
|
118
118
|
d2 = jnp.linalg.norm(flatten(ẋ_difference_scaled), ord=jnp.inf) / h0
|
@@ -151,11 +151,11 @@ def compute_pytree_scale(
|
|
151
151
|
"""
|
152
152
|
|
153
153
|
# Consider a zero second pytree, if not given.
|
154
|
-
x2 = jax.
|
154
|
+
x2 = jax.tree.map(lambda l: jnp.zeros_like(l), x1) if x2 is None else x2
|
155
155
|
|
156
156
|
# Compute the scaling factors of the initial state and its derivative.
|
157
157
|
compute_scale = lambda l1, l2: atol + jnp.maximum(jnp.abs(l1), jnp.abs(l2)) * rtol
|
158
|
-
scale = jax.
|
158
|
+
scale = jax.tree.map(compute_scale, x1, x2)
|
159
159
|
|
160
160
|
return scale
|
161
161
|
|
@@ -198,14 +198,14 @@ def local_error_estimation(
|
|
198
198
|
|
199
199
|
# Consider a zero estimated final state, if not given.
|
200
200
|
xf_estimate = (
|
201
|
-
jax.
|
201
|
+
jax.tree.map(lambda l: jnp.zeros_like(l), xf)
|
202
202
|
if xf_estimate is None
|
203
203
|
else xf_estimate
|
204
204
|
)
|
205
205
|
|
206
206
|
# Estimate the error.
|
207
207
|
estimate_error = lambda l, l̂, sc: jnp.abs(l - l̂) / sc
|
208
|
-
error_estimate = jax.
|
208
|
+
error_estimate = jax.tree.map(estimate_error, xf, xf_estimate, scale)
|
209
209
|
|
210
210
|
# Return the highest element of the error estimate.
|
211
211
|
return jnp.linalg.norm(flatten(error_estimate), ord=norm_ord)
|
@@ -359,10 +359,8 @@ class EmbeddedRungeKutta(ExplicitRungeKutta[PyTreeType], Generic[PyTreeType]):
|
|
359
359
|
params_next = integrator.params
|
360
360
|
|
361
361
|
# Extract the high-order solution xf and the low-order estimate x̂f.
|
362
|
-
xf = jax.
|
363
|
-
x̂f = jax.
|
364
|
-
lambda l: l[self.row_index_of_solution_estimate], z
|
365
|
-
)
|
362
|
+
xf = jax.tree.map(lambda l: l[self.row_index_of_solution], z)
|
363
|
+
x̂f = jax.tree.map(lambda l: l[self.row_index_of_solution_estimate], z)
|
366
364
|
|
367
365
|
# Calculate the local integration error.
|
368
366
|
local_error = local_error_estimation(
|
@@ -189,7 +189,25 @@ class RelaxedRigidContacts(ContactModel):
|
|
189
189
|
model: js.model.JaxSimModel,
|
190
190
|
data: js.data.JaxSimModelData,
|
191
191
|
link_forces: jtp.MatrixLike | None = None,
|
192
|
+
joint_force_references: jtp.VectorLike | None = None,
|
192
193
|
) -> tuple[jtp.Vector, tuple[Any, ...]]:
|
194
|
+
"""
|
195
|
+
Compute the contact forces.
|
196
|
+
|
197
|
+
Args:
|
198
|
+
position: The position of the collidable point.
|
199
|
+
velocity: The linear velocity of the collidable point.
|
200
|
+
model: The `JaxSimModel` instance.
|
201
|
+
data: The `JaxSimModelData` instance.
|
202
|
+
link_forces:
|
203
|
+
Optional `(n_links, 6)` matrix of external forces acting on the links,
|
204
|
+
expressed in the same representation of data.
|
205
|
+
joint_force_references:
|
206
|
+
Optional `(n_joints,)` vector of joint forces.
|
207
|
+
|
208
|
+
Returns:
|
209
|
+
A tuple containing the contact forces.
|
210
|
+
"""
|
193
211
|
|
194
212
|
link_forces = (
|
195
213
|
link_forces
|
@@ -197,15 +215,22 @@ class RelaxedRigidContacts(ContactModel):
|
|
197
215
|
else jnp.zeros((model.number_of_links(), 6))
|
198
216
|
)
|
199
217
|
|
218
|
+
joint_force_references = (
|
219
|
+
joint_force_references
|
220
|
+
if joint_force_references is not None
|
221
|
+
else jnp.zeros(model.number_of_joints())
|
222
|
+
)
|
223
|
+
|
200
224
|
references = js.references.JaxSimModelReferences.build(
|
201
225
|
model=model,
|
202
226
|
data=data,
|
203
227
|
velocity_representation=data.velocity_representation,
|
204
228
|
link_forces=link_forces,
|
229
|
+
joint_force_references=joint_force_references,
|
205
230
|
)
|
206
231
|
|
207
232
|
def _detect_contact(x: jtp.Array, y: jtp.Array, z: jtp.Array) -> jtp.Array:
|
208
|
-
x, y, z = jax.
|
233
|
+
x, y, z = jax.tree.map(jnp.squeeze, (x, y, z))
|
209
234
|
|
210
235
|
n̂ = self.terrain.normal(x=x, y=y).squeeze()
|
211
236
|
h = jnp.array([0, 0, z - model.terrain.height(x=x, y=y)])
|
jaxsim/rbda/contacts/rigid.py
CHANGED
@@ -213,6 +213,7 @@ class RigidContacts(ContactModel):
|
|
213
213
|
model: js.model.JaxSimModel,
|
214
214
|
data: js.data.JaxSimModelData,
|
215
215
|
link_forces: jtp.MatrixLike | None = None,
|
216
|
+
joint_force_references: jtp.VectorLike | None = None,
|
216
217
|
regularization_term: jtp.FloatLike = 1e-6,
|
217
218
|
) -> tuple[jtp.Vector, tuple[Any, ...]]:
|
218
219
|
"""
|
@@ -226,6 +227,8 @@ class RigidContacts(ContactModel):
|
|
226
227
|
link_forces:
|
227
228
|
Optional `(n_links, 6)` matrix of external forces acting on the links,
|
228
229
|
expressed in the same representation of data.
|
230
|
+
joint_force_references:
|
231
|
+
Optional `(n_joints,)` vector of joint forces.
|
229
232
|
regularization_term:
|
230
233
|
The regularization term to add to the diagonal of the Delassus
|
231
234
|
matrix for better numerical conditioning.
|
@@ -243,6 +246,12 @@ class RigidContacts(ContactModel):
|
|
243
246
|
else jnp.zeros((model.number_of_links(), 6))
|
244
247
|
)
|
245
248
|
|
249
|
+
joint_force_references = (
|
250
|
+
joint_force_references
|
251
|
+
if joint_force_references is not None
|
252
|
+
else jnp.zeros((model.number_of_joints(),))
|
253
|
+
)
|
254
|
+
|
246
255
|
# Compute kin-dyn quantities used in the contact model
|
247
256
|
with data.switch_velocity_representation(VelRepr.Mixed):
|
248
257
|
M = js.model.free_floating_mass_matrix(model=model, data=data)
|
@@ -269,6 +278,7 @@ class RigidContacts(ContactModel):
|
|
269
278
|
data=data,
|
270
279
|
velocity_representation=data.velocity_representation,
|
271
280
|
link_forces=link_forces,
|
281
|
+
joint_force_references=joint_force_references,
|
272
282
|
)
|
273
283
|
|
274
284
|
with (
|
jaxsim/utils/jaxsim_dataclass.py
CHANGED
@@ -298,7 +298,7 @@ class JaxsimDataclass(abc.ABC):
|
|
298
298
|
"""
|
299
299
|
|
300
300
|
# Make a copy calling tree_map.
|
301
|
-
obj = jax.
|
301
|
+
obj = jax.tree.map(lambda leaf: leaf, self)
|
302
302
|
|
303
303
|
# Make sure that the copied object and all the copied leaves have the same
|
304
304
|
# mutability of the original object.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.4.3.
|
3
|
+
Version: 0.4.3.dev80
|
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>
|
@@ -60,9 +60,9 @@ Requires-Python: >=3.10
|
|
60
60
|
Description-Content-Type: text/markdown
|
61
61
|
License-File: LICENSE
|
62
62
|
Requires-Dist: coloredlogs
|
63
|
-
Requires-Dist: jax>=0.4.
|
63
|
+
Requires-Dist: jax>=0.4.26
|
64
64
|
Requires-Dist: jaxopt>=0.8.0
|
65
|
-
Requires-Dist: jaxlib>=0.4.
|
65
|
+
Requires-Dist: jaxlib>=0.4.26
|
66
66
|
Requires-Dist: jaxlie>=1.3.0
|
67
67
|
Requires-Dist: jax-dataclasses>=1.4.0
|
68
68
|
Requires-Dist: pptree
|
@@ -1,25 +1,25 @@
|
|
1
1
|
jaxsim/__init__.py,sha256=bSbpggIz5aG6QuGZLa0V2EfHjAOeucMxi-vIYxzLmN8,2788
|
2
|
-
jaxsim/_version.py,sha256=
|
2
|
+
jaxsim/_version.py,sha256=G5Qm6992nEqZe7NQkfmL8p-gHKaNDVraUdwnF4D-BbI,426
|
3
3
|
jaxsim/exceptions.py,sha256=8_h8iqL8DgNR754dR8SZiQ7361GR5V1sUk3ZuZCHw1Q,2069
|
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=
|
9
|
+
jaxsim/api/contact.py,sha256=Ek1xSKB_VWjfqsqRYlK236ountKmGTl1M04cTYqHgsE,22142
|
10
10
|
jaxsim/api/data.py,sha256=QldUHniJqKrdNtAcXuRaS9UyeslJ0Rjvb17UA0Ca5Tw,29008
|
11
11
|
jaxsim/api/frame.py,sha256=KS8A5wRfjxhe9NgcVo2QA516iP5zky7UVnWxG7nTa7c,12911
|
12
12
|
jaxsim/api/joint.py,sha256=lksT1Doxz2jknHyhb4ls20z6f6dofpZSzBJtVacZXAE,7129
|
13
|
-
jaxsim/api/kin_dyn_parameters.py,sha256=
|
14
|
-
jaxsim/api/link.py,sha256=
|
13
|
+
jaxsim/api/kin_dyn_parameters.py,sha256=FrWymdta36THv5QFTzxorJtYiKTVDg7HqOcPTHa12VM,29327
|
14
|
+
jaxsim/api/link.py,sha256=LAA6ZMQXkWomXeptURBtc7z3_xDZ2BBnBMhVrohh0bE,18621
|
15
15
|
jaxsim/api/model.py,sha256=TLjgacgTXm-2YRGDA0Id9pe9nxIem28KoAls6Tdk9WM,66241
|
16
|
-
jaxsim/api/ode.py,sha256=
|
16
|
+
jaxsim/api/ode.py,sha256=ZshGdHptftku0yoUwBiBdd1iOqntH0vVEOjRHfL7Fao,13518
|
17
17
|
jaxsim/api/ode_data.py,sha256=7RSoBhfCJdP6P9InQbDwdBVpClPMMuetewI-6AWm-_0,20276
|
18
18
|
jaxsim/api/references.py,sha256=XOVKuQXRmjPoP-T5JWGSbqIGX5DzOkeGafqRpj0ZQEM,20771
|
19
19
|
jaxsim/integrators/__init__.py,sha256=hxvOD-VK_mmd6v31wtC-nb28AYve1gLuZCNLV9wS-Kg,103
|
20
|
-
jaxsim/integrators/common.py,sha256=
|
20
|
+
jaxsim/integrators/common.py,sha256=78MBs89GxsL0wU2yAexjvBZt3HEtfZoGVIN9f0a8yTc,20305
|
21
21
|
jaxsim/integrators/fixed_step.py,sha256=KpjRd6hHtapxDoo6D1kyDrVDSHnke2TepI5grFH7_bM,2693
|
22
|
-
jaxsim/integrators/variable_step.py,sha256=
|
22
|
+
jaxsim/integrators/variable_step.py,sha256=cJD98q5BaiSKvp_KY_1KN3PZpAUJR3L8YRmLX5WPJJo,21114
|
23
23
|
jaxsim/math/__init__.py,sha256=8oPITEoGwgRcOeG8KxtqxPQ8b5uku1HNRMokpCoi9Tc,352
|
24
24
|
jaxsim/math/adjoint.py,sha256=o1FCipkGwPtMbN2gFNIyUV8ADF3TX5fxElpTEXK0bIs,4377
|
25
25
|
jaxsim/math/cross.py,sha256=U7yEx_l75mSy5g6O-jsjBztApvxC3WaV4MpkS5tThu4,1330
|
@@ -54,17 +54,17 @@ jaxsim/rbda/rnea.py,sha256=CLfqs9XFVaD-hvkLABshDAfdw5bm_AMV3UVAQ_IvURQ,7542
|
|
54
54
|
jaxsim/rbda/utils.py,sha256=eeT21Y4DiiyhrdF0lUE_VvRuwru5-rR7yOlOlWzCCWE,5381
|
55
55
|
jaxsim/rbda/contacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
56
|
jaxsim/rbda/contacts/common.py,sha256=VwAs742futAmLnDgbaOuLzNDBFiKDfYItdEZ4UcFgzE,2467
|
57
|
-
jaxsim/rbda/contacts/relaxed_rigid.py,sha256=
|
58
|
-
jaxsim/rbda/contacts/rigid.py,sha256=
|
57
|
+
jaxsim/rbda/contacts/relaxed_rigid.py,sha256=deTC0M2a_RER7iwVpxLCfuSlgBLqkTmHQdOJ4169IR4,13646
|
58
|
+
jaxsim/rbda/contacts/rigid.py,sha256=zbSM0miwpgC1rp1d0RoQ1q8pYiKdIkHV8iZimeEPC94,15153
|
59
59
|
jaxsim/rbda/contacts/soft.py,sha256=_wvb5iZDjGcVg6rNQelN4LZN7qSC2NIp0HdKvZmlGfk,15647
|
60
60
|
jaxsim/terrain/__init__.py,sha256=f7lVX-iNpH_wkkjef9Qpjh19TTAUOQw76EiLYJDVizc,78
|
61
61
|
jaxsim/terrain/terrain.py,sha256=xUQg47yGxIOcTkLPbnO3sruEGBhoCd16j1evTGlmNjI,5010
|
62
62
|
jaxsim/utils/__init__.py,sha256=Y5zyoRevl3EMVQadhZ4EtSwTEkDt2vcnFoRhPJjKTZ0,215
|
63
|
-
jaxsim/utils/jaxsim_dataclass.py,sha256=
|
63
|
+
jaxsim/utils/jaxsim_dataclass.py,sha256=TGmTQV2Lq7Q-2nLoAEaeNtkPa_qj0IKkdBm4COj46Os,11312
|
64
64
|
jaxsim/utils/tracing.py,sha256=KDMoyVPlu2NJvFkhtZwq5AkqMMgajt3munvJom-vEjQ,650
|
65
65
|
jaxsim/utils/wrappers.py,sha256=Fh82ZcaFi5fUnByyFLnmumaobsu1hJIvFdopUVzJ1ps,4052
|
66
|
-
jaxsim-0.4.3.
|
67
|
-
jaxsim-0.4.3.
|
68
|
-
jaxsim-0.4.3.
|
69
|
-
jaxsim-0.4.3.
|
70
|
-
jaxsim-0.4.3.
|
66
|
+
jaxsim-0.4.3.dev80.dist-info/LICENSE,sha256=eaYdFmdeMbiIoIiPzEK0MjP1S9wtFXjXNR5er49uLR0,1546
|
67
|
+
jaxsim-0.4.3.dev80.dist-info/METADATA,sha256=BLXHcGNmem2sMUaAvTy-6E1XsRF5JdPIrPzQkiSeFyQ,17276
|
68
|
+
jaxsim-0.4.3.dev80.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
69
|
+
jaxsim-0.4.3.dev80.dist-info/top_level.txt,sha256=LxGMA8FLtXjQ6oI7N5gd_R_oSUHxpXxUEOfT1xS_ni0,7
|
70
|
+
jaxsim-0.4.3.dev80.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|