jaxsim 0.6.2.dev253__tar.gz → 0.6.2.dev259__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.
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/PKG-INFO +1 -1
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/data.py +1 -7
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/integrators.py +108 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/model.py +1 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim.egg-info/PKG-INFO +1 -1
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/conftest.py +1 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.gitattributes +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.github/CODEOWNERS +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.github/dependabot.yml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.github/workflows/gpu_benchmark.yml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.github/workflows/pixi.yml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.gitignore +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/.readthedocs.yaml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/CONTRIBUTING.md +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/LICENSE +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/README.md +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/Makefile +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/conf.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/examples.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/guide/configuration.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/guide/install.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/index.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/make.bat +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/api.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/math.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/mujoco.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/rbda.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/typing.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/docs/modules/utils.rst +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/environment.yml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/.gitattributes +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/.gitignore +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/README.md +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/assets/build_cartpole_urdf.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/jaxsim_as_physics_engine.ipynb +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/pixi.lock +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/pyproject.toml +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/setup.cfg +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/setup.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/actuation_model.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/frame.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/ode.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/exceptions.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/math/utils.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/mujoco/utils.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/rod/meshes.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/actuation/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/actuation/common.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/contacts/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/contacts/common.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/contacts/rigid.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/contacts/soft.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim/utils/wrappers.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim.egg-info/SOURCES.txt +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim.egg-info/requires.txt +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/__init__.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_actuation.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_com.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_contact.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_data.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_frame.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_joint.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_link.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_api_model.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_benchmark.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_exceptions.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_meshes.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_pytree.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_simulations.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/test_visualizer.py +0 -0
- {jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.6.2.
|
3
|
+
Version: 0.6.2.dev259
|
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>
|
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '0.6.2.
|
21
|
-
__version_tuple__ = version_tuple = (0, 6, 2, '
|
20
|
+
__version__ = version = '0.6.2.dev259'
|
21
|
+
__version_tuple__ = version_tuple = (0, 6, 2, 'dev259')
|
@@ -431,13 +431,6 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
431
431
|
if contact_state is None:
|
432
432
|
contact_state = self.contact_state
|
433
433
|
|
434
|
-
if isinstance(model.contact_model, jaxsim.rbda.contacts.SoftContacts):
|
435
|
-
contact_state = {
|
436
|
-
"tangential_deformation": jnp.zeros_like(
|
437
|
-
contact_state["tangential_deformation"]
|
438
|
-
)
|
439
|
-
}
|
440
|
-
|
441
434
|
# Normalize the quaternion to avoid numerical issues.
|
442
435
|
base_quaternion_norm = jaxsim.math.safe_norm(
|
443
436
|
base_quaternion, axis=-1, keepdims=True
|
@@ -525,6 +518,7 @@ class JaxSimModelData(common.ModelDataWithVelocityRepresentation):
|
|
525
518
|
_joint_transforms=joint_transforms,
|
526
519
|
_link_transforms=link_transforms,
|
527
520
|
_link_velocities=link_velocities,
|
521
|
+
contact_state=contact_state,
|
528
522
|
validate=validate,
|
529
523
|
)
|
530
524
|
|
@@ -156,9 +156,117 @@ def rk4_integration(
|
|
156
156
|
return data_tf.replace(model=model)
|
157
157
|
|
158
158
|
|
159
|
+
def rk4fast_integration(
|
160
|
+
model: js.model.JaxSimModel,
|
161
|
+
data: JaxSimModelData,
|
162
|
+
link_forces: jtp.Vector,
|
163
|
+
joint_torques: jtp.Vector,
|
164
|
+
) -> JaxSimModelData:
|
165
|
+
"""
|
166
|
+
Integrate the system state using the Runge-Kutta 4 fast method.
|
167
|
+
|
168
|
+
Note:
|
169
|
+
This method is a faster version of the RK4 method, but it may not be as accurate.
|
170
|
+
It computes the contact forces only once at the beginning of the integration step.
|
171
|
+
"""
|
172
|
+
|
173
|
+
dt = model.time_step
|
174
|
+
|
175
|
+
if len(model.kin_dyn_parameters.contact_parameters.body) > 0:
|
176
|
+
|
177
|
+
# Compute the 6D forces W_f ∈ ℝ^{n_L × 6} applied to links due to contact
|
178
|
+
# with the terrain.
|
179
|
+
W_f_L_terrain, contact_state_derivative = js.contact.link_contact_forces(
|
180
|
+
model=model,
|
181
|
+
data=data,
|
182
|
+
link_forces=link_forces,
|
183
|
+
joint_torques=joint_torques,
|
184
|
+
)
|
185
|
+
|
186
|
+
W_f_L_total = link_forces + W_f_L_terrain
|
187
|
+
|
188
|
+
# Update the contact state data. This is necessary only for the contact models
|
189
|
+
# that require propagation and integration of contact state.
|
190
|
+
contact_state = model.contact_model.update_contact_state(contact_state_derivative)
|
191
|
+
|
192
|
+
def f(x) -> dict[str, jtp.Matrix]:
|
193
|
+
|
194
|
+
with data.switch_velocity_representation(jaxsim.VelRepr.Inertial):
|
195
|
+
|
196
|
+
data_ti = data.replace(model=model, **x)
|
197
|
+
|
198
|
+
W_v̇_WB, s̈ = js.model.forward_dynamics_aba(
|
199
|
+
model=model,
|
200
|
+
data=data_ti,
|
201
|
+
joint_forces=joint_torques,
|
202
|
+
link_forces=W_f_L_total,
|
203
|
+
)
|
204
|
+
|
205
|
+
W_ṗ_B, W_Q̇_B, ṡ = js.ode.system_position_dynamics(
|
206
|
+
data=data,
|
207
|
+
baumgarte_quaternion_regularization=1.0,
|
208
|
+
)
|
209
|
+
|
210
|
+
return dict(
|
211
|
+
base_position=W_ṗ_B,
|
212
|
+
base_quaternion=W_Q̇_B,
|
213
|
+
joint_positions=ṡ,
|
214
|
+
base_linear_velocity=W_v̇_WB[0:3],
|
215
|
+
base_angular_velocity=W_v̇_WB[3:6],
|
216
|
+
joint_velocities=s̈,
|
217
|
+
# The contact state is not updated here, as it is assumed to be constant.
|
218
|
+
contact_state=data_ti.contact_state,
|
219
|
+
)
|
220
|
+
|
221
|
+
base_quaternion_norm = jaxsim.math.safe_norm(data._base_quaternion, axis=-1)
|
222
|
+
base_quaternion = data._base_quaternion / jnp.where(
|
223
|
+
base_quaternion_norm == 0, 1.0, base_quaternion_norm
|
224
|
+
)
|
225
|
+
|
226
|
+
x_t0 = dict(
|
227
|
+
base_position=data._base_position,
|
228
|
+
base_quaternion=base_quaternion,
|
229
|
+
joint_positions=data._joint_positions,
|
230
|
+
base_linear_velocity=data._base_linear_velocity,
|
231
|
+
base_angular_velocity=data._base_angular_velocity,
|
232
|
+
joint_velocities=data._joint_velocities,
|
233
|
+
contact_state=contact_state,
|
234
|
+
)
|
235
|
+
|
236
|
+
euler_mid = lambda x, dxdt: x + (0.5 * dt) * dxdt
|
237
|
+
euler_fin = lambda x, dxdt: x + dt * dxdt
|
238
|
+
|
239
|
+
k1 = f(x_t0)
|
240
|
+
k2 = f(jax.tree.map(euler_mid, x_t0, k1))
|
241
|
+
k3 = f(jax.tree.map(euler_mid, x_t0, k2))
|
242
|
+
k4 = f(jax.tree.map(euler_fin, x_t0, k3))
|
243
|
+
|
244
|
+
# Average the slopes and compute the RK4 state derivative.
|
245
|
+
average = lambda k1, k2, k3, k4: (k1 + 2 * k2 + 2 * k3 + k4) / 6
|
246
|
+
|
247
|
+
dxdt = jax.tree_util.tree_map(average, k1, k2, k3, k4)
|
248
|
+
|
249
|
+
# Integrate the dynamics
|
250
|
+
x_tf = jax.tree_util.tree_map(euler_fin, x_t0, dxdt)
|
251
|
+
|
252
|
+
data_tf = dataclasses.replace(
|
253
|
+
data,
|
254
|
+
_base_position=x_tf["base_position"],
|
255
|
+
_base_quaternion=x_tf["base_quaternion"],
|
256
|
+
_joint_positions=x_tf["joint_positions"],
|
257
|
+
_base_linear_velocity=x_tf["base_linear_velocity"],
|
258
|
+
_base_angular_velocity=x_tf["base_angular_velocity"],
|
259
|
+
_joint_velocities=x_tf["joint_velocities"],
|
260
|
+
contact_state=x_tf["contact_state"],
|
261
|
+
)
|
262
|
+
|
263
|
+
return data_tf.replace(model=model)
|
264
|
+
|
265
|
+
|
159
266
|
_INTEGRATORS_MAP: dict[
|
160
267
|
js.model.IntegratorType, Callable[..., js.data.JaxSimModelData]
|
161
268
|
] = {
|
162
269
|
js.model.IntegratorType.SemiImplicitEuler: semi_implicit_euler_integration,
|
163
270
|
js.model.IntegratorType.RungeKutta4: rk4_integration,
|
271
|
+
js.model.IntegratorType.RungeKutta4Fast: rk4fast_integration,
|
164
272
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.6.2.
|
3
|
+
Version: 0.6.2.dev259
|
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>
|
@@ -133,6 +133,7 @@ def velocity_representation(request) -> jaxsim.VelRepr:
|
|
133
133
|
params=[
|
134
134
|
pytest.param(IntegratorType.SemiImplicitEuler, id="semi_implicit_euler"),
|
135
135
|
pytest.param(IntegratorType.RungeKutta4, id="runge_kutta_4"),
|
136
|
+
pytest.param(IntegratorType.RungeKutta4Fast, id="runge_kutta_4_fast"),
|
136
137
|
],
|
137
138
|
)
|
138
139
|
def integrator(request) -> str:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/jaxsim_as_multibody_dynamics_library.ipynb
RENAMED
File without changes
|
File without changes
|
{jaxsim-0.6.2.dev253 → jaxsim-0.6.2.dev259}/examples/jaxsim_as_physics_engine_advanced.ipynb
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|