jaxsim 0.5.1.dev60__tar.gz → 0.5.1.dev69__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 (133) hide show
  1. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/PKG-INFO +1 -1
  2. jaxsim-0.5.1.dev69/docs/guide/configuration.rst +55 -0
  3. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/index.rst +1 -0
  4. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/_version.py +2 -2
  5. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/rod/utils.py +31 -26
  6. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim.egg-info/PKG-INFO +1 -1
  7. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim.egg-info/SOURCES.txt +1 -0
  8. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.devcontainer/Dockerfile +0 -0
  9. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.devcontainer/devcontainer.json +0 -0
  10. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.gitattributes +0 -0
  11. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.github/CODEOWNERS +0 -0
  12. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.github/dependabot.yml +0 -0
  13. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.github/workflows/ci_cd.yml +0 -0
  14. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.github/workflows/pixi.yml +0 -0
  15. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.github/workflows/read_the_docs.yml +0 -0
  16. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.gitignore +0 -0
  17. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.pre-commit-config.yaml +0 -0
  18. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/.readthedocs.yaml +0 -0
  19. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/CONTRIBUTING.md +0 -0
  20. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/LICENSE +0 -0
  21. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/README.md +0 -0
  22. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/Makefile +0 -0
  23. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/conf.py +0 -0
  24. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/examples.rst +0 -0
  25. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/guide/install.rst +0 -0
  26. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/make.bat +0 -0
  27. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/api.rst +0 -0
  28. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/integrators.rst +0 -0
  29. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/math.rst +0 -0
  30. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/mujoco.rst +0 -0
  31. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/parsers.rst +0 -0
  32. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/rbda.rst +0 -0
  33. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/typing.rst +0 -0
  34. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/docs/modules/utils.rst +0 -0
  35. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/environment.yml +0 -0
  36. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/.gitattributes +0 -0
  37. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/.gitignore +0 -0
  38. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/README.md +0 -0
  39. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/assets/build_cartpole_urdf.py +0 -0
  40. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/assets/cartpole.urdf +0 -0
  41. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/jaxsim_as_multibody_dynamics_library.ipynb +0 -0
  42. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/jaxsim_as_physics_engine.ipynb +0 -0
  43. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/examples/jaxsim_for_robot_controllers.ipynb +0 -0
  44. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/pixi.lock +0 -0
  45. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/pyproject.toml +0 -0
  46. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/setup.cfg +0 -0
  47. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/setup.py +0 -0
  48. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/__init__.py +0 -0
  49. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/__init__.py +0 -0
  50. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/com.py +0 -0
  51. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/common.py +0 -0
  52. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/contact.py +0 -0
  53. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/data.py +0 -0
  54. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/frame.py +0 -0
  55. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/joint.py +0 -0
  56. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/kin_dyn_parameters.py +0 -0
  57. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/link.py +0 -0
  58. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/model.py +0 -0
  59. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/ode.py +0 -0
  60. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/ode_data.py +0 -0
  61. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/api/references.py +0 -0
  62. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/exceptions.py +0 -0
  63. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/integrators/__init__.py +0 -0
  64. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/integrators/common.py +0 -0
  65. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/integrators/fixed_step.py +0 -0
  66. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/integrators/variable_step.py +0 -0
  67. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/logging.py +0 -0
  68. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/__init__.py +0 -0
  69. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/adjoint.py +0 -0
  70. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/cross.py +0 -0
  71. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/inertia.py +0 -0
  72. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/joint_model.py +0 -0
  73. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/quaternion.py +0 -0
  74. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/rotation.py +0 -0
  75. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/skew.py +0 -0
  76. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/math/transform.py +0 -0
  77. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/mujoco/__init__.py +0 -0
  78. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/mujoco/__main__.py +0 -0
  79. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/mujoco/loaders.py +0 -0
  80. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/mujoco/model.py +0 -0
  81. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/mujoco/utils.py +0 -0
  82. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/mujoco/visualizer.py +0 -0
  83. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/__init__.py +0 -0
  84. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/descriptions/__init__.py +0 -0
  85. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/descriptions/collision.py +0 -0
  86. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/descriptions/joint.py +0 -0
  87. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/descriptions/link.py +0 -0
  88. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/descriptions/model.py +0 -0
  89. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/kinematic_graph.py +0 -0
  90. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/rod/__init__.py +0 -0
  91. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/rod/meshes.py +0 -0
  92. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/parsers/rod/parser.py +0 -0
  93. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/__init__.py +0 -0
  94. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/aba.py +0 -0
  95. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/collidable_points.py +0 -0
  96. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/contacts/__init__.py +0 -0
  97. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/contacts/common.py +0 -0
  98. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/contacts/relaxed_rigid.py +0 -0
  99. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/contacts/rigid.py +0 -0
  100. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/contacts/soft.py +0 -0
  101. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/contacts/visco_elastic.py +0 -0
  102. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/crba.py +0 -0
  103. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/forward_kinematics.py +0 -0
  104. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/jacobian.py +0 -0
  105. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/rnea.py +0 -0
  106. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/rbda/utils.py +0 -0
  107. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/terrain/__init__.py +0 -0
  108. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/terrain/terrain.py +0 -0
  109. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/typing.py +0 -0
  110. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/utils/__init__.py +0 -0
  111. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/utils/jaxsim_dataclass.py +0 -0
  112. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/utils/tracing.py +0 -0
  113. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim/utils/wrappers.py +0 -0
  114. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim.egg-info/dependency_links.txt +0 -0
  115. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim.egg-info/requires.txt +0 -0
  116. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/src/jaxsim.egg-info/top_level.txt +0 -0
  117. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/__init__.py +0 -0
  118. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/conftest.py +0 -0
  119. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_com.py +0 -0
  120. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_contact.py +0 -0
  121. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_data.py +0 -0
  122. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_frame.py +0 -0
  123. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_joint.py +0 -0
  124. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_link.py +0 -0
  125. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_api_model.py +0 -0
  126. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_automatic_differentiation.py +0 -0
  127. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_benchmark.py +0 -0
  128. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_contact.py +0 -0
  129. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_exceptions.py +0 -0
  130. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_meshes.py +0 -0
  131. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_pytree.py +0 -0
  132. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/test_simulations.py +0 -0
  133. {jaxsim-0.5.1.dev60 → jaxsim-0.5.1.dev69}/tests/utils_idyntree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.5.1.dev60
