jaxsim 0.2.dev425__tar.gz → 0.2.dev431__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 (115) hide show
  1. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/PKG-INFO +3 -2
  2. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/environment.yml +16 -6
  3. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/setup.cfg +2 -1
  4. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/_version.py +2 -2
  5. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/mujoco/loaders.py +45 -0
  6. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim.egg-info/PKG-INFO +3 -2
  7. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.devcontainer/Dockerfile +0 -0
  8. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.devcontainer/devcontainer.json +0 -0
  9. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.github/CODEOWNERS +0 -0
  10. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.github/workflows/ci_cd.yml +0 -0
  11. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.github/workflows/read_the_docs.yml +0 -0
  12. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.github/workflows/style.yml +0 -0
  13. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.gitignore +0 -0
  14. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.pre-commit-config.yaml +0 -0
  15. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/.readthedocs.yaml +0 -0
  16. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/CONTRIBUTING.md +0 -0
  17. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/LICENSE +0 -0
  18. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/README.md +0 -0
  19. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/Makefile +0 -0
  20. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/conf.py +0 -0
  21. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/guide/install.rst +0 -0
  22. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/index.rst +0 -0
  23. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/make.bat +0 -0
  24. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/api.rst +0 -0
  25. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/index.rst +0 -0
  26. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/integrators.rst +0 -0
  27. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/math.rst +0 -0
  28. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/mujoco.rst +0 -0
  29. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/parsers.rst +0 -0
  30. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/rbda.rst +0 -0
  31. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/typing.rst +0 -0
  32. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/docs/modules/utils.rst +0 -0
  33. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/.gitattributes +0 -0
  34. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/.gitignore +0 -0
  35. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/PD_controller.ipynb +0 -0
  36. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/Parallel_computing.ipynb +0 -0
  37. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/README.md +0 -0
  38. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/assets/cartpole.urdf +0 -0
  39. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/pixi.lock +0 -0
  40. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/examples/pixi.toml +0 -0
  41. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/pyproject.toml +0 -0
  42. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/setup.py +0 -0
  43. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/__init__.py +0 -0
  44. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/__init__.py +0 -0
  45. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/com.py +0 -0
  46. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/common.py +0 -0
  47. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/contact.py +0 -0
  48. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/data.py +0 -0
  49. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/joint.py +0 -0
  50. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  51. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/link.py +0 -0
  52. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/model.py +0 -0
  53. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/ode.py +0 -0
  54. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/ode_data.py +0 -0
  55. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/api/references.py +0 -0
  56. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/integrators/__init__.py +0 -0
  57. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/integrators/common.py +0 -0
  58. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/integrators/fixed_step.py +0 -0
  59. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/integrators/variable_step.py +0 -0
  60. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/logging.py +0 -0
  61. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/__init__.py +0 -0
  62. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/adjoint.py +0 -0
  63. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/cross.py +0 -0
  64. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/inertia.py +0 -0
  65. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/joint_model.py +0 -0
  66. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/quaternion.py +0 -0
  67. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/rotation.py +0 -0
  68. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/skew.py +0 -0
  69. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/math/transform.py +0 -0
  70. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/mujoco/__init__.py +0 -0
  71. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/mujoco/__main__.py +0 -0
  72. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/mujoco/model.py +0 -0
  73. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/mujoco/visualizer.py +0 -0
  74. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/__init__.py +0 -0
  75. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  76. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  77. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  78. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/descriptions/link.py +0 -0
  79. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/descriptions/model.py +0 -0
  80. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  81. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/rod/__init__.py +0 -0
  82. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/rod/parser.py +0 -0
  83. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/parsers/rod/utils.py +0 -0
  84. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/__init__.py +0 -0
  85. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/aba.py +0 -0
  86. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/collidable_points.py +0 -0
  87. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/crba.py +0 -0
  88. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  89. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/jacobian.py +0 -0
  90. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/rnea.py +0 -0
  91. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/soft_contacts.py +0 -0
  92. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/rbda/utils.py +0 -0
  93. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/terrain/__init__.py +0 -0
  94. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/terrain/terrain.py +0 -0
  95. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/typing.py +0 -0
  96. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/utils/__init__.py +0 -0
  97. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/utils/hashless.py +0 -0
  98. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  99. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim/utils/tracing.py +0 -0
  100. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  101. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  102. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim.egg-info/not-zip-safe +0 -0
  103. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim.egg-info/requires.txt +0 -0
  104. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/src/jaxsim.egg-info/top_level.txt +0 -0
  105. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/__init__.py +0 -0
  106. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/conftest.py +0 -0
  107. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_api_com.py +0 -0
  108. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_api_data.py +0 -0
  109. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_api_joint.py +0 -0
  110. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_api_link.py +0 -0
  111. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_api_model.py +0 -0
  112. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_automatic_differentiation.py +0 -0
  113. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_pytree.py +0 -0
  114. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/test_simulations.py +0 -0
  115. {jaxsim-0.2.dev425 → jaxsim-0.2.dev431}/tests/utils_idyntree.py +0 -0
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.dev425
4
- Summary: A physics engine in reduced coordinates implemented with JAX.
3
+ Version: 0.2.dev431
4
+ Summary: A differentiable physics engine and multibody dynamics library for control and robot learning.
5
5
  Home-page: https://github.com/ami-iit/jaxsim
