jaxsim 0.2.dev394__tar.gz → 0.2.dev423__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.2.dev394 → jaxsim-0.2.dev423}/.github/workflows/ci_cd.yml +25 -8
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/workflows/style.yml +7 -7
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/LICENSE +1 -1
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/PKG-INFO +3 -3
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/conf.py +8 -17
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/guide/install.rst +2 -2
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/index.rst +58 -44
- jaxsim-0.2.dev423/docs/modules/api.rst +68 -0
- jaxsim-0.2.dev423/docs/modules/index.rst +19 -0
- jaxsim-0.2.dev423/docs/modules/integrators.rst +23 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/math.rst +2 -14
- jaxsim-0.2.dev423/docs/modules/mujoco.rst +27 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/parsers.rst +1 -1
- jaxsim-0.2.dev423/docs/modules/rbda.rst +59 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/typing.rst +2 -2
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/utils.rst +1 -4
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/environment.yml +4 -1
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/.gitattributes +0 -1
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/.gitignore +0 -1
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/README.md +3 -3
- jaxsim-0.2.dev423/examples/assets/cartpole.urdf +83 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/pyproject.toml +1 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/setup.cfg +1 -1
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/_version.py +2 -2
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/model.py +2 -2
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/loaders.py +63 -6
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/model.py +38 -19
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/visualizer.py +25 -9
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/PKG-INFO +3 -3
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/SOURCES.txt +5 -3
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/requires.txt +2 -2
- jaxsim-0.2.dev394/docs/modules/high_level.rst +0 -30
- jaxsim-0.2.dev394/docs/modules/physics.rst +0 -40
- jaxsim-0.2.dev394/docs/modules/simulation.rst +0 -34
- jaxsim-0.2.dev394/examples/assets/cartpole.urdf +0 -83
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.devcontainer/Dockerfile +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.devcontainer/devcontainer.json +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/CODEOWNERS +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/workflows/read_the_docs.yml +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.gitignore +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.pre-commit-config.yaml +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.readthedocs.yaml +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/CONTRIBUTING.md +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/README.md +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/Makefile +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/make.bat +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/PD_controller.ipynb +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/Parallel_computing.ipynb +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/pixi.lock +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/pixi.toml +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/setup.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/com.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/common.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/contact.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/data.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/joint.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/link.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/ode.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/ode_data.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/references.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/common.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/fixed_step.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/variable_step.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/logging.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/adjoint.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/cross.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/inertia.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/joint_model.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/quaternion.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/rotation.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/skew.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/transform.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/__main__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/collision.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/joint.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/link.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/model.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/kinematic_graph.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/rod/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/rod/parser.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/rod/utils.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/aba.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/collidable_points.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/crba.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/forward_kinematics.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/jacobian.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/rnea.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/soft_contacts.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/utils.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/terrain/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/terrain/terrain.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/typing.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/hashless.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/tracing.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/dependency_links.txt +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/not-zip-safe +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/top_level.txt +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/__init__.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/conftest.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_com.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_data.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_joint.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_link.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_model.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_automatic_differentiation.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_pytree.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_simulations.py +0 -0
- {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/utils_idyntree.py +0 -0
@@ -92,7 +92,7 @@ jobs:
|
|
92
92
|
- name: Document installed pip packages
|
93
93
|
shell: bash
|
94
94
|
run: pip list --verbose
|
95
|
-
|
95
|
+
|
96
96
|
- name: Import the package
|
97
97
|
run: python -c "import jaxsim"
|
98
98
|
|
@@ -100,15 +100,29 @@ jobs:
|
|
100
100
|
with:
|
101
101
|
fetch-depth: 0
|
102
102
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
- uses: dorny/paths-filter@v3
|
104
|
+
id: changes
|
105
|
+
with:
|
106
|
+
filters: |
|
107
|
+
conf: &conf
|
108
|
+
- 'pyproject.toml'
|
109
|
+
- 'setup.cfg'
|
110
|
+
- 'setup.py'
|
111
|
+
src: &src
|
112
|
+
- 'src/**'
|
113
|
+
tests: &tests
|
114
|
+
- 'tests/**'
|
115
|
+
all:
|
116
|
+
- *conf
|
117
|
+
- *src
|
118
|
+
- *tests
|
108
119
|
|
109
120
|
# https://gazebosim.org/docs/harmonic/install_ubuntu
|
110
121
|
- name: Install Gazebo Sim
|
111
|
-
if:
|
122
|
+
if: |
|
123
|
+
contains(matrix.os, 'ubuntu') &&
|
124
|
+
(github.event_name != 'pull_request' ||
|
125
|
+
steps.changes.outputs.all == 'true')
|
112
126
|
run: |
|
113
127
|
sudo apt-get update
|
114
128
|
sudo apt-get install lsb-release wget gnupg
|
@@ -118,7 +132,10 @@ jobs:
|
|
118
132
|
sudo apt-get install gz-harmonic
|
119
133
|
|
120
134
|
- name: Run the Python tests
|
121
|
-
if:
|
135
|
+
if: |
|
136
|
+
contains(matrix.os, 'ubuntu') &&
|
137
|
+
(github.event_name != 'pull_request' ||
|
138
|
+
steps.changes.outputs.all == 'true')
|
122
139
|
run: pytest
|
123
140
|
env:
|
124
141
|
JAX_PLATFORM_NAME: cpu
|
@@ -10,7 +10,6 @@ on:
|
|
10
10
|
jobs:
|
11
11
|
|
12
12
|
black:
|
13
|
-
|
14
13
|
name: black
|
15
14
|
runs-on: ubuntu-latest
|
16
15
|
|
@@ -22,15 +21,17 @@ jobs:
|
|
22
21
|
- name: '🐍 Initialize Python'
|
23
22
|
uses: actions/setup-python@v5
|
24
23
|
with:
|
25
|
-
python-version: "3
|
24
|
+
python-version: "3.*"
|
26
25
|
|
26
|
+
# Note: the black version needs to be in sync with what
|
27
|
+
# specified in setup.cfg.
|
27
28
|
- name: "📝 Black Code Formatter"
|
28
29
|
uses: psf/black@stable
|
29
30
|
with:
|
30
|
-
options: --check --diff --color
|
31
|
+
options: "--check --diff --color"
|
32
|
+
version: "~= 24.0"
|
31
33
|
|
32
34
|
isort:
|
33
|
-
|
34
35
|
name: isort
|
35
36
|
runs-on: ubuntu-latest
|
36
37
|
|
@@ -42,7 +43,7 @@ jobs:
|
|
42
43
|
- name: '🐍 Initialize Python'
|
43
44
|
uses: actions/setup-python@v5
|
44
45
|
with:
|
45
|
-
python-version: "3
|
46
|
+
python-version: "3.*"
|
46
47
|
|
47
48
|
# Workaround for https://github.com/isort/isort-action/issues/70
|
48
49
|
- run: pip install colorama
|
@@ -50,10 +51,9 @@ jobs:
|
|
50
51
|
- name: "📝 isort"
|
51
52
|
uses: isort/isort-action@master
|
52
53
|
with:
|
53
|
-
configuration: --check --diff --color
|
54
|
+
configuration: "--check --diff --color"
|
54
55
|
|
55
56
|
ruff:
|
56
|
-
|
57
57
|
name: ruff
|
58
58
|
runs-on: ubuntu-latest
|
59
59
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: jaxsim
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.dev423
|
4
4
|
Summary: A physics engine in reduced coordinates implemented with JAX.
|
5
5
|
Home-page: https://github.com/ami-iit/jaxsim
|
6
6
|
Author: Diego Ferigo
|
@@ -39,7 +39,7 @@ Requires-Dist: pptree
|
|
39
39
|
Requires-Dist: rod>=0.2.0
|
40
40
|
Requires-Dist: typing_extensions; python_version < "3.12"
|
41
41
|
Provides-Extra: style
|
42
|
-
Requires-Dist: black[jupyter]; extra == "style"
|
42
|
+
Requires-Dist: black[jupyter]~=24.0; extra == "style"
|
43
43
|
Requires-Dist: isort; extra == "style"
|
44
44
|
Requires-Dist: pre-commit; extra == "style"
|
45
45
|
Provides-Extra: testing
|
@@ -52,7 +52,7 @@ Requires-Dist: lxml; extra == "viz"
|
|
52
52
|
Requires-Dist: mediapy; extra == "viz"
|
53
53
|
Requires-Dist: mujoco>=3.0.0; extra == "viz"
|
54
54
|
Provides-Extra: all
|
55
|
-
Requires-Dist: black[jupyter]; extra == "all"
|
55
|
+
Requires-Dist: black[jupyter]~=24.0; extra == "all"
|
56
56
|
Requires-Dist: isort; extra == "all"
|
57
57
|
Requires-Dist: pre-commit; extra == "all"
|
58
58
|
Requires-Dist: idyntree; extra == "all"
|
@@ -4,23 +4,13 @@ import sys
|
|
4
4
|
|
5
5
|
from pkg_resources import get_distribution
|
6
6
|
|
7
|
+
if os.environ.get("READTHEDOCS"):
|
8
|
+
checkout_name = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
|
9
|
+
os.environ["CONDA_PREFIX"] = os.path.realpath(
|
10
|
+
os.path.join("..", "..", "conda", checkout_name)
|
11
|
+
)
|
7
12
|
|
8
|
-
|
9
|
-
with open(path, "r+") as f:
|
10
|
-
contents = f.read()
|
11
|
-
if not contents.startswith("from __future__ import annotations"):
|
12
|
-
f.seek(0, 0)
|
13
|
-
f.write("from __future__ import annotations " + contents)
|
14
|
-
|
15
|
-
|
16
|
-
def _recursive_add_annotations_import():
|
17
|
-
for path, _, files in os.walk("../jaxsim/"):
|
18
|
-
for file in [f for f in files if f.endswith(".py")]:
|
19
|
-
_add_annotations_import(os.path.join(path, file))
|
20
|
-
|
21
|
-
|
22
|
-
if "READTHEDOCS" in os.environ:
|
23
|
-
_recursive_add_annotations_import()
|
13
|
+
import jaxsim
|
24
14
|
|
25
15
|
# -- Version information
|
26
16
|
|
@@ -58,13 +48,14 @@ extensions = [
|
|
58
48
|
"sphinx_autodoc_typehints",
|
59
49
|
"sphinx_multiversion",
|
60
50
|
"enum_tools.autoenum",
|
51
|
+
"sphinx_design",
|
61
52
|
]
|
62
53
|
|
63
54
|
# -- Options for intersphinx extension
|
64
55
|
|
65
56
|
language = "en"
|
66
57
|
|
67
|
-
html_theme = "
|
58
|
+
html_theme = "sphinx_book_theme"
|
68
59
|
|
69
60
|
templates_path = ["_templates"]
|
70
61
|
|
@@ -6,12 +6,12 @@ Installation
|
|
6
6
|
Prerequisites
|
7
7
|
-------------
|
8
8
|
|
9
|
-
JAXsim requires Python 3.11 or later.
|
9
|
+
JAXsim requires Python 3.11 or later.
|
10
10
|
|
11
11
|
Basic Installation
|
12
12
|
------------------
|
13
13
|
|
14
|
-
You can install the project with using `conda`_:
|
14
|
+
You can install the project with using `conda`_:
|
15
15
|
|
16
16
|
.. code-block:: bash
|
17
17
|
|
@@ -3,30 +3,68 @@ JAXsim
|
|
3
3
|
|
4
4
|
A scalable physics engine and multibody dynamics library implemented with JAX. With JIT batteries 🔋
|
5
5
|
|
6
|
-
.. warning::
|
7
|
-
This project is still experimental, APIs could change without notice.
|
8
|
-
|
9
6
|
.. note::
|
10
7
|
This simulator currently focuses on locomotion applications. Only contacts with ground are supported.
|
11
8
|
|
12
9
|
Features
|
13
10
|
--------
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
-
|
22
|
-
|
23
|
-
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
-
|
12
|
+
.. grid::
|
13
|
+
|
14
|
+
.. grid-item::
|
15
|
+
:columns: 12 12 12 6
|
16
|
+
|
17
|
+
.. card:: Performance
|
18
|
+
:class-card: sd-border-0
|
19
|
+
:shadow: none
|
20
|
+
:class-title: sd-fs-5
|
21
|
+
|
22
|
+
.. div:: sd-font-normal
|
23
|
+
|
24
|
+
Physics engine in reduced coordinates implemented with `JAX <https://github.com/google/jax/>`_.
|
25
|
+
Compatibility with JIT compilation for increased performance and transparent support to execute logic on CPUs, GPUs, and TPUs.
|
26
|
+
Parallel multi-body simulations on hardware accelerators for significantly increased throughput
|
27
|
+
|
28
|
+
.. grid-item::
|
29
|
+
:columns: 12 12 12 6
|
30
|
+
|
31
|
+
.. card:: Model Parsing
|
32
|
+
:class-card: sd-border-0
|
33
|
+
:shadow: none
|
34
|
+
:class-title: sd-fs-5
|
35
|
+
|
36
|
+
.. div:: sd-font-normal
|
37
|
+
|
38
|
+
Support for SDF models (and, upon conversion, URDF models). Revolute, prismatic, and fixed joints supported.
|
39
|
+
|
40
|
+
.. grid-item::
|
41
|
+
:columns: 12 12 12 6
|
42
|
+
|
43
|
+
.. card:: Automatic Differentiation
|
44
|
+
:class-card: sd-border-0
|
45
|
+
:shadow: none
|
46
|
+
:class-title: sd-fs-5
|
47
|
+
|
48
|
+
.. div:: sd-font-normal
|
49
|
+
|
50
|
+
Support for automatic differentiation of rigid body dynamics algorithms (RBDAs) for model-based robotics research.
|
51
|
+
Soft contacts model supporting full friction cone and sticking / slipping transition.
|
52
|
+
|
53
|
+
.. grid-item::
|
54
|
+
:columns: 12 12 12 6
|
55
|
+
|
56
|
+
.. card:: Complex Dynamics
|
57
|
+
:class-card: sd-border-0
|
58
|
+
:shadow: none
|
59
|
+
:class-title: sd-fs-5
|
60
|
+
|
61
|
+
.. div:: sd-font-normal
|
62
|
+
|
63
|
+
JAXsim provides a variety of integrators for the simulation of multibody dynamics, including RK4, Heun, Euler, and more.
|
64
|
+
Support of `multiple velocities representations <https://research.tue.nl/en/publications/multibody-dynamics-notation-version-2>`_.
|
65
|
+
|
66
|
+
|
67
|
+
----
|
30
68
|
|
31
69
|
.. toctree::
|
32
70
|
:hidden:
|
@@ -37,17 +75,10 @@ Features
|
|
37
75
|
|
38
76
|
.. toctree::
|
39
77
|
:hidden:
|
40
|
-
:maxdepth:
|
78
|
+
:maxdepth: 1
|
41
79
|
:caption: JAXsim API
|
42
80
|
|
43
|
-
modules/
|
44
|
-
modules/math
|
45
|
-
modules/parsers
|
46
|
-
modules/physics
|
47
|
-
modules/simulation
|
48
|
-
modules/typing
|
49
|
-
modules/utils
|
50
|
-
|
81
|
+
modules/index
|
51
82
|
|
52
83
|
Examples
|
53
84
|
--------
|
@@ -73,23 +104,6 @@ Here below we summarize the differences between the projects:
|
|
73
104
|
- Contrarily to brax, JAXsim only supports collision detection between bodies and a compliant ground surface.
|
74
105
|
- The RBDAs of JAXsim support automatic differentiation, but this functionality has not been thoroughly tested.
|
75
106
|
|
76
|
-
Contributing
|
77
|
-
------------
|
78
|
-
|
79
|
-
Pull requests are welcome.
|
80
|
-
For major changes, please open an issue first to discuss what you would like to change.
|
81
|
-
|
82
|
-
Citing
|
83
|
-
------
|
84
|
-
|
85
|
-
.. code-block:: bibtex
|
86
|
-
|
87
|
-
@software{ferigo_jaxsim_2022,
|
88
|
-
author = {Diego Ferigo and Silvio Traversaro and Daniele Pucci},
|
89
|
-
title = {{JAXsim}: A Physics Engine in Reduced Coordinates and Multibody Dynamics Library for Control and Robot Learning},
|
90
|
-
url = {http://github.com/ami-iit/jaxsim},
|
91
|
-
year = {2022},
|
92
|
-
}
|
93
107
|
|
94
108
|
People
|
95
109
|
------
|
@@ -0,0 +1,68 @@
|
|
1
|
+
Functional API
|
2
|
+
==============
|
3
|
+
|
4
|
+
.. currentmodule:: jaxsim.api
|
5
|
+
|
6
|
+
Model
|
7
|
+
~~~~~
|
8
|
+
|
9
|
+
.. automodule:: jaxsim.api.model
|
10
|
+
:members:
|
11
|
+
|
12
|
+
Data
|
13
|
+
~~~~
|
14
|
+
|
15
|
+
.. automodule:: jaxsim.api.data
|
16
|
+
:members:
|
17
|
+
|
18
|
+
Contact
|
19
|
+
~~~~~~~
|
20
|
+
|
21
|
+
.. automodule:: jaxsim.api.contact
|
22
|
+
:members:
|
23
|
+
|
24
|
+
KinDynParameters
|
25
|
+
~~~~~~~~~~~~~~~~
|
26
|
+
|
27
|
+
.. automodule:: jaxsim.api.kin_dyn_parameters
|
28
|
+
:members:
|
29
|
+
|
30
|
+
Joint
|
31
|
+
~~~~~
|
32
|
+
|
33
|
+
.. automodule:: jaxsim.api.joint
|
34
|
+
:members:
|
35
|
+
|
36
|
+
Link
|
37
|
+
~~~~~
|
38
|
+
.. automodule:: jaxsim.api.link
|
39
|
+
:members:
|
40
|
+
|
41
|
+
CoM
|
42
|
+
~~~
|
43
|
+
.. automodule:: jaxsim.api.com
|
44
|
+
:members:
|
45
|
+
|
46
|
+
ODE Data
|
47
|
+
~~~~~~~~
|
48
|
+
|
49
|
+
.. automodule:: jaxsim.api.ode_data
|
50
|
+
:members:
|
51
|
+
|
52
|
+
.. automodule:: jaxsim.api.ode
|
53
|
+
:members:
|
54
|
+
|
55
|
+
References
|
56
|
+
~~~~~~~~~~
|
57
|
+
|
58
|
+
.. automodule:: jaxsim.api.references
|
59
|
+
:members:
|
60
|
+
|
61
|
+
Common
|
62
|
+
~~~~~~
|
63
|
+
|
64
|
+
.. autoflag:: jaxsim.api.common.VelRepr
|
65
|
+
:members:
|
66
|
+
|
67
|
+
.. autoclass:: jaxsim.api.common.ModelDataWithVelocityRepresentation
|
68
|
+
:members:
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Integrators
|
2
|
+
===========
|
3
|
+
|
4
|
+
.. currentmodule:: jaxsim.integrators
|
5
|
+
|
6
|
+
|
7
|
+
Common
|
8
|
+
~~~~~~
|
9
|
+
|
10
|
+
.. automodule:: jaxsim.integrators.common
|
11
|
+
:members:
|
12
|
+
|
13
|
+
Fixed Step
|
14
|
+
~~~~~~~~~~
|
15
|
+
|
16
|
+
.. automodule:: jaxsim.integrators.fixed_step
|
17
|
+
:members:
|
18
|
+
|
19
|
+
Variable Step
|
20
|
+
~~~~~~~~~~~~~
|
21
|
+
|
22
|
+
.. automodule:: jaxsim.integrators.variable_step
|
23
|
+
:members:
|
@@ -1,13 +1,9 @@
|
|
1
|
-
Math
|
1
|
+
Math
|
2
2
|
====
|
3
3
|
|
4
4
|
.. currentmodule:: jaxsim.math
|
5
|
-
|
6
|
-
.. automodule:: jaxsim.math.adjoint
|
7
|
-
:members:
|
8
|
-
:undoc-members:
|
9
5
|
|
10
|
-
.. automodule:: jaxsim.math.
|
6
|
+
.. automodule:: jaxsim.math.adjoint
|
11
7
|
:members:
|
12
8
|
:undoc-members:
|
13
9
|
|
@@ -19,14 +15,6 @@ Math
|
|
19
15
|
:members:
|
20
16
|
:undoc-members:
|
21
17
|
|
22
|
-
.. automodule:: jaxsim.math.joint
|
23
|
-
:members:
|
24
|
-
:undoc-members:
|
25
|
-
|
26
|
-
.. automodule:: jaxsim.math.plucker
|
27
|
-
:members:
|
28
|
-
:undoc-members:
|
29
|
-
|
30
18
|
.. automodule:: jaxsim.math.quaternion
|
31
19
|
:members:
|
32
20
|
:undoc-members:
|
@@ -0,0 +1,27 @@
|
|
1
|
+
MuJoCo Visualizer
|
2
|
+
==================
|
3
|
+
|
4
|
+
JAXsim provides a simple interface with MuJoCo's visualizer. The visualizer is
|
5
|
+
a separate process that communicates with the main simulation process. This
|
6
|
+
allows for the simulation to run at full speed while the visualizer can run at
|
7
|
+
a different frame rate.
|
8
|
+
|
9
|
+
.. currentmodule:: jaxsim.mujoco
|
10
|
+
|
11
|
+
Loaders
|
12
|
+
~~~~~~~
|
13
|
+
|
14
|
+
.. automodule:: jaxsim.mujoco.loaders
|
15
|
+
:members:
|
16
|
+
|
17
|
+
Model
|
18
|
+
~~~~~
|
19
|
+
|
20
|
+
.. automodule:: jaxsim.mujoco.model
|
21
|
+
:members:
|
22
|
+
|
23
|
+
Visualizer
|
24
|
+
~~~~~~~~~~
|
25
|
+
|
26
|
+
.. automodule:: jaxsim.mujoco.visualizer
|
27
|
+
:members:
|
@@ -0,0 +1,59 @@
|
|
1
|
+
Rigid Body Dynamics Algorithms
|
2
|
+
==============================
|
3
|
+
|
4
|
+
This module provides a set of algorithms for rigid body dynamics.
|
5
|
+
|
6
|
+
.. currentmodule:: jaxsim.rbda
|
7
|
+
|
8
|
+
.. autosummary::
|
9
|
+
:toctree: _autosummary
|
10
|
+
|
11
|
+
aba
|
12
|
+
collidable_points
|
13
|
+
crba
|
14
|
+
forward_kinematics
|
15
|
+
jacobian
|
16
|
+
soft_contacts
|
17
|
+
utils
|
18
|
+
|
19
|
+
Articulated Body Algorithm
|
20
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
21
|
+
|
22
|
+
.. automodule:: jaxsim.rbda.aba
|
23
|
+
:members:
|
24
|
+
|
25
|
+
Collision Detection
|
26
|
+
~~~~~~~~~~~~~~~~~~~
|
27
|
+
|
28
|
+
.. automodule:: jaxsim.rbda.collidable_points
|
29
|
+
:members:
|
30
|
+
|
31
|
+
Composite Rigid Body Algorithm
|
32
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
33
|
+
|
34
|
+
.. automodule:: jaxsim.rbda.crba
|
35
|
+
:members:
|
36
|
+
|
37
|
+
Forward Kinetmatics
|
38
|
+
~~~~~~~~~~~~~~~~~~~
|
39
|
+
|
40
|
+
.. automodule:: jaxsim.rbda.forward_kinematics
|
41
|
+
:members:
|
42
|
+
|
43
|
+
Jacobians
|
44
|
+
~~~~~~~~~
|
45
|
+
|
46
|
+
.. automodule:: jaxsim.rbda.jacobian
|
47
|
+
:members:
|
48
|
+
|
49
|
+
Soft Contacts
|
50
|
+
~~~~~~~~~~~~~
|
51
|
+
|
52
|
+
.. automodule:: jaxsim.rbda.soft_contacts
|
53
|
+
:members:
|
54
|
+
|
55
|
+
Utilities
|
56
|
+
~~~~~~~~~
|
57
|
+
|
58
|
+
.. automodule:: jaxsim.rbda.utils
|
59
|
+
:members:
|
@@ -14,7 +14,7 @@ dependencies:
|
|
14
14
|
- typing_extensions # python<3.12
|
15
15
|
# Optional dependencies from setup.cfg
|
16
16
|
# [style]
|
17
|
-
- black
|
17
|
+
- black == 24.*
|
18
18
|
- isort
|
19
19
|
# [testing]
|
20
20
|
- idyntree
|
@@ -38,8 +38,11 @@ dependencies:
|
|
38
38
|
- sphinx
|
39
39
|
- sphinx-autodoc-typehints
|
40
40
|
- sphinx-copybutton
|
41
|
+
- sphinx-design
|
41
42
|
- sphinx_fontawesome
|
42
43
|
- sphinx-jinja2-compat
|
43
44
|
- sphinx-multiversion
|
44
45
|
- sphinx_rtd_theme
|
46
|
+
- sphinx-book-theme
|
45
47
|
- sphinx-toolbox
|
48
|
+
- pip
|
@@ -21,12 +21,12 @@ The simplest way to run the examples is by accessing the provided Google Colab n
|
|
21
21
|
|
22
22
|
For local execution, follow these steps:
|
23
23
|
|
24
|
-
1. **Install `pixi`:**
|
24
|
+
1. **Install `pixi`:**
|
25
25
|
|
26
26
|
As per the [official documentation](https://pixi.sh/#installation):
|
27
27
|
|
28
28
|
```bash
|
29
|
-
curl -fsSL https://pixi.sh/install.sh | bash
|
29
|
+
curl -fsSL https://pixi.sh/install.sh | bash
|
30
30
|
```
|
31
31
|
|
32
32
|
2. **Run the Example Notebook:**
|
@@ -37,4 +37,4 @@ Use `pixi run <notebook_name>` to execute the example notebook locally, e.g.:
|
|
37
37
|
pixi run PD_controller
|
38
38
|
```
|
39
39
|
|
40
|
-
This command will automatically handle the installation of necessary dependencies and execute the examples within a self-contained environment
|
40
|
+
This command will automatically handle the installation of necessary dependencies and execute the examples within a self-contained environment
|