3
+ Version: 0.5.1.dev69
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>, Filippo Luca Ferretti <filippoluca.ferretti@outlook.com>
6
6
  Maintainer-email: Filippo Luca Ferretti <filippo.ferretti@iit.it>, Alessandro Croci <alessandro.croci@iit.it>
@@ -0,0 +1,55 @@
1
+ Configuration
2
+ =============
3
+
4
+ JaxSim utilizes environment variables for application configuration. Below is a detailed overview of the various configuration categories and their respective variables.
5
+
6
+
7
+ Collision Dynamics
8
+ ~~~~~~~~~~~~~~~~~~
9
+
10
+ Environment variables starting with ``JAXSIM_COLLISION_`` are used to configure collision dynamics. The available variables are:
11
+
12
+ - ``JAXSIM_COLLISION_SPHERE_POINTS``: Specifies the number of collision points to approximate the sphere.
13
+ *Default:* ``50``.
14
+
15
+ - ``JAXSIM_COLLISION_MESH_ENABLED``: Enables or disables mesh-based collision detection.
16
+ *Default:* ``False``.
17
+
18
+ - ``JAXSIM_COLLISION_USE_BOTTOM_ONLY``: Limits collision detection to only the bottom half of the box or sphere.
19
+ *Default:* ``False``.
20
+
21
+ .. note::
22
+ The bottom half is defined as the half of the box or sphere with the lowest z-coordinate in the collision link frame.
23
+
24
+
25
+ Testing
26
+ ~~~~~~~
27
+
28
+ For testing configurations, environment variables beginning with ``JAXSIM_TEST_`` are used. The following variables are available:
29
+
30
+ - ``JAXSIM_TEST_SEED``: Defines the seed for the random number generator.
31
+ *Default:* ``0``.
32
+
33
+ - ``JAXSIM_TEST_AD_ORDER``: Specifies the gradient order for automatic differentiation tests.
34
+ *Default:* ``1``.
35
+
36
+ - ``JAXSIM_TEST_FD_STEP_SIZE``: Sets the step size for finite difference tests.
37
+ *Default:* the cube root of the machine epsilon.
38
+
39
+
40
+ Joint Dynamics
41
+ ~~~~~~~~~~~~~~
42
+ Joint dynamics are configured using environment variables starting with ``JAXSIM_JOINT_``. Available variables include:
43
+
44
+ - ``JAXSIM_JOINT_POSITION_LIMIT_DAMPER``: Overrides the damper value for joint position limits of the SDF model.
45
+
46
+ - ``JAXSIM_JOINT_POSITION_LIMIT_SPRING``: Overrides the spring value for joint position limits of the SDF model.
47
+
48
+
49
+ Logging
50
+ ~~~~~~~
51
+
52
+ The logging configuration is controlled by the following environment variable:
53
+
54
+ - ``JAXSIM_LOGGING_LEVEL``: Determines the logging level.
55
+ *Default:* ``DEBUG`` for development, ``WARNING`` for production.
@@ -70,6 +70,7 @@ Features
70
70
  :hidden:
