jaxsim 0.4.3.dev100__tar.gz → 0.4.3.dev105__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 (124) hide show
  1. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/PKG-INFO +2 -2
  2. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/environment.yml +1 -1
  3. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/examples/PD_controller.ipynb +1 -1
  4. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/pyproject.toml +1 -1
  5. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/_version.py +2 -2
  6. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/model.py +3 -3
  7. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/mujoco/loaders.py +1 -1
  8. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/rod/parser.py +30 -22
  9. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim.egg-info/PKG-INFO +2 -2
  10. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim.egg-info/requires.txt +1 -1
  11. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/conftest.py +0 -15
  12. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_contact.py +1 -1
  13. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_pytree.py +2 -4
  14. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.devcontainer/Dockerfile +0 -0
  15. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.devcontainer/devcontainer.json +0 -0
  16. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.gitattributes +0 -0
  17. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.github/CODEOWNERS +0 -0
  18. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.github/workflows/ci_cd.yml +0 -0
  19. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.github/workflows/read_the_docs.yml +0 -0
  20. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.github/workflows/update_pixi_lockfile.yml +0 -0
  21. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.gitignore +0 -0
  22. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.pre-commit-config.yaml +0 -0
  23. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/.readthedocs.yaml +0 -0
  24. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/CONTRIBUTING.md +0 -0
  25. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/LICENSE +0 -0
  26. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/README.md +0 -0
  27. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/Makefile +0 -0
  28. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/conf.py +0 -0
  29. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/examples.rst +0 -0
  30. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/guide/install.rst +0 -0
  31. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/index.rst +0 -0
  32. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/make.bat +0 -0
  33. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/api.rst +0 -0
  34. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/integrators.rst +0 -0
  35. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/math.rst +0 -0
  36. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/mujoco.rst +0 -0
  37. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/parsers.rst +0 -0
  38. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/rbda.rst +0 -0
  39. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/typing.rst +0 -0
  40. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/docs/modules/utils.rst +0 -0
  41. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/examples/.gitattributes +0 -0
  42. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/examples/.gitignore +0 -0
  43. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/examples/Parallel_computing.ipynb +0 -0
  44. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/examples/README.md +0 -0
  45. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/examples/assets/cartpole.urdf +0 -0
  46. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/pixi.lock +0 -0
  47. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/setup.cfg +0 -0
  48. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/setup.py +0 -0
  49. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/__init__.py +0 -0
  50. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/__init__.py +0 -0
  51. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/com.py +0 -0
  52. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/common.py +0 -0
  53. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/contact.py +0 -0
  54. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/data.py +0 -0
  55. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/frame.py +0 -0
  56. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/joint.py +0 -0
  57. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  58. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/link.py +0 -0
  59. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/ode.py +0 -0
  60. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/ode_data.py +0 -0
  61. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/api/references.py +0 -0
  62. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/exceptions.py +0 -0
  63. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/integrators/__init__.py +0 -0
  64. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/integrators/common.py +0 -0
  65. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/integrators/fixed_step.py +0 -0
  66. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/integrators/variable_step.py +0 -0
  67. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/logging.py +0 -0
  68. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/__init__.py +0 -0
  69. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/adjoint.py +0 -0
  70. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/cross.py +0 -0
  71. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/inertia.py +0 -0
  72. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/joint_model.py +0 -0
  73. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/quaternion.py +0 -0
  74. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/rotation.py +0 -0
  75. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/skew.py +0 -0
  76. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/math/transform.py +0 -0
  77. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/mujoco/__init__.py +0 -0
  78. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/mujoco/__main__.py +0 -0
  79. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/mujoco/model.py +0 -0
  80. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/mujoco/visualizer.py +0 -0
  81. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/__init__.py +0 -0
  82. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  83. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  84. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  85. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/descriptions/link.py +0 -0
  86. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/descriptions/model.py +0 -0
  87. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  88. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/rod/__init__.py +0 -0
  89. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/parsers/rod/utils.py +0 -0
  90. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/__init__.py +0 -0
  91. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/aba.py +0 -0
  92. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/collidable_points.py +0 -0
  93. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  94. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/contacts/common.py +0 -0
  95. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  96. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  97. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/contacts/soft.py +0 -0
  98. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/crba.py +0 -0
  99. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  100. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/jacobian.py +0 -0
  101. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/rnea.py +0 -0
  102. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/rbda/utils.py +0 -0
  103. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/terrain/__init__.py +0 -0
  104. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/terrain/terrain.py +0 -0
  105. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/typing.py +0 -0
  106. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/utils/__init__.py +0 -0
  107. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  108. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/utils/tracing.py +0 -0
  109. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim/utils/wrappers.py +0 -0
  110. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim.egg-info/SOURCES.txt +0 -0
  111. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  112. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/src/jaxsim.egg-info/top_level.txt +0 -0
  113. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/__init__.py +0 -0
  114. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_com.py +0 -0
  115. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_data.py +0 -0
  116. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_frame.py +0 -0
  117. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_joint.py +0 -0
  118. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_link.py +0 -0
  119. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_api_model.py +0 -0
  120. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_automatic_differentiation.py +0 -0
  121. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_contact.py +0 -0
  122. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_exceptions.py +0 -0
  123. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/test_simulations.py +0 -0
  124. {jaxsim-0.4.3.dev100 → jaxsim-0.4.3.dev105}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.3.dev100
