diff --git a/source/isaaclab_mimic/changelog.d/sylvesterkaczmarek-nested-randomizable-inputs.rst b/source/isaaclab_mimic/changelog.d/sylvesterkaczmarek-nested-randomizable-inputs.rst new file mode 100644 index 000000000000..76e3b4d565ee --- /dev/null +++ b/source/isaaclab_mimic/changelog.d/sylvesterkaczmarek-nested-randomizable-inputs.rst @@ -0,0 +1,4 @@ +Fixed +^^^^^ + +* Fixed nested randomizable parameters being omitted from the list returned by ``interactive_update_randomizable_params()``. diff --git a/source/isaaclab_mimic/isaaclab_mimic/datagen/utils.py b/source/isaaclab_mimic/isaaclab_mimic/datagen/utils.py index 8f940b9e5f7a..fd0db35cebc4 100644 --- a/source/isaaclab_mimic/isaaclab_mimic/datagen/utils.py +++ b/source/isaaclab_mimic/isaaclab_mimic/datagen/utils.py @@ -150,7 +150,9 @@ def interactive_update_randomizable_params( keys = current_path.split(".") if isinstance(allowed_range, dict): - interactive_update_randomizable_params(event_term, event_term_name, allowed_range, current_path, env) + inputs.extend( + interactive_update_randomizable_params(event_term, event_term_name, allowed_range, current_path, env) + ) else: try: current_val = get_nested_value(event_term.params, keys) diff --git a/source/isaaclab_mimic/test/test_datagen_utils.py b/source/isaaclab_mimic/test/test_datagen_utils.py new file mode 100644 index 000000000000..3ad3977feca0 --- /dev/null +++ b/source/isaaclab_mimic/test/test_datagen_utils.py @@ -0,0 +1,28 @@ +# Copyright (c) 2024-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md). +# All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +from types import SimpleNamespace + +import pytest + +from isaaclab_mimic.datagen import utils + +pytestmark = pytest.mark.unit + + +def test_interactive_update_returns_nested_inputs(monkeypatch): + event_term = SimpleNamespace(params={"outer": {"inner": 1.0}, "top": 2.0}) + param_config = { + "outer": {"inner": (0.0, 2.0, 0.1)}, + "top": (0.0, 3.0, 0.1), + } + monkeypatch.setattr(utils, "get_parameter_input", lambda param_name, *args, **kwargs: param_name) + + inputs = utils.interactive_update_randomizable_params(event_term, "randomize", param_config) + + assert inputs == [ + (["outer", "inner"], "outer.inner"), + (["top"], "top"), + ]