jaxsim 0.6.1.dev13__py3-none-any.whl → 0.6.2.dev102__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.
Files changed (46) hide show
  1. jaxsim/__init__.py +1 -1
  2. jaxsim/_version.py +2 -2
  3. jaxsim/api/__init__.py +3 -1
  4. jaxsim/api/actuation_model.py +96 -0
  5. jaxsim/api/com.py +8 -8
  6. jaxsim/api/contact.py +15 -255
  7. jaxsim/api/contact_model.py +101 -0
  8. jaxsim/api/data.py +258 -556
  9. jaxsim/api/frame.py +7 -7
  10. jaxsim/api/integrators.py +76 -0
  11. jaxsim/api/kin_dyn_parameters.py +41 -58
  12. jaxsim/api/link.py +7 -7
  13. jaxsim/api/model.py +190 -453
  14. jaxsim/api/ode.py +34 -338
  15. jaxsim/api/references.py +2 -2
  16. jaxsim/exceptions.py +2 -2
  17. jaxsim/math/__init__.py +4 -3
  18. jaxsim/math/joint_model.py +17 -107
  19. jaxsim/mujoco/model.py +1 -1
  20. jaxsim/mujoco/utils.py +2 -2
  21. jaxsim/parsers/kinematic_graph.py +1 -3
  22. jaxsim/rbda/aba.py +7 -4
  23. jaxsim/rbda/collidable_points.py +7 -98
  24. jaxsim/rbda/contacts/__init__.py +2 -10
  25. jaxsim/rbda/contacts/common.py +0 -138
  26. jaxsim/rbda/contacts/relaxed_rigid.py +154 -9
  27. jaxsim/rbda/crba.py +5 -2
  28. jaxsim/rbda/forward_kinematics.py +37 -12
  29. jaxsim/rbda/jacobian.py +15 -6
  30. jaxsim/rbda/rnea.py +7 -4
  31. jaxsim/rbda/utils.py +3 -3
  32. jaxsim/utils/jaxsim_dataclass.py +5 -1
  33. {jaxsim-0.6.1.dev13.dist-info → jaxsim-0.6.2.dev102.dist-info}/METADATA +7 -9
  34. jaxsim-0.6.2.dev102.dist-info/RECORD +69 -0
  35. jaxsim/api/ode_data.py +0 -401
  36. jaxsim/integrators/__init__.py +0 -2
  37. jaxsim/integrators/common.py +0 -592
  38. jaxsim/integrators/fixed_step.py +0 -153
  39. jaxsim/integrators/variable_step.py +0 -706
  40. jaxsim/rbda/contacts/rigid.py +0 -462
  41. jaxsim/rbda/contacts/soft.py +0 -480
  42. jaxsim/rbda/contacts/visco_elastic.py +0 -1066
  43. jaxsim-0.6.1.dev13.dist-info/RECORD +0 -74
  44. {jaxsim-0.6.1.dev13.dist-info → jaxsim-0.6.2.dev102.dist-info}/LICENSE +0 -0
  45. {jaxsim-0.6.1.dev13.dist-info → jaxsim-0.6.2.dev102.dist-info}/WHEEL +0 -0
  46. {jaxsim-0.6.1.dev13.dist-info → jaxsim-0.6.2.dev102.dist-info}/top_level.txt +0 -0
@@ -15,6 +15,9 @@ def forward_kinematics_model(
15
15
  base_position: jtp.VectorLike,
16
16
  base_quaternion: jtp.VectorLike,
17
17
  joint_positions: jtp.VectorLike,
18
+ base_linear_velocity_inertial: jtp.VectorLike,
19
+ base_angular_velocity_inertial: jtp.VectorLike,
20
+ joint_velocities: jtp.VectorLike,
18
21
  ) -> jtp.Array:
19
22
  """
20
23
  Compute the forward kinematics.
@@ -24,16 +27,22 @@ def forward_kinematics_model(
24
27
  base_position: The position of the base link.
25
28
  base_quaternion: The quaternion of the base link.
26
29
  joint_positions: The positions of the joints.
30
+ base_linear_velocity_inertial: The linear velocity of the base link in inertial-fixed representation.
31
+ base_angular_velocity_inertial: The angular velocity of the base link in inertial-fixed representation.
32
+ joint_velocities: The velocities of the joints.
27
33
 
28
34
  Returns:
29
35
  A 3D array containing the SE(3) transforms of all links belonging to the model.
30
36
  """