71
71
 
72
72
  guide/install
73
+ guide/configuration
73
74
 
74
75
  examples
75
76
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.5.1.dev60'
16
- __version_tuple__ = version_tuple = (0, 5, 1, 'dev60')
15
+ __version__ = version = '0.5.1.dev69'
16
+ __version_tuple__ = version_tuple = (0, 5, 1, 'dev69')
@@ -117,22 +117,19 @@ def create_box_collision(
117
117
 
118
118
  center = np.array([x / 2, y / 2, z / 2])
119
119
 
120
- box_corners = (
121
- np.vstack(
122
- [
123
- np.array([0, 0, 0]),
124
- np.array([x, 0, 0]),
125
- np.array([x, y, 0]),
126
- np.array([0, y, 0]),
127
- np.array([0, 0, z]),
128
- np.array([x, 0, z]),
129
- np.array([x, y, z]),
130
- np.array([0, y, z]),
131
- ]
132
- )
133
- - center
120
+ # Define the bottom corners.
121
+ bottom_corners = np.array([[0, 0, 0], [x, 0, 0], [x, y, 0], [0, y, 0]])
122
+
123
+ # Conditionally add the top corners based on the environment variable.
124
+ top_corners = (
125
+ np.array([[0, 0, z], [x, 0, z], [x, y, z], [0, y, z]])
126
+ if not os.environ.get("JAXSIM_COLLISION_USE_BOTTOM_ONLY", "0")
127
+ else []
134
128
  )
135
129
 
130
+ # Combine and shift by the center
131
+ box_corners = np.vstack([bottom_corners, *top_corners]) - center
132
+
136
133
  H = collision.pose.transform() if collision.pose is not None else np.eye(4)
137
134
 
138
135
  center_wrt_link = (H @ np.hstack([center, 1.0]))[0:-1]
@@ -170,23 +167,31 @@ def create_sphere_collision(
170
167
 
171
168
  # From https://stackoverflow.com/a/26127012
172
169
  def fibonacci_sphere(samples: int) -> npt.NDArray:
173
- points = []
174
- phi = np.pi * (3.0 - np.sqrt(5.0)) # golden angle in radians
175
-
176
- for i in range(samples):
177
- y = 1 - (i / float(samples - 1)) * 2 # y goes from 1 to -1
178
- radius = np.sqrt(1 - y * y) # radius at y
179
-
180
- theta = phi * i # golden angle increment
181
-
182
- x = np.cos(theta) * radius
183
- z = np.sin(theta) * radius
170
+ # Get the golden ratio in radians.
171
+ phi = np.pi * (3.0 - np.sqrt(5.0))
172
+
173
+ # Generate the points.
174
+ points = [
175
+ np.array(
176
+ [
177
+ np.cos(phi * i)
178
+ * np.sqrt(1 - (y := 1 - 2 * i / (samples - 1)) ** 2),
179
+ y,
180
+ np.sin(phi * i) * np.sqrt(1 - y**2),
181
+ ]
182
+ )
183
+ for i in range(samples)
184
+ ]
184
185
 
185
- points.append(np.array([x, y, z]))
186
+ # Filter to keep only the bottom half if required.
187
+ if os.environ.get("JAXSIM_COLLISION_USE_BOTTOM_ONLY", "0"):
188
+ # Keep only the points with z <= 0.
189
+ points = [point for point in points if point[2] <= 0]
186
190
 
187
191
  return np.vstack(points)
188
192
 
189
193
  r = collision.geometry.sphere.radius
194
+
190
195
  sphere_points = r * fibonacci_sphere(
191
196
  samples=int(os.getenv(key="JAXSIM_COLLISION_SPHERE_POINTS", default="50"))
192
197
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaxsim
3
- Version: 0.5.1.dev60
3
+ Version: 0.5.1.dev69
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>, Filippo Luca Ferretti <filippoluca.ferretti@outlook.com>
6
6
  Maintainer-email: Filippo Luca Ferretti <filippo.ferretti@iit.it>, Alessandro Croci <alessandro.croci@iit.it>
@@ -21,6 +21,7 @@ docs/conf.py
21
21
  docs/examples.rst
22
22
  docs/index.rst
23
23
  docs/make.bat
24
+ docs/guide/configuration.rst
24
25
  docs/guide/install.rst
25
26
  docs/modules/api.rst
26
27
  docs/modules/integrators.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