jaxsim 0.4.2.dev47__tar.gz → 0.4.3.dev8__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 (122) hide show
  1. jaxsim-0.4.3.dev8/.github/workflows/update_pixi_lockfile.yml +48 -0
  2. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/PKG-INFO +1 -1
  3. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/pyproject.toml +5 -1
  4. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/_version.py +2 -2
  5. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/crba.py +24 -12
  6. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/forward_kinematics.py +8 -4
  7. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/jacobian.py +24 -12
  8. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim.egg-info/PKG-INFO +1 -1
  9. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim.egg-info/SOURCES.txt +1 -0
  10. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.devcontainer/Dockerfile +0 -0
  11. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.devcontainer/devcontainer.json +0 -0
  12. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.gitattributes +0 -0
  13. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.github/CODEOWNERS +0 -0
  14. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.github/workflows/ci_cd.yml +0 -0
  15. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.github/workflows/read_the_docs.yml +0 -0
  16. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.gitignore +0 -0
  17. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.pre-commit-config.yaml +0 -0
  18. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/.readthedocs.yaml +0 -0
  19. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/CONTRIBUTING.md +0 -0
  20. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/LICENSE +0 -0
  21. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/README.md +0 -0
  22. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/Makefile +0 -0
  23. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/conf.py +0 -0
  24. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/examples.rst +0 -0
  25. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/guide/install.rst +0 -0
  26. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/index.rst +0 -0
  27. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/make.bat +0 -0
  28. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/api.rst +0 -0
  29. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/integrators.rst +0 -0
  30. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/math.rst +0 -0
  31. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/mujoco.rst +0 -0
  32. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/parsers.rst +0 -0
  33. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/rbda.rst +0 -0
  34. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/typing.rst +0 -0
  35. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/docs/modules/utils.rst +0 -0
  36. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/environment.yml +0 -0
  37. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/examples/.gitattributes +0 -0
  38. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/examples/.gitignore +0 -0
  39. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/examples/PD_controller.ipynb +0 -0
  40. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/examples/Parallel_computing.ipynb +0 -0
  41. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/examples/README.md +0 -0
  42. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/examples/assets/cartpole.urdf +0 -0
  43. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/pixi.lock +0 -0
  44. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/setup.cfg +0 -0
  45. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/setup.py +0 -0
  46. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/__init__.py +0 -0
  47. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/__init__.py +0 -0
  48. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/com.py +0 -0
  49. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/common.py +0 -0
  50. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/contact.py +0 -0
  51. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/data.py +0 -0
  52. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/frame.py +0 -0
  53. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/joint.py +0 -0
  54. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  55. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/link.py +0 -0
  56. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/model.py +0 -0
  57. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/ode.py +0 -0
  58. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/ode_data.py +0 -0
  59. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/api/references.py +0 -0
  60. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/exceptions.py +0 -0
  61. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/integrators/__init__.py +0 -0
  62. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/integrators/common.py +0 -0
  63. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/integrators/fixed_step.py +0 -0
  64. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/integrators/variable_step.py +0 -0
  65. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/logging.py +0 -0
  66. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/__init__.py +0 -0
  67. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/adjoint.py +0 -0
  68. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/cross.py +0 -0
  69. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/inertia.py +0 -0
  70. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/joint_model.py +0 -0
  71. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/quaternion.py +0 -0
  72. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/rotation.py +0 -0
  73. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/skew.py +0 -0
  74. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/math/transform.py +0 -0
  75. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/mujoco/__init__.py +0 -0
  76. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/mujoco/__main__.py +0 -0
  77. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/mujoco/loaders.py +0 -0
  78. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/mujoco/model.py +0 -0
  79. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/mujoco/visualizer.py +0 -0
  80. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/__init__.py +0 -0
  81. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  82. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  83. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  84. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/descriptions/link.py +0 -0
  85. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/descriptions/model.py +0 -0
  86. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  87. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/rod/__init__.py +0 -0
  88. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/rod/parser.py +0 -0
  89. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/parsers/rod/utils.py +0 -0
  90. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/__init__.py +0 -0
  91. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/aba.py +0 -0
  92. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/collidable_points.py +0 -0
  93. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  94. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/contacts/common.py +0 -0
  95. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/contacts/soft.py +0 -0
  96. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/rnea.py +0 -0
  97. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/rbda/utils.py +0 -0
  98. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/terrain/__init__.py +0 -0
  99. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/terrain/terrain.py +0 -0
  100. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/typing.py +0 -0
  101. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/utils/__init__.py +0 -0
  102. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  103. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/utils/tracing.py +0 -0
  104. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim/utils/wrappers.py +0 -0
  105. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  106. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim.egg-info/requires.txt +0 -0
  107. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/src/jaxsim.egg-info/top_level.txt +0 -0
  108. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/__init__.py +0 -0
  109. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/conftest.py +0 -0
  110. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_com.py +0 -0
  111. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_contact.py +0 -0
  112. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_data.py +0 -0
  113. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_frame.py +0 -0
  114. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_joint.py +0 -0
  115. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_link.py +0 -0
  116. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_api_model.py +0 -0
  117. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_automatic_differentiation.py +0 -0
  118. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_contact.py +0 -0
  119. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_exceptions.py +0 -0
  120. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_pytree.py +0 -0
  121. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/test_simulations.py +0 -0
  122. {jaxsim-0.4.2.dev47 → jaxsim-0.4.3.dev8}/tests/utils_idyntree.py +0 -0
@@ -0,0 +1,48 @@
1
+ name: Update pixi lockfile
2
+
3
+ permissions:
4
+ contents: write
5
+ pull-requests: write
6
+
7
+ on:
8
+ workflow_dispatch:
9
+ schedule:
10
+ - cron: 0 5 1 * *
11
+
12
+ jobs:
13
+ pixi-update:
14
+ runs-on: ubuntu-22.04
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ lfs: true
19
+
20
+ - name: Set up pixi
21
+ uses: prefix-dev/setup-pixi@v0.8.1
22
+ with:
23
+ run-install: false
24
+
25
+ - name: Install pixi-diff-to-markdown
26
+ run: pixi global install pixi-diff-to-markdown
27
+
28
+ - name: Update pixi lockfile and generate diff
29
+ run: |
30
+ set -o pipefail
31
+ pixi update --json | pixi exec pixi-diff-to-markdown --explicit-column > diff.md
32
+
33
+ - name: Commit and push changes
34
+ run: |
35
+ echo "BRANCH_NAME=update-pixi-$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
36
+
37
+ - name: Create pull request
38
+ uses: peter-evans/create-pull-request@v6
39
+ with:
40
+ token: ${{ secrets.GITHUB_TOKEN }}
41
+ commit-message: Update `pixi.lock`
42
+ title: Update `pixi` lockfile
43
+ body-path: diff.md
44
+ branch: ${{ env.BRANCH_NAME }}
45
+ base: main
46
+ labels: pixi
47
+ add-paths: pixi.lock
48
+ delete-branch: true
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.2.dev47
3
+ Version: 0.4.3.dev8
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>
@@ -206,10 +206,14 @@ pytest-icdiff = "*"
206
206
  robot_descriptions = "*"
207
207
 
208
208
  [tool.pixi.feature.gpu]
209
- dependencies = { cuda-version = "12.*", cuda-cupti = "*", jaxlib = "**cuda*" }
210
209
  platforms = ["linux-64"]
211
210
  system-requirements = { cuda = "12.1" }
212
211
 
212
+ [tool.pixi.feature.gpu.dependencies]
213
+ cuda-cupti = "*"
214
+ cuda-version = "12.*"
215
+ jaxlib = {version = "*", build = "*cuda*"}
216
+
213
217
  [tool.pixi.pypi-dependencies]
214
218
  jaxsim = { path = "./", editable = true }
215
219
 
@@ -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.2.dev47'
16
- __version_tuple__ = version_tuple = (0, 4, 2, 'dev47')
15
+ __version__ = version = '0.4.3.dev8'
16
+ __version_tuple__ = version_tuple = (0, 4, 3, 'dev8')
@@ -59,10 +59,14 @@ def crba(model: js.model.JaxSimModel, *, joint_positions: jtp.Vector) -> jtp.Mat
59
59
 
60
60
  return (i_X_0,), None
61
61
 
62
- (i_X_0,), _ = jax.lax.scan(
63
- f=propagate_kinematics,
64
- init=forward_pass_carry,
65
- xs=jnp.arange(start=1, stop=model.number_of_links()),
62
+ (i_X_0,), _ = (
63
+ jax.lax.scan(
64
+ f=propagate_kinematics,
65
+ init=forward_pass_carry,
66
+ xs=jnp.arange(start=1, stop=model.number_of_links()),
67
+ )
68
+ if model.number_of_links() > 1
69
+ else [(i_X_0,), None]
66
70
  )
67
71
 
68
72
  # ===================
@@ -128,10 +132,14 @@ def crba(model: js.model.JaxSimModel, *, joint_positions: jtp.Vector) -> jtp.Mat
128
132
  operand=carry,
129
133
  )
130
134
 
131
- (j, Fi, M), _ = jax.lax.scan(
132
- f=inner_fn,
133
- init=carry_inner_fn,
134
- xs=jnp.flip(jnp.arange(start=1, stop=model.number_of_links())),
135
+ (j, Fi, M), _ = (
136
+ jax.lax.scan(
137
+ f=inner_fn,
138
+ init=carry_inner_fn,
139
+ xs=jnp.flip(jnp.arange(start=1, stop=model.number_of_links())),
140
+ )
141
+ if model.number_of_links() > 1
142
+ else [(j, Fi, M), None]
135
143
  )
136
144
 
137
145
  Fi = i_X_0[j].T @ Fi
@@ -143,10 +151,14 @@ def crba(model: js.model.JaxSimModel, *, joint_positions: jtp.Vector) -> jtp.Mat
143
151
 
144
152
  # This scan performs the backward pass to compute Mbj, Mjb and Mjj, that
145
153
  # also includes a fake while loop implemented with a scan and two cond.
146
- (Mc, M), _ = jax.lax.scan(
147
- f=backward_pass,
148
- init=backward_pass_carry,
149
- xs=jnp.flip(jnp.arange(start=1, stop=model.number_of_links())),
154
+ (Mc, M), _ = (
155
+ jax.lax.scan(
156
+ f=backward_pass,
157
+ init=backward_pass_carry,
158
+ xs=jnp.flip(jnp.arange(start=1, stop=model.number_of_links())),
159
+ )
160
+ if model.number_of_links() > 1
161
+ else [(Mc, M), None]
150
162
  )
151
163
 
152
164
  # Store the locked 6D rigid-body inertia matrix Mbb ∈ ℝ⁶ˣ⁶.
@@ -75,10 +75,14 @@ def forward_kinematics_model(
75
75
 
76
76
  return (W_X_i,), None
77
77
 
78
- (W_X_i,), _ = jax.lax.scan(
79
- f=propagate_kinematics,
80
- init=propagate_kinematics_carry,
81
- xs=jnp.arange(start=1, stop=model.number_of_links()),
78
+ (W_X_i,), _ = (
79
+ jax.lax.scan(
80
+ f=propagate_kinematics,
81
+ init=propagate_kinematics_carry,
82
+ xs=jnp.arange(start=1, stop=model.number_of_links()),
83
+ )
84
+ if model.number_of_links() > 1
85
+ else [(W_X_i,), None]
82
86
  )
83
87
 
84
88
  return jax.vmap(Adjoint.to_transform)(W_X_i)
@@ -67,10 +67,14 @@ def jacobian(
67
67
 
68
68
  return (i_X_0,), None
69
69
 
70
- (i_X_0,), _ = jax.lax.scan(
71
- f=propagate_kinematics,
72
- init=propagate_kinematics_carry,
73
- xs=np.arange(start=1, stop=model.number_of_links()),
70
+ (i_X_0,), _ = (
71
+ jax.lax.scan(
72
+ f=propagate_kinematics,
73
+ init=propagate_kinematics_carry,
74
+ xs=np.arange(start=1, stop=model.number_of_links()),
75
+ )
76
+ if model.number_of_links() > 1
77
+ else [(i_X_0,), None]
74
78
  )
75
79
 
76
80
  # ============================
@@ -105,10 +109,14 @@ def jacobian(
105
109
 
106
110
  return J, None
107
111
 
108
- L_J_WL_B, _ = jax.lax.scan(
109
- f=compute_jacobian,
110
- init=J,
111
- xs=np.arange(start=1, stop=model.number_of_links()),
112
+ L_J_WL_B, _ = (
113
+ jax.lax.scan(
114
+ f=compute_jacobian,
115
+ init=J,
116
+ xs=np.arange(start=1, stop=model.number_of_links()),
117
+ )
118
+ if model.number_of_links() > 1
119
+ else [J, None]
112
120
  )
113
121
 
114
122
  return L_J_WL_B
@@ -184,10 +192,14 @@ def jacobian_full_doubly_left(
184
192
 
185
193
  return (B_X_i, J), None
186
194
 
187
- (B_X_i, J), _ = jax.lax.scan(
188
- f=compute_full_jacobian,
189
- init=compute_full_jacobian_carry,
190
- xs=np.arange(start=1, stop=model.number_of_links()),
195
+ (B_X_i, J), _ = (
196
+ jax.lax.scan(
197
+ f=compute_full_jacobian,
198
+ init=compute_full_jacobian_carry,
199
+ xs=np.arange(start=1, stop=model.number_of_links()),
200
+ )
201
+ if model.number_of_links() > 1
202
+ else [(B_X_i, J), None]
191
203
  )
192
204
 
193
205
  # Convert adjoints to SE(3) transforms.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.4.2.dev47
3
+ Version: 0.4.3.dev8
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>
@@ -14,6 +14,7 @@ setup.py
14
14
  .github/CODEOWNERS
15
15
  .github/workflows/ci_cd.yml
16
16
  .github/workflows/read_the_docs.yml
17
+ .github/workflows/update_pixi_lockfile.yml
17
18
  docs/Makefile
18
19
  docs/conf.py
19
20
  docs/examples.rst
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