31
37
 
32
- W_p_B, W_Q_B, s, _, _, _, _, _, _, _ = utils.process_inputs(
38
+ W_p_B, W_Q_B, s, W_v_WB, ṡ, _, _, _, _, _ = utils.process_inputs(
33
39
  model=model,
34
40
  base_position=base_position,
35
41
  base_quaternion=base_quaternion,
36
42
  joint_positions=joint_positions,
43
+ base_linear_velocity=base_linear_velocity_inertial,
44
+ base_angular_velocity=base_angular_velocity_inertial,
45
+ joint_velocities=joint_velocities,
37
46
  )
38
47
 
39
48
  # Get the parent array λ(i).
@@ -46,10 +55,10 @@ def forward_kinematics_model(
46
55
  translation=W_p_B,
47
56
  )
48
57
 
49
- # Compute the parent-to-child adjoints and the motion subspaces of the joints.
58
+ # Compute the parent-to-child adjoints of the joints.
50
59
  # These transforms define the relative kinematics of the entire model, including
51
60
  # the base transform for both floating-base and fixed-base models.
52
- i_X_λi, _ = model.kin_dyn_parameters.joint_transforms_and_motion_subspaces(
61
+ i_X_λi = model.kin_dyn_parameters.joint_transforms(
53
62
  joint_positions=s, base_transform=W_H_B.as_matrix()
54
63
  )
55
64
 
@@ -57,35 +66,51 @@ def forward_kinematics_model(
57
66
  W_X_i = jnp.zeros(shape=(model.number_of_links(), 6, 6))
58
67
  W_X_i = W_X_i.at[0].set(Adjoint.inverse(i_X_λi[0]))
59
68
 
69
+ # Allocate buffer of 6D inertial-fixed velocities and initialize the base velocity.
70
+ W_v_Wi = jnp.zeros(shape=(model.number_of_links(), 6))
71
+ W_v_Wi = W_v_Wi.at[0].set(W_v_WB)
72
+
73
+ # Extract the joint motion subspaces.
74
+ S = model.kin_dyn_parameters.motion_subspaces
75
+
60
76
  # ========================
61
77
  # Propagate the kinematics
62
78
  # ========================
63
79
 
64
- PropagateKinematicsCarry = tuple[jtp.Matrix]
65
- propagate_kinematics_carry: PropagateKinematicsCarry = (W_X_i,)
80
+ PropagateKinematicsCarry = tuple[jtp.Matrix, jtp.Matrix]
81
+ propagate_kinematics_carry: PropagateKinematicsCarry = (W_X_i, W_v_Wi)
66
82
 
67
83
  def propagate_kinematics(
68
84
  carry: PropagateKinematicsCarry, i: jtp.Int
69
85
  ) -> tuple[PropagateKinematicsCarry, None]:
70
86
 
71
- (W_X_i,) = carry
87
+ ii = i - 1
88
+ W_X_i, W_v_Wi = carry
89
+
90
+ # Compute the parent to child 6D transform.
91
+ λi_X_i = Adjoint.inverse(adjoint=i_X_λi[i])
92
+
93
+ # Compute the world to child 6D transform.
94
+ W_Xi_i = W_X_i[λ[i]] @ λi_X_i
95
+ W_X_i = W_X_i.at[i].set(W_Xi_i)
72
96
 
73
- W_X_i_i = W_X_i[λ[i]] @ Adjoint.inverse(i_X_λi[i])
74
- W_X_i = W_X_i.at[i].set(W_X_i_i)
97
+ # Propagate the 6D velocity.
98
+ W_vi_Wi = W_v_Wi[λ[i]] + W_X_i[i] @ (S[i] * ṡ[ii]).squeeze()
99
+ W_v_Wi = W_v_Wi.at[i].set(W_vi_Wi)
75
100
 
76
- return (W_X_i,), None
101
+ return (W_X_i, W_v_Wi), None
77
102
 
78
- (W_X_i,), _ = (
103
+ (W_X_i, W_v_Wi), _ = (
79
104
  jax.lax.scan(
80
105
  f=propagate_kinematics,
81
106
  init=propagate_kinematics_carry,
82
107
  xs=jnp.arange(start=1, stop=model.number_of_links()),
83
108
  )
84
109
  if model.number_of_links() > 1
85
- else [(W_X_i,), None]
110
+ else [(W_X_i, W_v_Wi), None]
86
111
  )
87
112
 
88
- return jax.vmap(Adjoint.to_transform)(W_X_i)
113
+ return jax.vmap(Adjoint.to_transform)(W_X_i), W_v_Wi
89
114
 
90
115
 
91
116
  def forward_kinematics(
jaxsim/rbda/jacobian.py CHANGED
@@ -35,13 +35,16 @@ def jacobian(
35
35
  # Note: λ(0) must not be used, it's initialized to -1.
36
36
  λ = model.kin_dyn_parameters.parent_array
37
37
 
38
- # Compute the parent-to-child adjoints and the motion subspaces of the joints.
38
+ # Compute the parent-to-child adjoints of the joints.
39
39
  # These transforms define the relative kinematics of the entire model, including
40
40
  # the base transform for both floating-base and fixed-base models.
41
- i_X_λi, S = model.kin_dyn_parameters.joint_transforms_and_motion_subspaces(
41
+ i_X_λi = model.kin_dyn_parameters.joint_transforms(
42
42
  joint_positions=s, base_transform=jnp.eye(4)
43
43
  )
44
44
 
45
+ # Extract the joint motion subspaces.
46
+ S = model.kin_dyn_parameters.motion_subspaces
47
+
45
48
  # Allocate the buffer of transforms link -> base.
46
49
  i_X_0 = jnp.zeros(shape=(model.number_of_links(), 6, 6))
47
50
  i_X_0 = i_X_0.at[0].set(jnp.eye(6))
@@ -152,13 +155,16 @@ def jacobian_full_doubly_left(
152
155
  # Note: λ(0) must not be used, it's initialized to -1.
153
156
  λ = model.kin_dyn_parameters.parent_array
154
157
 
155
- # Compute the parent-to-child adjoints and the motion subspaces of the joints.
158
+ # Compute the parent-to-child adjoints of the joints.
156
159
  # These transforms define the relative kinematics of the entire model, including
157
160
  # the base transform for both floating-base and fixed-base models.
158
- i_X_λi, S = model.kin_dyn_parameters.joint_transforms_and_motion_subspaces(
161
+ i_X_λi = model.kin_dyn_parameters.joint_transforms(
159
162
  joint_positions=s, base_transform=jnp.eye(4)
160
163
  )
161
164
 
165
+ # Extract the joint motion subspaces.
166
+ S = model.kin_dyn_parameters.motion_subspaces
167
+
162
168
  # Allocate the buffer of transforms base -> link.
163
169
  B_X_i = jnp.zeros(shape=(model.number_of_links(), 6, 6))
164
170
  B_X_i = B_X_i.at[0].set(jnp.eye(6))
@@ -244,13 +250,16 @@ def jacobian_derivative_full_doubly_left(
244
250
  # Note: λ(0) must not be used, it's initialized to -1.
245
251
  λ = model.kin_dyn_parameters.parent_array
246
252
 
247
- # Compute the parent-to-child adjoints and the motion subspaces of the joints.
253
+ # Compute the parent-to-child adjoints of the joints.
248
254
  # These transforms define the relative kinematics of the entire model, including
249
255
  # the base transform for both floating-base and fixed-base models.
250
- i_X_λi, S = model.kin_dyn_parameters.joint_transforms_and_motion_subspaces(
256
+ i_X_λi = model.kin_dyn_parameters.joint_transforms(
251
257
  joint_positions=s, base_transform=jnp.eye(4)
252
258
  )
253
259
 
260
+ # Extract the joint motion subspaces.
261
+ S = model.kin_dyn_parameters.motion_subspaces
262
+
254
263
  # Allocate the buffer of 6D transform base -> link.
255
264
  B_X_i = jnp.zeros(shape=(model.number_of_links(), 6, 6))
256
265
  B_X_i = B_X_i.at[0].set(jnp.eye(6))
jaxsim/rbda/rnea.py CHANGED
@@ -4,7 +4,7 @@ import jaxlie
4
4
 
5
5
  import jaxsim.api as js
6
6
  import jaxsim.typing as jtp
7
- from jaxsim.math import Adjoint, Cross, StandardGravity
7
+ from jaxsim.math import STANDARD_GRAVITY, Adjoint, Cross
8
8
 
9
9
  from . import utils
10
10
 
@@ -22,7 +22,7 @@ def rnea(
22
22
  base_angular_acceleration: jtp.Vector | None = None,
23
23
  joint_accelerations: jtp.Vector | None = None,
24
24
  link_forces: jtp.Matrix | None = None,
25
- standard_gravity: jtp.FloatLike = StandardGravity,
25
+ standard_gravity: jtp.FloatLike = STANDARD_GRAVITY,
26
26
  ) -> tuple[jtp.Vector, jtp.Vector]:
27
27
  """
28
28
  Compute inverse dynamics using the Recursive Newton-Euler Algorithm (RNEA).
@@ -88,13 +88,16 @@ def rnea(
88
88
  W_X_B = W_H_B.adjoint()
89
89
  B_X_W = W_H_B.inverse().adjoint()
90
90
 
91
- # Compute the parent-to-child adjoints and the motion subspaces of the joints.
91
+ # Compute the parent-to-child adjoints of the joints.
92
92
  # These transforms define the relative kinematics of the entire model, including
93
93
  # the base transform for both floating-base and fixed-base models.
94
- i_X_λi, S = model.kin_dyn_parameters.joint_transforms_and_motion_subspaces(
94
+ i_X_λi = model.kin_dyn_parameters.joint_transforms(
95
95
  joint_positions=s, base_transform=W_H_B.as_matrix()
96
96
  )
97
97
 
98
+ # Extract the joint motion subspaces.
99
+ S = model.kin_dyn_parameters.motion_subspaces
100
+
98
101
  # Allocate buffers.
99
102
  v = jnp.zeros(shape=(model.number_of_links(), 6, 1))
100
103
  a = jnp.zeros(shape=(model.number_of_links(), 6, 1))
jaxsim/rbda/utils.py CHANGED
@@ -3,7 +3,7 @@ import jax.numpy as jnp
3
3
  import jaxsim.api as js
4
4
  import jaxsim.typing as jtp
5
5
  from jaxsim import exceptions
6
- from jaxsim.math import StandardGravity
6
+ from jaxsim.math import STANDARD_GRAVITY
7
7
 
8
8
 
9
9
  def process_inputs(
@@ -96,7 +96,7 @@ def process_inputs(
96
96
  standard_gravity = (
97
97
  jnp.array(standard_gravity).squeeze()
98
98
  if standard_gravity is not None
99
- else StandardGravity
99
+ else STANDARD_GRAVITY
100
100
  )
101
101
 
102
102
  if s.shape != (dofs,):
@@ -144,7 +144,7 @@ def process_inputs(
144
144
  W_v̇_WB = jnp.hstack([W_v̇l_WB, W_ω̇_WB])
145
145
 
146
146
  # Create the 6D gravity acceleration.
147
- W_g = jnp.zeros(6).at[2].set(-standard_gravity)
147
+ W_g = jnp.array([0, 0, standard_gravity, 0, 0, 0])
148
148
 
149
149
  return (
150
150
  W_p_B.astype(float),
@@ -202,7 +202,11 @@ class JaxsimDataclass(abc.ABC):
202
202
  )
203
203
 
204
204
  if not compatible_structure:
205
- raise ValueError("Pytrees have incompatible structures.")
205
+ raise ValueError(
206
+ f"Pytrees have incompatible structures.\n"
207
+ f"Original: {', '.join(map(str, [jax.tree_util.tree_structure(tree) for tree in trees[1:]]))}\n"
208
+ f"Target: {target_structure}"
209
+ )
206
210
 
207
211
  target_shapes = JaxsimDataclass.get_leaf_shapes(trees[0])
208
212
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: jaxsim
3
- Version: 0.6.1.dev13
3
+ Version: 0.6.2.dev102
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>
@@ -66,7 +66,7 @@ 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
69
- Requires-Dist: optax>=0.2.3
69
+ Requires-Dist: optax==0.2.3
70
70
  Requires-Dist: qpax
71
71
  Requires-Dist: rod>=0.3.3
72
72
  Requires-Dist: typing_extensions; python_version < "3.12"
@@ -98,9 +98,8 @@ Requires-Dist: jaxsim[style,testing,viz]; extra == "all"
98
98
  <br/>
99
99
  <table>
100
100
  <tr>
101
- <th><img src="https://github.com/user-attachments/assets/115b1c1c-6ae5-4c59-92e0-1be13ba954db" width="250"></th>
102
- <th><img src="https://github.com/user-attachments/assets/f9661fae-9a85-41dd-9a58-218758ec8c9c" width="250"></th>
103
- <th><img src="https://github.com/user-attachments/assets/ae8adadf-3bca-47b8-97ca-3a9273633d60" width="250"></th>
101
+ <th><img src="https://github.com/user-attachments/assets/f9661fae-9a85-41dd-9a58-218758ec8c9c" width="500"></th>
102
+ <th><img src="https://github.com/user-attachments/assets/62b88b9d-45ea-4d22-99d2-f24fc842dd29" width="500"></th>
104
103
  </tr>
105
104
  </table>
106
105
  <br/>
@@ -143,15 +142,14 @@ model = js.model.reduce(model=full_model, considered_joints=joints)
143
142
 
144
143
  ndof = model.dofs()
145
144
  # Initialize data and simulation
146
- data = js.data.JaxSimModelData.zero(model=model).reset_base_position(
147
- base_position=jnp.array([0.0, 0.0, 1.0])
148
- )
145
+ # Note that the default data representation is mixed velocity representation
146
+ data = js.data.JaxSimModelData.build(model=model,base_position=jnp.array([0.0, 0.0, 1.0]))
149
147
  T = jnp.arange(start=0, stop=1.0, step=model.time_step)
150
148
  tau = jnp.zeros(ndof)
151
149
 
152
150
  # Simulate
153
151
  for t in T:
154
- data, _ = js.model.step(model=model, data=data, link_forces=None, joint_force_references=tau)
152
+ data = js.model.step(model=model, data=data, link_forces=None, joint_force_references=tau)
155
153
 
156
154
  ```
157
155
 
@@ -0,0 +1,69 @@
1
+ jaxsim/__init__.py,sha256=b8dYoVXqtHxHcF56iM2xgKk78lsvmGrfDlvdwaGasgs,3388
2
+ jaxsim/_version.py,sha256=fe1EJvNfkAkdKyqJAK6TVMFosZyfMNpLo25zJ3DLg4w,428
3
+ jaxsim/exceptions.py,sha256=MQ3LRMfVMX2-g3qYj7mUVNV9OLlIA48TANJegbcQyXI,2641
4
+ jaxsim/logging.py,sha256=STI-D_upXZYX-ZezLrlJJ0UlD5YspST0vZ_DcIwkzO4,1553
5
+ jaxsim/typing.py,sha256=7msl8t5Jt09RNYfKdPJtpjLfWurldcycDappb045Eso,761
6
+ jaxsim/api/__init__.py,sha256=Yck5Cr6_6yqGKwt2KicccEiy-hzIAOFA3G0sPXWQTgg,253
7
+ jaxsim/api/actuation_model.py,sha256=L8AzxIiEquWeG8UGGJaYr2Alt4dkkOROlbsCn9hUYik,2825
8
+ jaxsim/api/com.py,sha256=jhWcUsJtZYEQf-hnEvVuqH1KoiakBNLnTkj3PA6Cn-Q,13748
9
+ jaxsim/api/common.py,sha256=jd3thxFUxcyoAMV3ZDMqfk2DlBdvWMZuI25Y0Pw5Dlo,7088
10
+ jaxsim/api/contact.py,sha256=PpVtlb7Iw4mW0dCrGWorznzF2ai13N9SlV7DL5ecUfA,16795
11
+ jaxsim/api/contact_model.py,sha256=gY7dRA6UIduD4OO1nRZ4VmnNXIOeDLulw5Am9gBjhUs,3334
12
+ jaxsim/api/data.py,sha256=vfgzPBCbX9OUiCBKvyib2aevhZpH-MzU4ZNZsnhidQo,20790
13
+ jaxsim/api/frame.py,sha256=4wg6GsyBQgYhSvc-ry_31JsaL66sZt3TtgwjB7NrHmk,14583
14
+ jaxsim/api/integrators.py,sha256=o7Fx3xjkwYUc9OJidcaPVeCEHMO-D63Y_c2zt0Q71xY,2818
15
+ jaxsim/api/joint.py,sha256=AnqlNWmBOay-gsoo0y4AbfFQ2OCJm-8T1E0IMhZeLoY,7457
16
+ jaxsim/api/kin_dyn_parameters.py,sha256=XXYJSncZCfrAVcJlHBU4cOHmWf1iOh68vv5qyKF4s08,29788
17
+ jaxsim/api/link.py,sha256=bSZOYJDY9HJMgY25VzevTTsdFZTJc6yRRpslc5FhGHE,12782
18
+ jaxsim/api/model.py,sha256=Xy6rjHnWaiQZikXc9nNChAz2Y46NpXX63QSM4erBBhg,68425
19
+ jaxsim/api/ode.py,sha256=2Kkh1vk2eXYoMwSJhE-HfFWcEWtM1A9ZZR-b4xmH8uk,5486
20
+ jaxsim/api/references.py,sha256=ywNiURwZ0niYB-AzX1eoWCfdrx7TBiRyyfi_2tz-ako,20677
21
+ jaxsim/math/__init__.py,sha256=lWMswEnITzQ69O761CiHL-r7UrxyIqsHlk4YTNxtwAY,384
22
+ jaxsim/math/adjoint.py,sha256=mAtCwddK1ZwpVgIp4GIY8EVAW32Z67AJl_BzREf0ih8,4731
23
+ jaxsim/math/cross.py,sha256=AM4HauuuT09q2TN42qvdXhJ9LvtCh0e7ZyLjP-7sANs,1498
24
+ jaxsim/math/inertia.py,sha256=T-iAjPYSD_72R0ZG8GDJhe5i3Jc3ojhlbBRSscTdCKg,1577
25
+ jaxsim/math/joint_model.py,sha256=mV6F3SVHUxHcXMIw-hc4fG341R4rkK8MvRPn53HcEpg,6915
26
+ jaxsim/math/quaternion.py,sha256=MSaZywzJDxs2te1ZELeIcupKSFIA9q_pdXy7fDAEqM4,4539
27
+ jaxsim/math/rotation.py,sha256=TEUtT3X2tFieNxdlccup1pfaTgCTtfX-hTNotd8-nNk,1892
28
+ jaxsim/math/skew.py,sha256=z_9YN-NDHL3n4KXWNbzTSMkFDZ0SDpz4RUcwwYFOaao,1402
29
+ jaxsim/math/transform.py,sha256=We0ChLajSckxGINiJsP1a5Ur3yjg3JuweQ3kK4Woix4,3332
30
+ jaxsim/math/utils.py,sha256=2id1F6QOvkHkIF3Nuxuj_tz_kI0IYlrlgVQrETmXFfI,1058
31
+ jaxsim/mujoco/__init__.py,sha256=1kAWzYOS7nP29S5FGyWPqiAnPf4yPSoaPW-WBGBjVV0,214
32
+ jaxsim/mujoco/__main__.py,sha256=GBmB7J-zj75ZnFyuAAmpSOpbxi_HhHhWJeot3ljGDJY,5291
33
+ jaxsim/mujoco/loaders.py,sha256=Jjb5Us9ERmLjejM4S1FcqrF12ZVkjBMZXelu9n6HGA4,23138
34
+ jaxsim/mujoco/model.py,sha256=bRXo1uhWDN37sP9qdejr_2vq_PXHQ7p6eyBlFff_JcE,16492
35
+ jaxsim/mujoco/utils.py,sha256=dW3LrcM050-eVVdLuCiN3StIrTEfyk_jJyq1GiNh3fg,8396
36
+ jaxsim/mujoco/visualizer.py,sha256=zkdu5qxZK0BGYotAHxoYQ5ZVTWSmwVZPQ3vTWGOik9E,7218
37
+ jaxsim/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ jaxsim/parsers/kinematic_graph.py,sha256=QP7j_sBTrKgT-PZQ44yFNoIbf877dQvavcRvbatCFz4,35864
39
+ jaxsim/parsers/descriptions/__init__.py,sha256=N_hp8cGI5FyEFiuNx9a-CAGCr0F0QpYEpdMHvwB7_1g,261
40
+ jaxsim/parsers/descriptions/collision.py,sha256=C6SekAPL2tNG62Y-lTqj1m9BblhoTZDj2F2vgspKNbI,4577
41
+ jaxsim/parsers/descriptions/joint.py,sha256=MurLIHHmu-y_bwUcR_J1NZ-FjfRZRk166zKsn6VzIwE,4232
42
+ jaxsim/parsers/descriptions/link.py,sha256=Eh0W5qL7_Uw0GV-BkNKXhm9Q2dRTfIWCX5D-87zQkxA,3711
43
+ jaxsim/parsers/descriptions/model.py,sha256=G7nYy4CTppj2NM7hTXP6xGJ2h5dwT41N1fsy0EYSIBk,9860
44
+ jaxsim/parsers/rod/__init__.py,sha256=G2vqlLajBLUc4gyzXwsEI2Wsi4TMOIF9bLDFeT6KrGU,92
45
+ jaxsim/parsers/rod/meshes.py,sha256=yAXefG73_zqbVKRUdlcz9yFmypjDIpiP9cO96PeAozE,2842
46
+ jaxsim/parsers/rod/parser.py,sha256=2AxRimQeYHHrdWLJrzXxPX9TUMOhuv10lqptfvG6wMQ,14405
47
+ jaxsim/parsers/rod/utils.py,sha256=Wb1TsZ2v0VgmswYqI5hHRtGQx4ttWK8luWO9cvllTEk,8117
48
+ jaxsim/rbda/__init__.py,sha256=kmy4G9aMkrqPNGdLSaSV3k15dpF52vBEUQXDFDuKIxU,337
49
+ jaxsim/rbda/aba.py,sha256=QiajR4Uv06u-BX5V2kWpmFmP_kIfTxxcycdJhIbid9A,9029
50
+ jaxsim/rbda/collidable_points.py,sha256=XyeV1I43GL22j03rkNVocaIPOGYirt3PiDHrFMndziQ,2070
51
+ jaxsim/rbda/crba.py,sha256=DC9kBXMG1qXaoAdo8K7OCnVHT_YUaL_t6Li56sRf8ro,5093
52
+ jaxsim/rbda/forward_kinematics.py,sha256=zoyXEZnL-hyJr3c9Jl0EfCleJtVvVsekHgUTLn5EiQ4,4640
53
+ jaxsim/rbda/jacobian.py,sha256=EaMvf073UnLWJGXm4UZIlYd4erulFAGgj_pp89k6xic,11113
54
+ jaxsim/rbda/rnea.py,sha256=lMU7xxdPqGGzk0QwteB-IYjL4auHOpd78C1YqAXlp9s,7588
55
+ jaxsim/rbda/utils.py,sha256=3Q1yZn6J7j8D5HP_3yQCzkcNLf0VID6NcETGu6YvWwM,5370
56
+ jaxsim/rbda/contacts/__init__.py,sha256=eZKSoGpWH6IQIofhXzU-q9J00PkKTovPVnxubmzoK0E,202
57
+ jaxsim/rbda/contacts/common.py,sha256=QSvEykjN5MuRD7Vk-rM454qBYdkwH7xZAVOBeulKAUc,5042
58
+ jaxsim/rbda/contacts/relaxed_rigid.py,sha256=-WZ2g5JAeK7tgTZCsgADzjKs2AaReTHzQYespmxvgj0,26713
59
+ jaxsim/terrain/__init__.py,sha256=f7lVX-iNpH_wkkjef9Qpjh19TTAUOQw76EiLYJDVizc,78
60
+ jaxsim/terrain/terrain.py,sha256=TH84r2qizMmsfW7zYLViRjacCfOkqdYHsCzD1lZEY4c,6716
61
+ jaxsim/utils/__init__.py,sha256=Y5zyoRevl3EMVQadhZ4EtSwTEkDt2vcnFoRhPJjKTZ0,215
62
+ jaxsim/utils/jaxsim_dataclass.py,sha256=XzmZeIibcaOzaxpprsGSxH3UrM66PAO456rFV91sNXg,11453
63
+ jaxsim/utils/tracing.py,sha256=Btwxdfhb7fJLk3r5PlQkGYj60Y2KbFT1gANGIA697FU,530
64
+ jaxsim/utils/wrappers.py,sha256=3IMwydqFgmSPqeuUQ3PRmdhDc1IoT6XC23jPC_LjWXs,4175
65
+ jaxsim-0.6.2.dev102.dist-info/LICENSE,sha256=eaYdFmdeMbiIoIiPzEK0MjP1S9wtFXjXNR5er49uLR0,1546
66
+ jaxsim-0.6.2.dev102.dist-info/METADATA,sha256=7WbJv10-ApuGcTLm05dFCCoNI1CXqJ_NHz6scPi64u4,20132
67
+ jaxsim-0.6.2.dev102.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
68
+ jaxsim-0.6.2.dev102.dist-info/top_level.txt,sha256=LxGMA8FLtXjQ6oI7N5gd_R_oSUHxpXxUEOfT1xS_ni0,7
69
+ jaxsim-0.6.2.dev102.dist-info/RECORD,,