6
6
  Author: Diego Ferigo
7
7
  Author-email: diego.ferigo@iit.it
8
8
  License: BSD
9
9
  Project-URL: Changelog, https://github.com/ami-iit/jaxsim/releases
10
+ Project-URL: Documentation, https://jaxsim.readthedocs.io
10
11
  Project-URL: Source, https://github.com/ami-iit/jaxsim
11
12
  Project-URL: Tracker, https://github.com/ami-iit/jaxsim/issues
12
13
  Keywords: physics,physics engine,jax,rigid body dynamics,featherstone,reinforcement learning,robot,robotics,sdf,urdf
@@ -2,20 +2,25 @@ name: jaxsim
2
2
  channels:
3
3
  - conda-forge
4
4
  dependencies:
5
+ # ===========================
5
6
  # Dependencies from setup.cfg
7
+ # ===========================
6
8
  - python=3.11
7
9
  - coloredlogs
8
10
  - jax >= 0.4.13
9
- - jaxlib
11
+ - jaxlib >= 0.4.13
10
12
  - jaxlie >= 1.3.0
11
13
  - jax-dataclasses >= 1.4.0
12
14
  - pptree
13
15
  - rod >= 0.2.0
14
16
  - typing_extensions # python<3.12
17
+ # ====================================
15
18
  # Optional dependencies from setup.cfg
19
+ # ====================================
16
20
  # [style]
17
21
  - black == 24.*
18
22
  - isort
23
+ - pre-commit
19
24
  # [testing]
20
25
  - idyntree
21
26
  - pytest
@@ -25,16 +30,15 @@ dependencies:
25
30
  - lxml
26
31
  - mediapy
27
32
  - mujoco >= 3.0.0
28
- # System dependencies to run the tests
29
- - gz-sim7
30
- # Other packages
31
- - ipython
33
+ # ==========================
32
34
  # Documentation dependencies
35
+ # ==========================
33
36
  - cachecontrol
34
37
  - enum_tools
35
38
  - filecache
36
39
  - filelock
37
40
  - jinja2
41
+ - pip
38
42
  - sphinx
39
43
  - sphinx-autodoc-typehints
40
44
  - sphinx-copybutton
@@ -45,4 +49,10 @@ dependencies:
45
49
  - sphinx_rtd_theme
46
50
  - sphinx-book-theme
47
51
  - sphinx-toolbox
48
- - pip
52
+ # ========================================
53
+ # Other dependencies for GitHub Codespaces
54
+ # ========================================
55
+ # System dependencies to run the tests
56
+ - gz-sim7
57
+ # Other packages
58
+ - ipython
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = jaxsim
3
- description = A physics engine in reduced coordinates implemented with JAX.
3
+ description = A differentiable physics engine and multibody dynamics library for control and robot learning.
4
4
  long_description = file: README.md
5
5
  long_description_content_type = text/markdown
6
6
  author = Diego Ferigo
@@ -11,6 +11,7 @@ platforms = any
11
11
  url = https://github.com/ami-iit/jaxsim
12
12
  project_urls =
13
13
  Changelog = https://github.com/ami-iit/jaxsim/releases
14
+ Documentation = https://jaxsim.readthedocs.io
14
15
  Source = https://github.com/ami-iit/jaxsim
15
16
  Tracker = https://github.com/ami-iit/jaxsim/issues
16
17
  keywords =
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.2.dev425'
16
- __version_tuple__ = version_tuple = (0, 2, 'dev425')
15
+ __version__ = version = '0.2.dev431'
16
+ __version_tuple__ = version_tuple = (0, 2, 'dev431')
@@ -1,3 +1,4 @@
1
+ import dataclasses
1
2
  import pathlib
2
3
  import tempfile
3
4
  import warnings
@@ -159,6 +160,7 @@ class RodModelToMjcf:
159
160
  considered_joints: list[str] | None = None,
160
161
  plane_normal: tuple[float, float, float] = (0, 0, 1),
161
162
  heightmap: bool | None = None,
163
+ cameras: list[dict[str, str]] | dict[str, str] = None,
162
164
  ) -> tuple[str, dict[str, Any]]:
163
165
  """
164
166
  Converts a ROD model to a Mujoco MJCF string.
@@ -166,6 +168,9 @@ class RodModelToMjcf:
166
168
  Args:
167
169
  rod_model: The ROD model to convert.
168
170
  considered_joints: The list of joint names to consider in the conversion.
171
+ plane_normal: The normal vector of the plane.
172
+ heightmap: Whether to generate a heightmap.
173
+ cameras: The list of cameras to add to the scene.
169
174
 
170
175
  Returns:
171
176
  tuple: A tuple containing the MJCF string and the assets dictionary.
@@ -470,6 +475,14 @@ class RodModelToMjcf:
470
475
  fovy="60",
471
476
  )
472
477
 
478
+ # Add user-defined camera
479
+ cameras = cameras if cameras is not None else {}
480
+ for camera in cameras if isinstance(cameras, list) else [cameras]:
481
+ mj_camera = MujocoCamera.build(**camera)
482
+ _ = ET.SubElement(
483
+ worldbody_element, "camera", dataclasses.asdict(mj_camera)
484
+ )
485
+
473
486
  # ------------------------------------------------
474
487
  # Add a light following the CoM of the first link
475
488
  # ------------------------------------------------
@@ -504,6 +517,7 @@ class UrdfToMjcf:
504
517
  model_name: str | None = None,
505
518
  plane_normal: tuple[float, float, float] = (0, 0, 1),
506
519
  heightmap: bool | None = None,
520
+ cameras: list[dict[str, str]] | dict[str, str] = None,
507
521
  ) -> tuple[str, dict[str, Any]]:
508
522
  """
509
523
  Converts a URDF file to a Mujoco MJCF string.
@@ -512,6 +526,9 @@ class UrdfToMjcf:
512
526
  urdf: The URDF file to convert.
513
527
  considered_joints: The list of joint names to consider in the conversion.
514
528
  model_name: The name of the model to convert.
529
+ plane_normal: The normal vector of the plane.
530
+ heightmap: Whether to generate a heightmap.
531
+ cameras: The list of cameras to add to the scene.
515
532
 
516
533
  Returns:
517
534
  tuple: A tuple containing the MJCF string and the assets dictionary.
@@ -530,6 +547,7 @@ class UrdfToMjcf:
530
547
  considered_joints=considered_joints,
531
548
  plane_normal=plane_normal,
532
549
  heightmap=heightmap,
550
+ cameras=cameras,
533
551
  )
534
552
 
535
553
 
@@ -541,6 +559,7 @@ class SdfToMjcf:
541
559
  model_name: str | None = None,
542
560
  plane_normal: tuple[float, float, float] = (0, 0, 1),
543
561
  heightmap: bool | None = None,
562
+ cameras: list[dict[str, str]] | dict[str, str] = None,
544
563
  ) -> tuple[str, dict[str, Any]]:
545
564
  """
546
565
  Converts a SDF file to a Mujoco MJCF string.
@@ -549,6 +568,9 @@ class SdfToMjcf:
549
568
  sdf: The SDF file to convert.
550
569
  considered_joints: The list of joint names to consider in the conversion.
551
570
  model_name: The name of the model to convert.
571
+ plane_normal: The normal vector of the plane.
572
+ heightmap: Whether to generate a heightmap.
573
+ cameras: The list of cameras to add to the scene.
552
574
 
553
575
  Returns:
554
576
  tuple: A tuple containing the MJCF string and the assets dictionary.
@@ -567,4 +589,27 @@ class SdfToMjcf:
567
589
  considered_joints=considered_joints,
568
590
  plane_normal=plane_normal,
569
591
  heightmap=heightmap,
592
+ cameras=cameras,
570
593
  )
594
+
595
+
596
+ @dataclasses.dataclass
597
+ class MujocoCamera:
598
+ name: str
599
+ mode: str
600
+ pos: str
601
+ xyaxes: str
602
+ fovy: str
603
+
604
+ @classmethod
605
+ def build(cls, **kwargs):
606
+ if not all(isinstance(value, str) for value in kwargs.values()):
607
+ raise ValueError("Values must be strings")
608
+
609
+ if len(kwargs["pos"].split()) != 3:
610
+ raise ValueError("pos must have three values separated by space")
611
+
612
+ if len(kwargs["xyaxes"].split()) != 6:
613
+ raise ValueError("xyaxes must have six values separated by space")
614
+
615
+ return cls(**kwargs)
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.2.dev425
4
- Summary: A physics engine in reduced coordinates implemented with JAX.
3
+ Version: 0.2.dev431
4
+ Summary: A differentiable physics engine and multibody dynamics library for control and robot learning.
5
5
  Home-page: https://github.com/ami-iit/jaxsim
6
6
  Author: Diego Ferigo
7
7
  Author-email: diego.ferigo@iit.it
8
8
  License: BSD
9
9
  Project-URL: Changelog, https://github.com/ami-iit/jaxsim/releases
10
+ Project-URL: Documentation, https://jaxsim.readthedocs.io
10
11
  Project-URL: Source, https://github.com/ami-iit/jaxsim
11
12
  Project-URL: Tracker, https://github.com/ami-iit/jaxsim/issues
12
13
  Keywords: physics,physics engine,jax,rigid body dynamics,featherstone,reinforcement learning,robot,robotics,sdf,urdf
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