Skip to content

Commit 82d1f33

Browse files
Replaces set_carb_setting and get_carb_setting with direct carb calls (#3922)
# Description Removes dependency on ``` from isaacsim.core.utils.carb import get_carb_setting, set_carb_setting ``` Replaces `set_carb_setting(carb_settings, <setting-name>, <setting-value>` with direct carb call `carb_settings.set_string(<setting-name>, <setting-value>)`, `...set_int...`, `...set_bool...`, `...set_float...`. And replaces `get_carb_setting` with `carb_settings.get()` ## Type of change - Dependency removal ## Checklist - [ ] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [ ] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Co-authored-by: Octi Zhang <zhengyuz@nvidia.com>
1 parent e4a23f3 commit 82d1f33

File tree

8 files changed

+42
-39
lines changed

8 files changed

+42
-39
lines changed

source/isaaclab/isaaclab/app/app_launcher.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -883,7 +883,6 @@ def _hide_stop_button(self):
883883
def _set_rendering_mode_settings(self, launcher_args: dict) -> None:
884884
"""Store RTX rendering mode in carb settings."""
885885
import carb
886-
from isaacsim.core.utils.carb import set_carb_setting
887886

888887
rendering_mode = launcher_args.get("rendering_mode")
889888

@@ -895,12 +894,11 @@ def _set_rendering_mode_settings(self, launcher_args: dict) -> None:
895894

896895
# store rendering mode in carb settings
897896
carb_settings = carb.settings.get_settings()
898-
set_carb_setting(carb_settings, "/isaaclab/rendering/rendering_mode", rendering_mode)
897+
carb_settings.set_string("/isaaclab/rendering/rendering_mode", rendering_mode)
899898

900899
def _set_animation_recording_settings(self, launcher_args: dict) -> None:
901900
"""Store animation recording settings in carb settings."""
902901
import carb
903-
from isaacsim.core.utils.carb import set_carb_setting
904902

905903
# check if recording is enabled
906904
recording_enabled = launcher_args.get("anim_recording_enabled", False)
@@ -920,9 +918,9 @@ def _set_animation_recording_settings(self, launcher_args: dict) -> None:
920918

921919
# store config in carb settings
922920
carb_settings = carb.settings.get_settings()
923-
set_carb_setting(carb_settings, "/isaaclab/anim_recording/enabled", recording_enabled)
924-
set_carb_setting(carb_settings, "/isaaclab/anim_recording/start_time", start_time)
925-
set_carb_setting(carb_settings, "/isaaclab/anim_recording/stop_time", stop_time)
921+
carb_settings.set_bool("/isaaclab/anim_recording/enabled", recording_enabled)
922+
carb_settings.set_float("/isaaclab/anim_recording/start_time", start_time)
923+
carb_settings.set_float("/isaaclab/anim_recording/stop_time", stop_time)
926924

927925
def _interrupt_signal_handle_callback(self, signal, frame):
928926
"""Handle the interrupt signal from the keyboard."""

source/isaaclab/isaaclab/sim/simulation_context.py

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import omni.usd
3030
from isaacsim.core.api.simulation_context import SimulationContext as _SimulationContext
3131
from isaacsim.core.simulation_manager import SimulationManager
32-
from isaacsim.core.utils.carb import get_carb_setting, set_carb_setting
3332
from isaacsim.core.utils.viewports import set_camera_view
3433
from isaacsim.core.version import get_version
3534
from pxr import Gf, PhysxSchema, Sdf, Usd, UsdPhysics
@@ -455,7 +454,19 @@ def set_setting(self, name: str, value: Any):
455454
name: The name of the setting.
456455
value: The value of the setting.
457456
"""
458-
self._settings.set(name, value)
457+
# Route through typed setters for correctness and consistency for common scalar types.
458+
if isinstance(value, bool):
459+
self.carb_settings.set_bool(name, value)
460+
elif isinstance(value, int):
461+
self.carb_settings.set_int(name, value)
462+
elif isinstance(value, float):
463+
self.carb_settings.set_float(name, value)
464+
elif isinstance(value, str):
465+
self.carb_settings.set_string(name, value)
466+
elif isinstance(value, (list, tuple)):
467+
self.carb_settings.set(name, value)
468+
else:
469+
raise ValueError(f"Unsupported value type for setting '{name}': {type(value)}")
459470

460471
def get_setting(self, name: str) -> Any:
461472
"""Read the simulation setting using the Carbonite SDK.
@@ -466,7 +477,7 @@ def get_setting(self, name: str) -> Any:
466477
Returns:
467478
The value of the setting.
468479
"""
469-
return self._settings.get(name)
480+
return self.carb_settings.get(name)
470481

471482
def forward(self) -> None:
472483
"""Updates articulation kinematics and fabric for rendering."""
@@ -658,10 +669,10 @@ def _apply_physics_settings(self):
658669
"""Sets various carb physics settings."""
659670
# enable hydra scene-graph instancing
660671
# note: this allows rendering of instanceable assets on the GUI
661-
set_carb_setting(self.carb_settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
672+
self.carb_settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)
662673
# change dispatcher to use the default dispatcher in PhysX SDK instead of carb tasking
663674
# note: dispatcher handles how threads are launched for multi-threaded physics
664-
set_carb_setting(self.carb_settings, "/physics/physxDispatcher", True)
675+
self.carb_settings.set_bool("/physics/physxDispatcher", True)
665676
# disable contact processing in omni.physx
666677
# note: we disable it by default to avoid the overhead of contact processing when it isn't needed.
667678
# The physics flag gets enabled when a contact sensor is created.
@@ -673,16 +684,16 @@ def _apply_physics_settings(self):
673684
)
674685
# FIXME: From investigation, it seems this flag only affects CPU physics. For GPU physics, contacts
675686
# are always processed. The issue is reported to the PhysX team by @mmittal.
676-
set_carb_setting(self.carb_settings, "/physics/disableContactProcessing", True)
687+
self.carb_settings.set_bool("/physics/disableContactProcessing", True)
677688
# disable custom geometry for cylinder and cone collision shapes to allow contact reporting for them
678689
# reason: cylinders and cones aren't natively supported by PhysX so we need to use custom geometry flags
679690
# reference: https://nvidia-omniverse.github.io/PhysX/physx/5.4.1/docs/Geometry.html?highlight=capsule#geometry
680-
set_carb_setting(self.carb_settings, "/physics/collisionConeCustomGeometry", False)
681-
set_carb_setting(self.carb_settings, "/physics/collisionCylinderCustomGeometry", False)
691+
self.carb_settings.set_bool("/physics/collisionConeCustomGeometry", False)
692+
self.carb_settings.set_bool("/physics/collisionCylinderCustomGeometry", False)
682693
# hide the Simulation Settings window
683-
set_carb_setting(self.carb_settings, "/physics/autoPopupSimulationOutputWindow", False)
694+
self.carb_settings.set_bool("/physics/autoPopupSimulationOutputWindow", False)
684695

685-
def _apply_render_settings_from_cfg(self):
696+
def _apply_render_settings_from_cfg(self): # noqa: C901
686697
"""Sets rtx settings specified in the RenderCfg."""
687698

688699
# define mapping of user-friendly RenderCfg names to native carb names
@@ -706,7 +717,7 @@ def _apply_render_settings_from_cfg(self):
706717
# 1. command line argument --rendering_mode, if provided
707718
# 2. rendering_mode from Render Config, if set
708719
# 3. lastly, default to "balanced" mode, if neither is specified
709-
rendering_mode = get_carb_setting(self.carb_settings, "/isaaclab/rendering/rendering_mode")
720+
rendering_mode = self.carb_settings.get("/isaaclab/rendering/rendering_mode")
710721
if not rendering_mode:
711722
rendering_mode = self.cfg.render.rendering_mode
712723
if not rendering_mode:
@@ -736,7 +747,7 @@ def _apply_render_settings_from_cfg(self):
736747
# set presets
737748
for key, value in preset_dict.items():
738749
key = "/" + key.replace(".", "/") # convert to carb setting format
739-
set_carb_setting(self.carb_settings, key, value)
750+
self.set_setting(key, value)
740751

741752
# set user-friendly named settings
742753
for key, value in vars(self.cfg.render).items():
@@ -749,7 +760,7 @@ def _apply_render_settings_from_cfg(self):
749760
" need to be updated."
750761
)
751762
key = rendering_setting_name_mapping[key]
752-
set_carb_setting(self.carb_settings, key, value)
763+
self.set_setting(key, value)
753764

754765
# set general carb settings
755766
carb_settings = self.cfg.render.carb_settings
@@ -759,9 +770,9 @@ def _apply_render_settings_from_cfg(self):
759770
key = "/" + key.replace("_", "/") # convert from python variable style string
760771
elif "." in key:
761772
key = "/" + key.replace(".", "/") # convert from .kit file style string
762-
if get_carb_setting(self.carb_settings, key) is None:
773+
if self.get_setting(key) is None:
763774
raise ValueError(f"'{key}' in RenderCfg.general_parameters does not map to a carb setting.")
764-
set_carb_setting(self.carb_settings, key, value)
775+
self.set_setting(key, value)
765776

766777
# set denoiser mode
767778
if self.cfg.render.antialiasing_mode is not None:
@@ -773,8 +784,8 @@ def _apply_render_settings_from_cfg(self):
773784
pass
774785

775786
# WAR: Ensure /rtx/renderMode RaytracedLighting is correctly cased.
776-
if get_carb_setting(self.carb_settings, "/rtx/rendermode").lower() == "raytracedlighting":
777-
set_carb_setting(self.carb_settings, "/rtx/rendermode", "RaytracedLighting")
787+
if self.carb_settings.get("/rtx/rendermode").lower() == "raytracedlighting":
788+
self.carb_settings.set_string("/rtx/rendermode", "RaytracedLighting")
778789

779790
def _set_additional_physx_params(self):
780791
"""Sets additional PhysX parameters that are not directly supported by the parent class."""
@@ -886,10 +897,10 @@ def _setup_anim_recording(self):
886897
self._physxPvdInterface = _physxPvd.acquire_physx_pvd_interface()
887898

888899
# Set carb settings for the output path and enabling pvd recording
889-
set_carb_setting(
890-
self.carb_settings, "/persistent/physics/omniPvdOvdRecordingDirectory", self._anim_recording_output_dir
900+
self.carb_settings.set_string(
901+
"/persistent/physics/omniPvdOvdRecordingDirectory", self._anim_recording_output_dir
891902
)
892-
set_carb_setting(self.carb_settings, "/physics/omniPvdOutputEnabled", True)
903+
self.carb_settings.set_bool("/physics/omniPvdOutputEnabled", True)
893904

894905
def _update_usda_start_time(self, file_path, start_time):
895906
"""Updates the start time of the USDA baked anim recordingfile."""
@@ -954,7 +965,7 @@ def _finish_anim_recording(self):
954965
)
955966

956967
# Disable recording
957-
set_carb_setting(self.carb_settings, "/physics/omniPvdOutputEnabled", False)
968+
self.carb_settings.set_bool("/physics/omniPvdOutputEnabled", False)
958969

959970
return result
960971

source/isaaclab/test/deps/isaacsim/check_camera.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import omni.replicator.core as rep
5555
from isaacsim.core.api.world import World
5656
from isaacsim.core.prims import Articulation, RigidPrim, SingleGeometryPrim, SingleRigidPrim
57-
from isaacsim.core.utils.carb import set_carb_setting
5857
from isaacsim.core.utils.viewports import set_camera_view
5958
from PIL import Image, ImageChops
6059
from pxr import Gf, UsdGeom
@@ -85,7 +84,7 @@ def main():
8584
world.get_physics_context().enable_flatcache(True)
8685
# Enable hydra scene-graph instancing
8786
# this is needed to visualize the scene when flatcache is enabled
88-
set_carb_setting(world._settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
87+
world._settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)
8988

9089
# Populate scene
9190
# Ground

source/isaaclab/test/deps/isaacsim/check_floating_base_made_fixed.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import omni.physx
4141
from isaacsim.core.api.world import World
4242
from isaacsim.core.prims import Articulation
43-
from isaacsim.core.utils.carb import set_carb_setting
4443
from isaacsim.core.utils.viewports import set_camera_view
4544
from pxr import PhysxSchema, UsdPhysics
4645

@@ -78,7 +77,7 @@ def main():
7877

7978
# Enable hydra scene-graph instancing
8079
# this is needed to visualize the scene when flatcache is enabled
81-
set_carb_setting(world._settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
80+
world._settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)
8281

8382
# Spawn things into stage
8483
# Ground-plane

source/isaaclab/test/deps/isaacsim/check_legged_robot_clone.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
from isaacsim.core.api.world import World
5454
from isaacsim.core.cloner import GridCloner
5555
from isaacsim.core.prims import Articulation
56-
from isaacsim.core.utils.carb import set_carb_setting
5756
from isaacsim.core.utils.viewports import set_camera_view
5857

5958
# import logger
@@ -91,7 +90,7 @@ def main():
9190

9291
# Enable hydra scene-graph instancing
9392
# this is needed to visualize the scene when flatcache is enabled
94-
set_carb_setting(world._settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
93+
world._settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)
9594

9695
# Create interface to clone the scene
9796
cloner = GridCloner(spacing=2.0)

source/isaaclab/test/deps/isaacsim/check_ref_count.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import isaacsim.core.utils.prims as prim_utils
4747
from isaacsim.core.api.simulation_context import SimulationContext
4848
from isaacsim.core.prims import Articulation
49-
from isaacsim.core.utils.carb import set_carb_setting
5049

5150
# import logger
5251
logger = logging.getLogger(__name__)
@@ -112,7 +111,7 @@ def main():
112111

113112
# Enable hydra scene-graph instancing
114113
# this is needed to visualize the scene when flatcache is enabled
115-
set_carb_setting(sim._settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
114+
sim._settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)
116115

117116
# Create a dummy tensor for testing
118117
# Uncommenting the following line will yield a reference count of 1 for the robot (as desired)

source/isaaclab/test/sensors/check_contact_sensor.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import isaacsim.core.utils.prims as prim_utils
4040
from isaacsim.core.api.simulation_context import SimulationContext
4141
from isaacsim.core.cloner import GridCloner
42-
from isaacsim.core.utils.carb import set_carb_setting
4342
from isaacsim.core.utils.viewports import set_camera_view
4443

4544
import isaaclab.sim as sim_utils
@@ -83,7 +82,7 @@ def main():
8382

8483
# Enable hydra scene-graph instancing
8584
# this is needed to visualize the scene when flatcache is enabled
86-
set_carb_setting(sim._settings, "/persistent/omnihydra/useSceneGraphInstancing", True)
85+
sim._settings.set_bool("/persistent/omnihydra/useSceneGraphInstancing", True)
8786

8887
# Create interface to clone the scene
8988
cloner = GridCloner(spacing=2.0)

source/isaaclab/test/sim/test_simulation_render_config.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import carb
2121
import flatdict
2222
import pytest
23-
from isaacsim.core.utils.carb import get_carb_setting
2423
from isaacsim.core.version import get_version
2524

2625
from isaaclab.sim.simulation_cfg import RenderCfg, SimulationCfg
@@ -142,7 +141,7 @@ def test_render_cfg_presets():
142141
# grab groundtruth from preset
143142
setting_gt = val
144143

145-
setting_val = get_carb_setting(carb_settings_iface, setting_name)
144+
setting_val = carb_settings_iface.get(setting_name)
146145

147146
assert setting_gt == setting_val
148147

0 commit comments

Comments
 (0)