3
+ Version: 0.4.3.dev105
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>
6
6
  Maintainer-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippo.ferretti@iit.it>
@@ -67,7 +67,7 @@ Requires-Dist: jaxlie>=1.3.0
67
67
  Requires-Dist: jax_dataclasses>=1.4.0
68
68
  Requires-Dist: pptree
69
69
  Requires-Dist: qpax
70
- Requires-Dist: rod>=0.3.0
70
+ Requires-Dist: rod>=0.3.3
71
71
  Requires-Dist: typing_extensions; python_version < "3.12"
72
72
  Provides-Extra: style
73
73
  Requires-Dist: black[jupyter]~=24.0; extra == "style"
@@ -14,7 +14,7 @@ dependencies:
14
14
  - jax-dataclasses >= 1.4.0
15
15
  - pptree
16
16
  - qpax
17
- - rod >= 0.3.0
17
+ - rod >= 0.3.3
18
18
  - typing_extensions # python<3.12
19
19
  # ====================================
20
20
  # Optional dependencies from setup.cfg
@@ -100,7 +100,7 @@
100
100
  "num_steps = int(integration_time / dt)\n",
101
101
  "\n",
102
102
  "model = js.model.JaxSimModel.build_from_model_description(\n",
103
- " model_description=model_urdf_string, is_urdf=True\n",
103
+ " model_description=model_urdf_string\n",
104
104
  ")\n",
105
105
  "data = js.data.JaxSimModelData.build(model=model)\n",
106
106
  "integrator = integrators.fixed_step.RungeKutta4SO3.build(\n",
@@ -51,7 +51,7 @@ dependencies = [
51
51
  "jax_dataclasses >= 1.4.0",
52
52
  "pptree",
53
53
  "qpax",
54
- "rod >= 0.3.0",
54
+ "rod >= 0.3.3",
55
55
  "typing_extensions ; python_version < '3.12'",
56
56
  ]
57
57
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.4.3.dev100'
16
- __version_tuple__ = version_tuple = (0, 4, 3, 'dev100')
15
+ __version__ = version = '0.4.3.dev105'
16
+ __version_tuple__ = version_tuple = (0, 4, 3, 'dev105')
@@ -106,8 +106,8 @@ class JaxSimModel(JaxsimDataclass):
106
106
  terrain:
107
107
  The optional terrain to consider.
108
108
  is_urdf:
109
- Whether the model description is a URDF or an SDF. This is
110
- automatically inferred if the model description is a path to a file.
109
+ The optional flag to force the model description to be parsed as a
110
+ URDF or a SDF. This is otherwise automatically inferred.
111
111
  considered_joints:
112
112
  The list of joints to consider. If None, all joints are considered.
113
113
 
@@ -120,7 +120,7 @@ class JaxSimModel(JaxsimDataclass):
120
120
  # Parse the input resource (either a path to file or a string with the URDF/SDF)
121
121
  # and build the -intermediate- model description.
122
122
  intermediate_description = jaxsim.parsers.rod.build_model_description(
123
- model_description=model_description, is_urdf=is_urdf
123
+ model_description=model_description
124
124
  )
125
125
 
126
126
  # Lump links together if not all joints are considered.
@@ -25,7 +25,7 @@ def load_rod_model(
25
25
 
26
26
  Args:
27
27
  model_description: The URDF/SDF file or ROD model to load.
28
- is_urdf: Whether the model description is a URDF file.
28
+ is_urdf: Whether to force parsing the model description as a URDF file.
29
29
  model_name: The name of the model to load from the resource.
30
30
 
31
31
  Returns:
@@ -33,7 +33,7 @@ class SDFData(NamedTuple):
33
33
 
34
34
 
35
35
  def extract_model_data(
36
- model_description: pathlib.Path | str | rod.Model,
36
+ model_description: pathlib.Path | str | rod.Model | rod.Sdf,
37
37
  model_name: str | None = None,
38
38
  is_urdf: bool | None = None,
39
39
  ) -> SDFData:
@@ -41,30 +41,37 @@ def extract_model_data(
41
41
  Extract data from an SDF/URDF resource useful to build a JaxSim model.
42
42
 
43
43
  Args:
44
- model_description: A path to an SDF/URDF file, a string containing its content,
45
- or a pre-parsed/pre-built rod model.
44
+ model_description:
45
+ A path to an SDF/URDF file, a string containing its content, or
46
+ a pre-parsed/pre-built rod model.
46
47
  model_name: The name of the model to extract from the SDF resource.
47
- is_urdf: Whether the SDF resource is a URDF file. Needed only if model_description
48
- is a URDF string.
48
+ is_urdf:
49
+ Whether to force parsing the resource as a URDF file. Automatically
50
+ detected if not provided.
49
51
 
50
52
  Returns:
51
53
  The extracted model data.
52
54
  """
53
55
 
54
- if isinstance(model_description, rod.Model):
55
- sdf_model = model_description
56
- else:
57
- # Parse the SDF resource.
58
- sdf_element = rod.Sdf.load(sdf=model_description, is_urdf=is_urdf)
59
-
60
- if len(sdf_element.models()) == 0:
61
- raise RuntimeError("Failed to find any model in SDF resource")
62
-
63
- # Assume the SDF resource has only one model, or the desired model name is given.
64
- sdf_models = {m.name: m for m in sdf_element.models()}
65
- sdf_model = (
66
- sdf_element.models()[0] if len(sdf_models) == 1 else sdf_models[model_name]
67
- )
56
+ match model_description:
57
+ case rod.Model():
58
+ sdf_model = model_description
59
+ case rod.Sdf() | str() | pathlib.Path():
60
+ sdf_element = (
61
+ model_description
62
+ if isinstance(model_description, rod.Sdf)
63
+ else rod.Sdf.load(sdf=model_description, is_urdf=is_urdf)
64
+ )
65
+ if not sdf_element.models():
66
+ raise RuntimeError("Failed to find any model in SDF resource")
67
+
68
+ # Assume the SDF resource has only one model, or the desired model name is given.
69
+ sdf_models = {m.name: m for m in sdf_element.models()}
70
+ sdf_model = (
71
+ sdf_element.models()[0]
72
+ if len(sdf_models) == 1
73
+ else sdf_models[model_name]
74
+ )
68
75
 
69
76
  # Log model name.
70
77
  logging.debug(msg=f"Found model '{sdf_model.name}' in SDF resource")
@@ -344,7 +351,7 @@ def extract_model_data(
344
351
 
345
352
  def build_model_description(
346
353
  model_description: pathlib.Path | str | rod.Model,
347
- is_urdf: bool | None = False,
354
+ is_urdf: bool | None = None,
348
355
  ) -> descriptions.ModelDescription:
349
356
  """
350
357
  Builds a model description from an SDF/URDF resource.
@@ -352,8 +359,9 @@ def build_model_description(
352
359
  Args:
353
360
  model_description: A path to an SDF/URDF file, a string containing its content,
354
361
  or a pre-parsed/pre-built rod model.
355
- is_urdf: Whether the SDF resource is a URDF file. Needed only if model_description
356
- is a URDF string.
362
+ is_urdf: Whether the force parsing the resource as a URDF file. Automatically
363
+ detected if not provided.
364
+
357
365
  Returns:
358
366
  The parsed model description.
359
367
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.3.dev100
3
+ Version: 0.4.3.dev105
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>
6
6
  Maintainer-email: Diego Ferigo <dgferigo@gmail.com>, Filippo Luca Ferretti <filippo.ferretti@iit.it>
@@ -67,7 +67,7 @@ Requires-Dist: jaxlie>=1.3.0
67
67
  Requires-Dist: jax_dataclasses>=1.4.0
68
68
  Requires-Dist: pptree
69
69
  Requires-Dist: qpax
70
- Requires-Dist: rod>=0.3.0
70
+ Requires-Dist: rod>=0.3.3
71
71
  Requires-Dist: typing_extensions; python_version < "3.12"
72
72
  Provides-Extra: style
73
73
  Requires-Dist: black[jupyter]~=24.0; extra == "style"
@@ -6,7 +6,7 @@ jaxlie>=1.3.0
6
6
  jax_dataclasses>=1.4.0
7
7
  pptree
8
8
  qpax
9
- rod>=0.3.0
9
+ rod>=0.3.3
10
10
 
11
11
  [:python_version < "3.12"]
12
12
  typing_extensions
@@ -83,24 +83,9 @@ def build_jaxsim_model(
83
83
  A JaxSim model built from the provided description.
84
84
  """
85
85
 
86
- is_urdf = None
87
-
88
- # If the provided description is a string, automatically detect if it
89
- # contains the content of a URDF or SDF file.
90
- if isinstance(model_description, str):
91
- if "<robot" in model_description:
92
- is_urdf = True
93
-
94
- elif "<sdf>" in model_description:
95
- is_urdf = False
96
-
97
- else:
98
- is_urdf = None
99
-
100
86
  # Build the JaxSim model.
101
87
  model = js.model.JaxSimModel.build_from_model_description(
102
88
  model_description=model_description,
103
- is_urdf=is_urdf,
104
89
  )
105
90
 
106
91
  return model
@@ -85,7 +85,7 @@ def test_contact_jacobian_derivative(
85
85
  W_p_Ci = model.kin_dyn_parameters.contact_parameters.point
86
86
 
87
87
  # Load the model in ROD.
88
- rod_model = rod.Sdf.load(sdf=model.built_from, is_urdf=True).model
88
+ rod_model = rod.Sdf.load(sdf=model.built_from).model
89
89
 
90
90
  # Add dummy frames on the contact points.
91
91
  for idx, (link_name, W_p_C) in enumerate(
@@ -14,14 +14,12 @@ def test_call_jit_compiled_function_passing_different_objects(
14
14
 
15
15
  # Create a first model from the URDF.
16
16
  model1 = js.model.JaxSimModel.build_from_model_description(
17
- model_description=ergocub_model_description_path,
18
- is_urdf=True,
17
+ model_description=ergocub_model_description_path
19
18
  )
20
19
 
21
20
  # Create a second model from the URDF.
22
21
  model2 = js.model.JaxSimModel.build_from_model_description(
23
- model_description=ergocub_model_description_path,
24
- is_urdf=True,
22
+ model_description=ergocub_model_description_path
25
23
  )
26
24
 
27
25
  # The objects should be different, but the comparison should return True.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes