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.
Files changed (119) hide show
  1. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/workflows/ci_cd.yml +25 -8
  2. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/workflows/style.yml +7 -7
  3. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/LICENSE +1 -1
  4. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/PKG-INFO +3 -3
  5. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/conf.py +8 -17
  6. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/guide/install.rst +2 -2
  7. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/index.rst +58 -44
  8. jaxsim-0.2.dev423/docs/modules/api.rst +68 -0
  9. jaxsim-0.2.dev423/docs/modules/index.rst +19 -0
  10. jaxsim-0.2.dev423/docs/modules/integrators.rst +23 -0
  11. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/math.rst +2 -14
  12. jaxsim-0.2.dev423/docs/modules/mujoco.rst +27 -0
  13. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/parsers.rst +1 -1
  14. jaxsim-0.2.dev423/docs/modules/rbda.rst +59 -0
  15. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/typing.rst +2 -2
  16. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/modules/utils.rst +1 -4
  17. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/environment.yml +4 -1
  18. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/.gitattributes +0 -1
  19. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/.gitignore +0 -1
  20. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/README.md +3 -3
  21. jaxsim-0.2.dev423/examples/assets/cartpole.urdf +83 -0
  22. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/pyproject.toml +1 -0
  23. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/setup.cfg +1 -1
  24. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/_version.py +2 -2
  25. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/model.py +2 -2
  26. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/loaders.py +63 -6
  27. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/model.py +38 -19
  28. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/visualizer.py +25 -9
  29. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/PKG-INFO +3 -3
  30. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/SOURCES.txt +5 -3
  31. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/requires.txt +2 -2
  32. jaxsim-0.2.dev394/docs/modules/high_level.rst +0 -30
  33. jaxsim-0.2.dev394/docs/modules/physics.rst +0 -40
  34. jaxsim-0.2.dev394/docs/modules/simulation.rst +0 -34
  35. jaxsim-0.2.dev394/examples/assets/cartpole.urdf +0 -83
  36. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.devcontainer/Dockerfile +0 -0
  37. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.devcontainer/devcontainer.json +0 -0
  38. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/CODEOWNERS +0 -0
  39. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.github/workflows/read_the_docs.yml +0 -0
  40. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.gitignore +0 -0
  41. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.pre-commit-config.yaml +0 -0
  42. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/.readthedocs.yaml +0 -0
  43. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/CONTRIBUTING.md +0 -0
  44. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/README.md +0 -0
  45. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/Makefile +0 -0
  46. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/docs/make.bat +0 -0
  47. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/PD_controller.ipynb +0 -0
  48. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/Parallel_computing.ipynb +0 -0
  49. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/pixi.lock +0 -0
  50. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/examples/pixi.toml +0 -0
  51. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/setup.py +0 -0
  52. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/__init__.py +0 -0
  53. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/__init__.py +0 -0
  54. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/com.py +0 -0
  55. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/common.py +0 -0
  56. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/contact.py +0 -0
  57. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/data.py +0 -0
  58. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/joint.py +0 -0
  59. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  60. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/link.py +0 -0
  61. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/ode.py +0 -0
  62. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/ode_data.py +0 -0
  63. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/api/references.py +0 -0
  64. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/__init__.py +0 -0
  65. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/common.py +0 -0
  66. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/fixed_step.py +0 -0
  67. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/integrators/variable_step.py +0 -0
  68. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/logging.py +0 -0
  69. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/__init__.py +0 -0
  70. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/adjoint.py +0 -0
  71. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/cross.py +0 -0
  72. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/inertia.py +0 -0
  73. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/joint_model.py +0 -0
  74. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/quaternion.py +0 -0
  75. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/rotation.py +0 -0
  76. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/skew.py +0 -0
  77. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/math/transform.py +0 -0
  78. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/__init__.py +0 -0
  79. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/mujoco/__main__.py +0 -0
  80. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/__init__.py +0 -0
  81. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  82. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  83. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  84. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/link.py +0 -0
  85. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/descriptions/model.py +0 -0
  86. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  87. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/rod/__init__.py +0 -0
  88. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/rod/parser.py +0 -0
  89. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/parsers/rod/utils.py +0 -0
  90. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/__init__.py +0 -0
  91. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/aba.py +0 -0
  92. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/collidable_points.py +0 -0
  93. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/crba.py +0 -0
  94. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  95. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/jacobian.py +0 -0
  96. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/rnea.py +0 -0
  97. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/soft_contacts.py +0 -0
  98. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/rbda/utils.py +0 -0
  99. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/terrain/__init__.py +0 -0
  100. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/terrain/terrain.py +0 -0
  101. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/typing.py +0 -0
  102. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/__init__.py +0 -0
  103. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/hashless.py +0 -0
  104. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  105. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim/utils/tracing.py +0 -0
  106. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  107. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/not-zip-safe +0 -0
  108. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/src/jaxsim.egg-info/top_level.txt +0 -0
  109. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/__init__.py +0 -0
  110. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/conftest.py +0 -0
  111. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_com.py +0 -0
  112. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_data.py +0 -0
  113. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_joint.py +0 -0
  114. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_link.py +0 -0
  115. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_api_model.py +0 -0
  116. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_automatic_differentiation.py +0 -0
  117. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_pytree.py +0 -0
  118. {jaxsim-0.2.dev394 → jaxsim-0.2.dev423}/tests/test_simulations.py +0 -0
  119. {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
- # - name: Install Gazebo Classic
104
- # if: contains(matrix.os, 'ubuntu')
105
- # run: |
106
- # sudo apt-get update
107
- # sudo apt-get install gazebo
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: contains(matrix.os, 'ubuntu')
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: contains(matrix.os, 'ubuntu')
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.8"
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.8"
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
  BSD 3-Clause License
2
2
 
3
- Copyright (c) 2022, Artificial and Mechanical Intelligence
3
+ Copyright (c) 2022, Artificial and Mechanical Intelligence
4
4
  All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.dev394
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
- def _add_annotations_import(path):
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 = "sphinx_rtd_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
- - Physics engine in reduced coordinates implemented with `JAX <https://github.com/google/jax/>`_ in Python.
16
- - JIT compilation of Python code for increased performance.
17
- - Transparent support to execute logic on CPUs, GPUs, and TPUs.
18
- - Parallel multi-body simulations on hardware accelerators for significantly increased throughput.
19
- - Support for SDF models (and, upon conversion, URDF models).
20
- - Collision detection between bodies and uneven ground surface.
21
- - Soft contacts model supporting full friction cone and sticking / slipping transition.
22
- - Complete support for inertial properties of rigid bodies.
23
- - Revolute, prismatic, and fixed joints support.
24
- - Integrators: forward Euler, semi-implicit Euler, Runge-Kutta 4.
25
- - High-level classes for object-oriented programming.
26
- - High-level classes to compute multi-body dynamics quantities from simulation state.
27
- - High-level classes wrapping the low-level functional RBDAs with support of `multiple velocities representations <https://research.tue.nl/en/publications/multibody-dynamics-notation-version-2>`_.
28
- - Default validation of JAX pytrees to prevent JIT re-compilations.
29
- - Preliminary support for automatic differentiation of RBDAs.
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: 2
78
+ :maxdepth: 1
41
79
  :caption: JAXsim API
42
80
 
43
- modules/high_level
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,19 @@
1
+ Public API
2
+ ==========
3
+
4
+ .. _modules:
5
+
6
+ Modules
7
+ -------
8
+
9
+ .. toctree::
10
+ :maxdepth: 1
11
+
12
+ api
13
+ integrators
14
+ math
15
+ mujoco
16
+ parsers
17
+ rbda
18
+ typing
19
+ utils
@@ -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.conv
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:
@@ -1,4 +1,4 @@
1
- Parsers
1
+ Parsers
2
2
  =======
3
3
 
4
4
  .. automodule:: jaxsim.parsers.descriptions.collision
@@ -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:
@@ -1,4 +1,4 @@
1
- Typing
1
+ Typing
2
2
  ======
3
3
 
4
4
  .. currentmodule:: jaxsim.typing
@@ -14,4 +14,4 @@ Typing
14
14
  IntJax
15
15
  ArrayJax
16
16
  VectorJax
17
- MatrixJax
17
+ MatrixJax
@@ -1,7 +1,4 @@
1
- .. _utils:
2
-
3
-
4
- Utils
1
+ Utils
5
2
  =====
6
3
 
7
4
  .. automodule:: jaxsim.utils
@@ -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
@@ -1,3 +1,2 @@
1
1
  # GitHub syntax highlighting
2
2
  pixi.lock linguist-language=YAML
3
-
@@ -1,3 +1,2 @@
1
1
  # pixi environments
2
2
  .pixi
3
-
@@ -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