mani-skill-nightly 2025.6.28.701__py3-none-any.whl → 2025.6.28.2040__py3-none-any.whl
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.
- mani_skill/envs/sapien_env.py +9 -3
- mani_skill/envs/utils/system/backend.py +5 -2
- mani_skill/examples/demo_random_action.py +6 -2
- mani_skill/render/utils.py +5 -2
- {mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/METADATA +1 -1
- {mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/RECORD +9 -9
- {mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/LICENSE +0 -0
- {mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/WHEEL +0 -0
- {mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/top_level.txt +0 -0
mani_skill/envs/sapien_env.py
CHANGED
@@ -98,12 +98,18 @@ class BaseEnv(gym.Env):
|
|
98
98
|
sim_backend (str): By default this is "auto". If sim_backend is "auto", then if ``num_envs == 1``, we use the PhysX CPU sim backend, otherwise
|
99
99
|
we use the PhysX GPU sim backend and automatically pick a GPU to use.
|
100
100
|
Can also be "physx_cpu" or "physx_cuda" to force usage of a particular sim backend.
|
101
|
-
To select a particular GPU to run the simulation on, you can pass "
|
101
|
+
To select a particular GPU to run the simulation on, you can pass "physx_cuda:n" where n is the ID of the GPU,
|
102
102
|
similar to the way PyTorch selects GPUs.
|
103
103
|
Note that if this is "physx_cpu", num_envs can only be equal to 1.
|
104
104
|
|
105
|
-
render_backend (str): By default this is "gpu". If render_backend is "gpu", then we auto select a GPU to render with.
|
106
|
-
It can be "
|
105
|
+
render_backend (str): By default this is "gpu". If render_backend is "gpu" or it's alias "sapien_cuda", then we auto select a GPU to render with.
|
106
|
+
It can be "sapien_cuda:n" where n is the ID of the GPU to render with. If this is "cpu" or "sapien_cpu", then we try to render on the CPU.
|
107
|
+
If this is "none" or None, then we disable rendering.
|
108
|
+
|
109
|
+
Note that some environments may require rendering functionalities to work. Moreover
|
110
|
+
it is sometimes difficult to determine before running an environment if your machine can render or not. If you encounter some issue with
|
111
|
+
rendering you can first try to double check your NVIDIA drivers / Vulkan drivers are setup correctly. If you don't need to do rendering
|
112
|
+
you can simply disable it by setting render_backend to "none" or None.
|
107
113
|
|
108
114
|
parallel_in_single_scene (bool): By default this is False. If True, rendered images and the GUI will show all objects in one view.
|
109
115
|
This is only really useful for generating cool videos showing all environments at once but it is not recommended
|
@@ -3,6 +3,7 @@ Utilities for determining the simulation backend and devices
|
|
3
3
|
"""
|
4
4
|
import platform
|
5
5
|
from dataclasses import dataclass
|
6
|
+
from typing import Union
|
6
7
|
|
7
8
|
import sapien
|
8
9
|
import torch
|
@@ -18,8 +19,8 @@ class BackendInfo:
|
|
18
19
|
"""the device on which the physics simulation is running"""
|
19
20
|
sim_backend: str
|
20
21
|
"""the backend name of the physics simulation"""
|
21
|
-
render_device: sapien.Device
|
22
|
-
"""the device on which the renderer is running"""
|
22
|
+
render_device: Union[sapien.Device, None]
|
23
|
+
"""the device on which the renderer is running. If none then we disable rendering."""
|
23
24
|
render_backend: str
|
24
25
|
"""the backend name of the renderer"""
|
25
26
|
|
@@ -70,6 +71,8 @@ def parse_sim_and_render_backend(sim_backend: str, render_backend: str) -> Backe
|
|
70
71
|
render_device = sapien.Device("cpu")
|
71
72
|
elif render_backend[:4] == "cuda":
|
72
73
|
render_device = sapien.Device(render_backend)
|
74
|
+
elif render_backend == "none" or render_backend is None:
|
75
|
+
render_device = None
|
73
76
|
else:
|
74
77
|
# handle special cases such as for AMD gpus, render_backend must be defined as pci:... instead as cuda is not available.
|
75
78
|
render_device = sapien.Device(render_backend)
|
@@ -25,6 +25,9 @@ class Args:
|
|
25
25
|
sim_backend: Annotated[str, tyro.conf.arg(aliases=["-b"])] = "auto"
|
26
26
|
"""Which simulation backend to use. Can be 'auto', 'cpu', 'gpu'"""
|
27
27
|
|
28
|
+
render_backend: Annotated[str, tyro.conf.arg(aliases=["-rb"])] = "gpu"
|
29
|
+
"""Which render backend to use. Can be 'gpu', 'cpu', 'none'"""
|
30
|
+
|
28
31
|
reward_mode: Optional[str] = None
|
29
32
|
"""Reward mode"""
|
30
33
|
|
@@ -77,6 +80,7 @@ def main(args: Args):
|
|
77
80
|
viewer_camera_configs=dict(shader_pack=args.shader),
|
78
81
|
num_envs=args.num_envs,
|
79
82
|
sim_backend=args.sim_backend,
|
83
|
+
render_backend=args.render_backend,
|
80
84
|
enable_shadow=True,
|
81
85
|
parallel_in_single_scene=parallel_in_single_scene,
|
82
86
|
)
|
@@ -103,7 +107,7 @@ def main(args: Args):
|
|
103
107
|
obs, _ = env.reset(seed=args.seed, options=dict(reconfigure=True))
|
104
108
|
if args.seed is not None and env.action_space is not None:
|
105
109
|
env.action_space.seed(args.seed[0])
|
106
|
-
if args.render_mode
|
110
|
+
if args.render_mode == "human":
|
107
111
|
viewer = env.render()
|
108
112
|
if isinstance(viewer, sapien.utils.Viewer):
|
109
113
|
viewer.paused = args.pause
|
@@ -116,7 +120,7 @@ def main(args: Args):
|
|
116
120
|
print("terminated", terminated)
|
117
121
|
print("truncated", truncated)
|
118
122
|
print("info", info)
|
119
|
-
if args.render_mode
|
123
|
+
if args.render_mode == "human":
|
120
124
|
env.render()
|
121
125
|
if args.render_mode is None or args.render_mode != "human":
|
122
126
|
if (terminated | truncated).any():
|
mani_skill/render/utils.py
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
import platform
|
2
|
+
from typing import Union
|
2
3
|
|
3
4
|
import sapien
|
4
5
|
|
5
6
|
|
6
|
-
def can_render(device: sapien.Device) -> bool:
|
7
|
+
def can_render(device: Union[sapien.Device, None]) -> bool:
|
7
8
|
"""Whether or not this device can render, depending on the rendering device selected"""
|
8
9
|
# NOTE (stao): currently sapien can't tell if the render device can render or not for MacOS
|
9
10
|
if platform.system() == "Darwin":
|
10
11
|
return True
|
11
|
-
|
12
|
+
# NOTE (stao): sapien's can_render function is not always accurate. The alternative at the moment is to let the user
|
13
|
+
# try to render and if there is a bug, tell the user to disable rendering by setting render_backend to "none" or None.
|
14
|
+
return device is not None
|
{mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/RECORD
RENAMED
@@ -539,7 +539,7 @@ mani_skill/assets/robots/xarm7/meshes/visual/link7.glb,sha256=aZatACOv20VJbi2tOE
|
|
539
539
|
mani_skill/assets/robots/xarm7/meshes/visual/link_base.glb,sha256=vcy2lN1V72jIsSDRT0ZKVskR_0pVOXtDvBkxO2GENWs,467668
|
540
540
|
mani_skill/envs/__init__.py,sha256=YPlttBErTcf9vSnkZ54EQ8vTABSfFFrBdUY0AkF4vmg,43
|
541
541
|
mani_skill/envs/minimal_template.py,sha256=9THHWA1vkHatptc9g5Ojh-UBUKWQmLHVeq4fcaqv2aY,2200
|
542
|
-
mani_skill/envs/sapien_env.py,sha256=
|
542
|
+
mani_skill/envs/sapien_env.py,sha256=4fuabvPy9uCC_x3DTehdgOgyIDqIZDjzbhBsz6iiakQ,73663
|
543
543
|
mani_skill/envs/scene.py,sha256=4ZAIJs61fwPPhfDvc3v845sj_Ftsd1sSYaju10KnXbQ,48465
|
544
544
|
mani_skill/envs/sim2real_env.py,sha256=3mkQX4TonE2pUC5_Atmx0IYDH2_v6GSwOPJvQMEvCNY,19214
|
545
545
|
mani_skill/envs/template.py,sha256=0wnwKjnGOF7RvTR5Gz4VopaUiFxnIioXwmb4nPVxAs8,11939
|
@@ -636,7 +636,7 @@ mani_skill/envs/utils/randomization/pose.py,sha256=9PPg-QMorHVe3fV4e3T-BRYu0E_8I
|
|
636
636
|
mani_skill/envs/utils/randomization/samplers.py,sha256=EOkF18mmDC7fA2hgj8QC2Ag0gnf4H-4MIjOCDvTMpCE,3665
|
637
637
|
mani_skill/envs/utils/rewards/__init__.py,sha256=66MV5YCbnpF4ac_SvTVJ000RxM1AIsclX7OatiA-Wak,22
|
638
638
|
mani_skill/envs/utils/rewards/common.py,sha256=1lfJNWG3x7UjarHLteLXa8DCzbe_L7nYBMOBo5D9CRQ,3647
|
639
|
-
mani_skill/envs/utils/system/backend.py,sha256=
|
639
|
+
mani_skill/envs/utils/system/backend.py,sha256=9xk-ef8779Cj27THXkVM-sxEMQWH8bUrWiwgaf-MKCo,3309
|
640
640
|
mani_skill/evaluation/__init__.py,sha256=PCMN6dc9zgFKuXTPmkAUEahP3XG65cKRLGMXrk5IeXY,33
|
641
641
|
mani_skill/evaluation/evaluator.py,sha256=1EN6qAiGx3taB4vCeArUp33UZjLvBt1Ke6iUW8Z8aV0,4493
|
642
642
|
mani_skill/evaluation/run_evaluation.py,sha256=yorphrlJKEGycHfQS8equnJHRsyjDuv77ZGNpg9wvCs,4780
|
@@ -644,7 +644,7 @@ mani_skill/evaluation/solution.py,sha256=e_Aa0f4sSQ56KXL7tVDPUKf7WTjcuFc5X4J76p8
|
|
644
644
|
mani_skill/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
645
645
|
mani_skill/examples/demo_manual_control.py,sha256=Z17ER37oehS8VgtDO_4dwiy5jDgL93nT9IdCsNDf0Es,8275
|
646
646
|
mani_skill/examples/demo_manual_control_continuous.py,sha256=tnCnKX2v1iIhtXwvWR2NzXgpf3e0y2-qAO91jJBLIO0,9679
|
647
|
-
mani_skill/examples/demo_random_action.py,sha256=
|
647
|
+
mani_skill/examples/demo_random_action.py,sha256=PAgSIrd6Ek3DM0XMs4ax-by1mMzXz2U1RsTavdzgNk8,5478
|
648
648
|
mani_skill/examples/demo_reset_distribution.py,sha256=m1I5WQptBJrXvFPdUi7TIzR_Q--_wGAFkbcKNKWlq2U,2988
|
649
649
|
mani_skill/examples/demo_robot.py,sha256=bIeHztjM0R6yJT699WQ6jkhv6LjsiP4GWa3Whyom_qM,4881
|
650
650
|
mani_skill/examples/demo_vis_pcd.py,sha256=50YT-YVeX4sEsXxHh0S9Ju_kra8ZcUzPfFpG3EgK2o4,2139
|
@@ -694,7 +694,7 @@ mani_skill/examples/teleoperation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
694
694
|
mani_skill/examples/teleoperation/interactive_panda.py,sha256=NsGy_ghtXl3HPbwLjKINkizOXqX_rMr30lUfscmhyQ4,10423
|
695
695
|
mani_skill/render/__init__.py,sha256=Uy6h1bzammUO8QVPVCDcuCuhnuN3e5votaho45drAGw,118
|
696
696
|
mani_skill/render/shaders.py,sha256=g2VcASiyrP7nVDv_MlmY9CeYbNr7QDvUBdCjuDMjqQ0,7103
|
697
|
-
mani_skill/render/utils.py,sha256=
|
697
|
+
mani_skill/render/utils.py,sha256=l-Kt3LTACw6Q_A7jhss0Eoc5t2LfHaFmDiH55DhLMuU,638
|
698
698
|
mani_skill/render/version.py,sha256=Ew2TTCrI60sL_cjEpr6iuPHKKMgTMtFoWRW_MevBJ_4,254
|
699
699
|
mani_skill/sensors/__init__.py,sha256=TW2wkhHN28dHOXujxiDO2Ill_EhJdE0e2MEbgZw7JY0,95
|
700
700
|
mani_skill/sensors/base_sensor.py,sha256=oq_v_dPA6VC69Eq-JDo1Teq692P6KZR_omU9rQ63L_k,1665
|
@@ -825,8 +825,8 @@ mani_skill/vector/wrappers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
825
825
|
mani_skill/vector/wrappers/gymnasium.py,sha256=aNPB-2oGDLep8qzdsuTSIlwGGO0OGQAQ193LefOGoTk,7434
|
826
826
|
mani_skill/vector/wrappers/sb3.py,sha256=SlXdiEPqcNHYMhJCzA29kBU6zK7DKTe1nc0L6Z3QQtY,4722
|
827
827
|
mani_skill/viewer/__init__.py,sha256=srvDBsk4LQU75K2VIttrhiQ68p_ro7PSDqQRls2PY5c,1722
|
828
|
-
mani_skill_nightly-2025.6.28.
|
829
|
-
mani_skill_nightly-2025.6.28.
|
830
|
-
mani_skill_nightly-2025.6.28.
|
831
|
-
mani_skill_nightly-2025.6.28.
|
832
|
-
mani_skill_nightly-2025.6.28.
|
828
|
+
mani_skill_nightly-2025.6.28.2040.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
829
|
+
mani_skill_nightly-2025.6.28.2040.dist-info/METADATA,sha256=4tsIGDJelHdLjtIrbdK0CdaI_2nhI4o_PC1xEW4chpM,9272
|
830
|
+
mani_skill_nightly-2025.6.28.2040.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
831
|
+
mani_skill_nightly-2025.6.28.2040.dist-info/top_level.txt,sha256=bkBgOVl_MZMoQx2aRFsSFEYlZLxjWlip5vtJ39FB3jA,11
|
832
|
+
mani_skill_nightly-2025.6.28.2040.dist-info/RECORD,,
|
{mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/LICENSE
RENAMED
File without changes
|
{mani_skill_nightly-2025.6.28.701.dist-info → mani_skill_nightly-2025.6.28.2040.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|