jaxsim 0.5.1.dev139__tar.gz → 0.5.1.dev147__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.5.1.dev139 → jaxsim-0.5.1.dev147}/PKG-INFO +2 -2
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/jaxsim_for_robot_controllers.ipynb +11 -4
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/model.py +5 -7
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/contacts/rigid.py +27 -45
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim.egg-info/PKG-INFO +2 -2
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.gitattributes +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.github/CODEOWNERS +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.github/dependabot.yml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.github/workflows/ci_cd.yml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.github/workflows/pixi.yml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.gitignore +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/.readthedocs.yaml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/CONTRIBUTING.md +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/LICENSE +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/README.md +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/Makefile +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/conf.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/examples.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/guide/configuration.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/guide/install.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/index.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/make.bat +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/api.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/integrators.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/math.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/mujoco.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/parsers.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/rbda.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/typing.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/docs/modules/utils.rst +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/environment.yml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/.gitattributes +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/.gitignore +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/README.md +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/assets/build_cartpole_urdf.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/assets/cartpole.urdf +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/jaxsim_as_physics_engine.ipynb +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/jaxsim_as_physics_engine_advanced.ipynb +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/pixi.lock +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/pyproject.toml +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/setup.cfg +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/setup.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/data.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/frame.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/ode.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/ode_data.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/exceptions.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/integrators/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/integrators/common.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/integrators/fixed_step.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/integrators/variable_step.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/math/utils.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/mujoco/loaders.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/mujoco/model.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/mujoco/utils.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/mujoco/visualizer.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/rod/meshes.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/contacts/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/contacts/common.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/contacts/soft.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/contacts/visco_elastic.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim/utils/wrappers.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim.egg-info/SOURCES.txt +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim.egg-info/requires.txt +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/__init__.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/conftest.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_com.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_contact.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_data.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_frame.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_joint.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_link.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_api_model.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_benchmark.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_contact.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_exceptions.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_meshes.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_pytree.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/test_simulations.py +0 -0
- {jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.5.1.
|
3
|
+
Version: 0.5.1.dev147
|
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>
|
@@ -111,10 +111,12 @@
|
|
111
111
|
"source": [
|
112
112
|
"# @title Load the URDF model\n",
|
113
113
|
"import pathlib\n",
|
114
|
+
"import urllib\n",
|
114
115
|
"\n",
|
115
|
-
"
|
116
|
-
"
|
117
|
-
"
|
116
|
+
"# Retrieve the file\n",
|
117
|
+
"url = \"https://raw.githubusercontent.com/ami-iit/jaxsim/refs/heads/main/examples/assets/cartpole.urdf\"\n",
|
118
|
+
"model_path, _ = urllib.request.urlretrieve(url)\n",
|
119
|
+
"model_urdf_string = pathlib.Path(model_path).read_text()"
|
118
120
|
]
|
119
121
|
},
|
120
122
|
{
|
@@ -435,6 +437,11 @@
|
|
435
437
|
"\n",
|
436
438
|
"Additionally, if your controllers or planners require the derivatives of the dynamics with respect to the state or inputs, you can obtain them using automatic differentiation directly through JaxSim's API."
|
437
439
|
]
|
440
|
+
},
|
441
|
+
{
|
442
|
+
"cell_type": "markdown",
|
443
|
+
"metadata": {},
|
444
|
+
"source": []
|
438
445
|
}
|
439
446
|
],
|
440
447
|
"metadata": {
|
@@ -459,7 +466,7 @@
|
|
459
466
|
"name": "python",
|
460
467
|
"nbconvert_exporter": "python",
|
461
468
|
"pygments_lexer": "ipython3",
|
462
|
-
"version": "3.
|
469
|
+
"version": "3.13.1"
|
463
470
|
}
|
464
471
|
},
|
465
472
|
"nbformat": 4,
|
@@ -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.
|
16
|
-
__version_tuple__ = version_tuple = (0, 5, 1, '
|
15
|
+
__version__ = version = '0.5.1.dev147'
|
16
|
+
__version_tuple__ = version_tuple = (0, 5, 1, 'dev147')
|
@@ -2295,9 +2295,6 @@ def step(
|
|
2295
2295
|
# Hence, here we need to reset the velocity after each impact to guarantee that
|
2296
2296
|
# the linear velocity of the active collidable points is zero.
|
2297
2297
|
case jaxsim.rbda.contacts.RigidContacts():
|
2298
|
-
assert isinstance(
|
2299
|
-
data_tf.contacts_params, jaxsim.rbda.contacts.RigidContactsParams
|
2300
|
-
)
|
2301
2298
|
|
2302
2299
|
# Raise runtime error for not supported case in which Rigid contacts and
|
2303
2300
|
# Baumgarte stabilization are enabled and used with ForwardEuler integrator.
|
@@ -2331,12 +2328,13 @@ def step(
|
|
2331
2328
|
indices_of_enabled_collidable_points
|
2332
2329
|
]
|
2333
2330
|
M = js.model.free_floating_mass_matrix(model, data_tf)
|
2331
|
+
BW_ν_pre_impact = data_tf.generalized_velocity()
|
2334
2332
|
|
2335
2333
|
# Compute the impact velocity.
|
2336
2334
|
# It may be discontinuous in case new contacts are made.
|
2337
|
-
|
2335
|
+
BW_ν_post_impact = (
|
2338
2336
|
jaxsim.rbda.contacts.RigidContacts.compute_impact_velocity(
|
2339
|
-
|
2337
|
+
generalized_velocity=BW_ν_pre_impact,
|
2340
2338
|
inactive_collidable_points=(δ <= 0),
|
2341
2339
|
M=M,
|
2342
2340
|
J_WC=J_WC,
|
@@ -2344,8 +2342,8 @@ def step(
|
|
2344
2342
|
)
|
2345
2343
|
|
2346
2344
|
# Reset the generalized velocity.
|
2347
|
-
data_tf = data_tf.reset_base_velocity(
|
2348
|
-
data_tf = data_tf.reset_joint_velocities(
|
2345
|
+
data_tf = data_tf.reset_base_velocity(BW_ν_post_impact[0:6])
|
2346
|
+
data_tf = data_tf.reset_joint_velocities(BW_ν_post_impact[6:])
|
2349
2347
|
|
2350
2348
|
# Restore the input velocity representation.
|
2351
2349
|
data_tf = data_tf.replace(
|
@@ -173,7 +173,7 @@ class RigidContacts(ContactModel):
|
|
173
173
|
inactive_collidable_points: jtp.ArrayLike,
|
174
174
|
M: jtp.MatrixLike,
|
175
175
|
J_WC: jtp.MatrixLike,
|
176
|
-
|
176
|
+
generalized_velocity: jtp.VectorLike,
|
177
177
|
) -> jtp.Vector:
|
178
178
|
"""
|
179
179
|
Return the new velocity of the system after a potential impact.
|
@@ -182,55 +182,37 @@ class RigidContacts(ContactModel):
|
|
182
182
|
inactive_collidable_points: The activation state of the collidable points.
|
183
183
|
M: The mass matrix of the system (in mixed representation).
|
184
184
|
J_WC: The Jacobian matrix of the collidable points (in mixed representation).
|
185
|
-
|
186
|
-
"""
|
185
|
+
generalized_velocity: The generalized velocity of the system.
|
187
186
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
J_WC: jtp.MatrixLike,
|
193
|
-
data: js.data.JaxSimModelData,
|
194
|
-
):
|
195
|
-
# Compute system velocity after impact maintaining zero linear velocity of active points
|
196
|
-
with data.switch_velocity_representation(VelRepr.Mixed):
|
197
|
-
sl = jnp.s_[:, 0:3, :]
|
198
|
-
Jl_WC = J_WC[sl]
|
199
|
-
# Zero out the jacobian rows of inactive points
|
200
|
-
Jl_WC = jnp.vstack(
|
201
|
-
jnp.where(
|
202
|
-
inactive_collidable_points[:, jnp.newaxis, jnp.newaxis],
|
203
|
-
jnp.zeros_like(Jl_WC),
|
204
|
-
Jl_WC,
|
205
|
-
)
|
206
|
-
)
|
187
|
+
Note:
|
188
|
+
The mass matrix `M`, the Jacobian `J_WC`, and the generalized velocity `generalized_velocity`
|
189
|
+
must be expressed in the same velocity representation.
|
190
|
+
"""
|
207
191
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
192
|
+
# Compute system velocity after impact maintaining zero linear velocity of active points.
|
193
|
+
sl = jnp.s_[:, 0:3, :]
|
194
|
+
Jl_WC = J_WC[sl]
|
195
|
+
|
196
|
+
# Zero out the jacobian rows of inactive points.
|
197
|
+
Jl_WC = jnp.vstack(
|
198
|
+
jnp.where(
|
199
|
+
inactive_collidable_points[:, jnp.newaxis, jnp.newaxis],
|
200
|
+
jnp.zeros_like(Jl_WC),
|
201
|
+
Jl_WC,
|
202
|
+
)
|
203
|
+
)
|
219
204
|
|
220
|
-
|
205
|
+
A = jnp.vstack(
|
206
|
+
[
|
207
|
+
jnp.hstack([M, -Jl_WC.T]),
|
208
|
+
jnp.hstack([Jl_WC, jnp.zeros((Jl_WC.shape[0], Jl_WC.shape[0]))]),
|
209
|
+
]
|
210
|
+
)
|
211
|
+
b = jnp.hstack([M @ generalized_velocity, jnp.zeros(Jl_WC.shape[0])])
|
221
212
|
|
222
|
-
|
223
|
-
BW_ν_pre_impact = data.generalized_velocity()
|
224
|
-
|
225
|
-
BW_ν_post_impact = impact_velocity(
|
226
|
-
data=data,
|
227
|
-
inactive_collidable_points=inactive_collidable_points,
|
228
|
-
nu_pre=BW_ν_pre_impact,
|
229
|
-
M=M,
|
230
|
-
J_WC=J_WC,
|
231
|
-
)
|
213
|
+
BW_ν_post_impact = jnp.linalg.lstsq(A, b)[0]
|
232
214
|
|
233
|
-
return BW_ν_post_impact
|
215
|
+
return BW_ν_post_impact[0 : M.shape[0]]
|
234
216
|
|
235
217
|
@jax.jit
|
236
218
|
def compute_contact_forces(
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.5.1.
|
3
|
+
Version: 0.5.1.dev147
|
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>
|
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.5.1.dev139 → jaxsim-0.5.1.dev147}/examples/jaxsim_as_multibody_dynamics_library.ipynb
RENAMED
File without changes
|
File without changes
|
{jaxsim-0.5.1.dev139 → jaxsim-0.5.1.dev147}/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
|
File without changes
|
File without changes
|