diff --git a/scripts/benchmarks/eval_all_for_newton_alpha_for_scaling.sh b/scripts/benchmarks/eval_all_for_newton_alpha_for_scaling.sh index c375f147b78..dfd99e03073 100755 --- a/scripts/benchmarks/eval_all_for_newton_alpha_for_scaling.sh +++ b/scripts/benchmarks/eval_all_for_newton_alpha_for_scaling.sh @@ -2,7 +2,7 @@ ISAAC_EXEC_SCRIPT=/home/antoiner/Documents/IsaacLab-Internal/isaaclab.sh RSL_SCRIPT=scripts/benchmarks/benchmark_non_rl.py -TASKS="Isaac-Repose-Cube-Allegro-Direct-v0 Isaac-Ant-Direct-v0 Isaac-Cartpole-Direct-v0 Isaac-Cartpole-RGB-Camera-Direct-v0 Isaac-Cartpole-Depth-Camera-Direct-v0 Isaac-Humanoid-Direct-v0 Isaac-Ant-v0 Isaac-Cartpole-v0 Isaac-Humanoid-v0 Isaac-Velocity-Flat-Unitree-A1-v0 Isaac-Velocity-Flat-Anymal-B-v0 Isaac-Velocity-Flat-Anymal-C-v0 Isaac-Velocity-Flat-Anymal-D-v0 Isaac-Velocity-Flat-Cassie-v0 Isaac-Velocity-Flat-G1-v0 Isaac-Velocity-Flat-G1-v1 Isaac-Velocity-Flat-Unitree-Go1-v0 Isaac-Velocity-Flat-Unitree-Go2-v0 Isaac-Velocity-Flat-H1-v0 Isaac-Velocity-Flat-Spot-v0 Isaac-Reach-Franka-v0 Isaac-Reach-UR10-v0" +TASKS="Isaac-Repose-Cube-Allegro-Direct-v0 Isaac-Ant-Direct-v0 Isaac-Cartpole-Direct-v0 Isaac-Humanoid-Direct-v0 Isaac-Ant-v0 Isaac-Cartpole-v0 Isaac-Humanoid-v0 Isaac-Velocity-Flat-Unitree-A1-v0 Isaac-Velocity-Flat-Anymal-B-v0 Isaac-Velocity-Flat-Anymal-C-v0 Isaac-Velocity-Flat-Anymal-D-v0 Isaac-Velocity-Flat-Cassie-v0 Isaac-Velocity-Flat-G1-v0 Isaac-Velocity-Flat-G1-v1 Isaac-Velocity-Flat-Unitree-Go1-v0 Isaac-Velocity-Flat-Unitree-Go2-v0 Isaac-Velocity-Flat-H1-v0 Isaac-Reach-Franka-v0 Isaac-Reach-UR10-v0" NUM_FRAMES=100 NUM_ENVS="1024 2048 4096 8192 16384" TARGET_FOLDER=$1 diff --git a/source/isaaclab/isaaclab/cloner/utils.py b/source/isaaclab/isaaclab/cloner/utils.py index 003d5204f8e..c27326fa55b 100644 --- a/source/isaaclab/isaaclab/cloner/utils.py +++ b/source/isaaclab/isaaclab/cloner/utils.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: BSD-3-Clause +import logging import numpy as np from typing import Any @@ -12,6 +13,9 @@ from isaaclab.utils.timer import Timer +# Import logging +logger = logging.getLogger(__name__) + @Timer(name="replicate_environment", msg="Replicate environment took:", enable=True, format="ms") def replicate_environment( @@ -56,7 +60,7 @@ def replicate_environment( # up_axis sanity check stage_up_axis = stage_info.get("up_axis") if isinstance(stage_up_axis, str) and stage_up_axis.upper() != up_axis.upper(): - print(f"WARNING: up_axis '{up_axis}' does not match USD stage up_axis '{stage_up_axis}'") + logger.warning(f"WARNING: up_axis '{up_axis}' does not match USD stage up_axis '{stage_up_axis}'") with Timer(name="newton_prototype_builder", msg="Prototype Builder took:", enable=True, format="ms"): # Get child xforms from the prototype path diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index 275a0ccac5f..9cb6f855f79 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -111,12 +111,12 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs torch.cuda.set_device(self.device) # print useful information - print("[INFO]: Base environment:") - print(f"\tEnvironment device : {self.device}") - print(f"\tEnvironment seed : {self.cfg.seed}") - print(f"\tPhysics step-size : {self.physics_dt}") - print(f"\tRendering step-size : {self.physics_dt * self.cfg.sim.render_interval}") - print(f"\tEnvironment step-size : {self.step_dt}") + logger.info("Base environment:") + logger.info(f"\tEnvironment device : {self.device}") + logger.info(f"\tEnvironment seed : {self.cfg.seed}") + logger.info(f"\tPhysics step-size : {self.physics_dt}") + logger.info(f"\tRendering step-size : {self.physics_dt * self.cfg.sim.render_interval}") + logger.info(f"\tEnvironment step-size : {self.step_dt}") if self.cfg.sim.render_interval < self.cfg.decimation: msg = ( @@ -133,7 +133,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs self.scene = InteractiveScene(self.cfg.scene) self._setup_scene() # attach_stage_to_usd_context() - print("[INFO]: Scene manager: ", self.scene) + logger.info(f"Scene manager: {self.scene}") # set up camera viewport controller # viewport is not available in other rendering modes so the function will throw a warning @@ -158,7 +158,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # note: this activates the physics simulation view that exposes TensorAPIs # note: when started in extension mode, first call sim.reset_async() and then initialize the managers # if builtins.ISAAC_LAUNCHED_FROM_TERMINAL is False: - print("[INFO]: Starting the simulation. This may take a few seconds. Please wait...") + logger.info("Starting the simulation. This may take a few seconds. Please wait...") with Timer("[INFO]: Time taken for simulation start", "simulation_start"): # since the reset can trigger callbacks which use the stage, # we need to set the stage context here @@ -213,7 +213,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # perform events at the start of the simulation if self.cfg.events: # we print it here to make the logging consistent - print("[INFO] Event Manager: ", self.event_manager) + logger.info(f"Event Manager: {self.event_manager}") if "startup" in self.event_manager.available_modes: self.event_manager.apply(mode="startup") @@ -223,7 +223,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs self.metadata["render_fps"] = 1 / self.step_dt # print the environment information - print("[INFO]: Completed setting up the environment...") + logger.info("Completed setting up the environment...") def __del__(self): """Cleanup for the environment.""" diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index d5edf5c6d25..614c9519424 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -122,12 +122,12 @@ def __init__(self, cfg: ManagerBasedEnvCfg): torch.cuda.set_device(self.device) # print useful information - print("[INFO]: Base environment:") - print(f"\tEnvironment device : {self.device}") - print(f"\tEnvironment seed : {self.cfg.seed}") - print(f"\tPhysics step-size : {self.physics_dt}") - print(f"\tRendering step-size : {self.physics_dt * self.cfg.sim.render_interval}") - print(f"\tEnvironment step-size : {self.step_dt}") + logger.info("Base environment:") + logger.info(f"\tEnvironment device : {self.device}") + logger.info(f"\tEnvironment seed : {self.cfg.seed}") + logger.info(f"\tPhysics step-size : {self.physics_dt}") + logger.info(f"\tRendering step-size : {self.physics_dt * self.cfg.sim.render_interval}") + logger.info(f"\tEnvironment step-size : {self.step_dt}") if self.cfg.sim.render_interval < self.cfg.decimation: msg = ( @@ -149,7 +149,7 @@ def __init__(self, cfg: ManagerBasedEnvCfg): with use_stage(self.sim.get_initial_stage()): self.scene = InteractiveScene(self.cfg.scene) # attach_stage_to_usd_context() - print("[INFO]: Scene manager: ", self.scene) + logger.info(f"Scene manager: {self.scene}") # set up camera viewport controller # viewport is not available in other rendering modes so the function will throw a warning @@ -173,7 +173,7 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # note: this activates the physics simulation view that exposes TensorAPIs # note: when started in extension mode, first call sim.reset_async() and then initialize the managers # if builtins.ISAAC_LAUNCHED_FROM_TERMINAL is False: - print("[INFO]: Starting the simulation. This may take a few seconds. Please wait...") + logger.info("Starting the simulation. This may take a few seconds. Please wait...") with Timer("[INFO]: Time taken for simulation start", "simulation_start"): # since the reset can trigger callbacks which use the stage, # we need to set the stage context here @@ -292,7 +292,7 @@ def export_IO_descriptors(self, output_dir: str | None = None): os.makedirs(output_dir, exist_ok=True) with open(os.path.join(output_dir, "IO_descriptors.yaml"), "w") as f: - print(f"[INFO]: Exporting IO descriptors to {os.path.join(output_dir, 'IO_descriptors.yaml')}") + logger.info(f"Exporting IO descriptors to {os.path.join(output_dir, 'IO_descriptors.yaml')}") yaml.safe_dump(IO_descriptors, f) """ @@ -317,16 +317,16 @@ def load_managers(self): """ # prepare the managers # -- event manager (we print it here to make the logging consistent) - print("[INFO] Event Manager: ", self.event_manager) + logger.info(f"Event Manager: {self.event_manager}") # -- recorder manager self.recorder_manager = RecorderManager(self.cfg.recorders, self) - print("[INFO] Recorder Manager: ", self.recorder_manager) + logger.info(f"Recorder Manager: {self.recorder_manager}") # -- action manager self.action_manager = ActionManager(self.cfg.actions, self) - print("[INFO] Action Manager: ", self.action_manager) + logger.info(f"Action Manager: {self.action_manager}") # -- observation manager self.observation_manager = ObservationManager(self.cfg.observations, self) - print("[INFO] Observation Manager:", self.observation_manager) + logger.info(f"Observation Manager: {self.observation_manager}") # perform events at the start of the simulation # in-case a child implementation creates other managers, the randomization should happen diff --git a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py index f6093b897e2..fe91668c5c6 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py @@ -7,6 +7,7 @@ from __future__ import annotations import gymnasium as gym +import logging import math import numpy as np import torch @@ -20,6 +21,9 @@ from .manager_based_env import ManagerBasedEnv from .manager_based_rl_env_cfg import ManagerBasedRLEnvCfg +# import logger +logger = logging.getLogger(__name__) + class ManagerBasedRLEnv(ManagerBasedEnv, gym.Env): """The superclass for the manager-based workflow reinforcement learning-based environments. @@ -85,7 +89,7 @@ def __init__(self, cfg: ManagerBasedRLEnvCfg, render_mode: str | None = None, ** # -- set the framerate of the gym video recorder wrapper so that the playback speed of the produced video matches the simulation self.metadata["render_fps"] = 1 / self.step_dt - print("[INFO]: Completed setting up the environment...") + logger.info("Completed setting up the environment...") """ Properties. @@ -110,7 +114,7 @@ def load_managers(self): # and the reward manager needs to know the termination manager # -- command manager self.command_manager: CommandManager = CommandManager(self.cfg.commands, self) - print("[INFO] Command Manager: ", self.command_manager) + logger.info(f"Command Manager: {self.command_manager}") # call the parent class to load the managers for observations and actions. super().load_managers() @@ -118,13 +122,13 @@ def load_managers(self): # prepare the managers # -- termination manager self.termination_manager = TerminationManager(self.cfg.terminations, self) - print("[INFO] Termination Manager: ", self.termination_manager) + logger.info(f"Termination Manager: {self.termination_manager}") # -- reward manager self.reward_manager = RewardManager(self.cfg.rewards, self) - print("[INFO] Reward Manager: ", self.reward_manager) + logger.info(f"Reward Manager: {self.reward_manager}") # -- curriculum manager self.curriculum_manager = CurriculumManager(self.cfg.curriculum, self) - print("[INFO] Curriculum Manager: ", self.curriculum_manager) + logger.info(f"Curriculum Manager: {self.curriculum_manager}") # setup the action and observation spaces for Gym self._configure_gym_env_spaces() diff --git a/source/isaaclab/isaaclab/managers/action_manager.py b/source/isaaclab/isaaclab/managers/action_manager.py index 2ea91d0688a..c607ee2567f 100644 --- a/source/isaaclab/isaaclab/managers/action_manager.py +++ b/source/isaaclab/isaaclab/managers/action_manager.py @@ -8,6 +8,7 @@ from __future__ import annotations import inspect +import logging import re import torch import weakref @@ -25,6 +26,9 @@ if TYPE_CHECKING: from isaaclab.envs import ManagerBasedEnv +# import logger +logger = logging.getLogger(__name__) + class ActionTerm(ManagerTermBase): """Base class for action terms. @@ -291,13 +295,13 @@ def get_IO_descriptors(self) -> list[dict[str, Any]]: try: data.append(term.IO_descriptor.__dict__.copy()) except Exception as e: - print(f"Error getting IO descriptor for term '{term_name}': {e}") + logger.warning(f"Failed to get IO descriptor for term '{term_name}': {e}") formatted_data = [] for item in data: name = item.pop("name") formatted_item = {"name": name, "extras": item.pop("extras")} - print(item["export"]) + logger.info(item["export"]) if not item.pop("export"): continue for k, v in item.items(): diff --git a/source/isaaclab/isaaclab/managers/observation_manager.py b/source/isaaclab/isaaclab/managers/observation_manager.py index 014ae2a00b8..bae6890a88c 100644 --- a/source/isaaclab/isaaclab/managers/observation_manager.py +++ b/source/isaaclab/isaaclab/managers/observation_manager.py @@ -8,6 +8,7 @@ from __future__ import annotations import inspect +import logging import numpy as np import torch from collections.abc import Sequence @@ -23,6 +24,9 @@ if TYPE_CHECKING: from isaaclab.envs import ManagerBasedEnv +# import logger +logger = logging.getLogger(__name__) + class ObservationManager(ManagerBase): """Manager for computing observation signals for a given world. @@ -264,7 +268,7 @@ def get_IO_descriptors(self, group_names_to_export: list[str] = ["policy"]): desc.update(overloads) group_data[group_name].append(desc) except Exception as e: - print(f"Error getting IO descriptor for term '{term_name}' in group '{group_name}': {e}") + logger.warning(f"Error getting IO descriptor for term '{term_name}' in group '{group_name}': {e}") # Format the data for YAML export formatted_data = {} for group_name, data in group_data.items(): diff --git a/source/isaaclab/isaaclab/sensors/contact_sensor/contact_sensor.py b/source/isaaclab/isaaclab/sensors/contact_sensor/contact_sensor.py index a2c69edad72..ade372c2994 100644 --- a/source/isaaclab/isaaclab/sensors/contact_sensor/contact_sensor.py +++ b/source/isaaclab/isaaclab/sensors/contact_sensor/contact_sensor.py @@ -8,6 +8,7 @@ from __future__ import annotations +import logging import torch from collections.abc import Sequence from typing import TYPE_CHECKING @@ -26,6 +27,9 @@ if TYPE_CHECKING: from .contact_sensor_cfg import ContactSensorCfg +# import logger +logger = logging.getLogger(__name__) + class ContactSensor(SensorBase): """A contact reporting sensor. @@ -274,7 +278,7 @@ def _create_buffers(self): "Number of bodies is not an integer multiple of the number of environments. Received:" f" {self._num_bodies} bodies and {self._num_envs} environments." ) - print(f"[INFO] Contact sensor initialized with {self._num_bodies} bodies.") + logger.info(f"Contact sensor initialized with {self._num_bodies} bodies.") # Assume homogeneous envs, i.e. all envs have the same number of bodies / shapes # Only get the names for the first env. Expected structure: /World/envs/env_.*/... diff --git a/source/isaaclab/isaaclab/sim/_impl/newton_manager.py b/source/isaaclab/isaaclab/sim/_impl/newton_manager.py index e8f0d7e186d..c2083d015f8 100644 --- a/source/isaaclab/isaaclab/sim/_impl/newton_manager.py +++ b/source/isaaclab/isaaclab/sim/_impl/newton_manager.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: BSD-3-Clause +import logging import numpy as np import re @@ -17,6 +18,9 @@ from isaaclab.sim.utils.stage import get_current_stage from isaaclab.utils.timer import Timer +# import logger +logger = logging.getLogger(__name__) + def flipped_match(x: str, y: str) -> re.Match | None: """Flipped match function. @@ -117,13 +121,13 @@ def start_simulation(cls) -> None: This function finalizes the model and initializes the simulation state. """ - print(f"[INFO] Builder: {NewtonManager._builder}") + logger.info(f"Builder: {NewtonManager._builder}") if NewtonManager._builder is None: NewtonManager.instantiate_builder_from_stage() - print("[INFO] Running on init callbacks") + logger.info("Running on init callbacks") for callback in NewtonManager._on_init_callbacks: callback() - print(f"[INFO] Finalizing model on device: {NewtonManager._device}") + logger.info(f"Finalizing model on device: {NewtonManager._device}") NewtonManager._builder.gravity = np.array(NewtonManager._gravity_vector)[-1] NewtonManager._builder.up_axis = Axis.from_string(NewtonManager._up_axis) with Timer(name="newton_finalize_builder", msg="Finalize builder took:", enable=True, format="ms"): @@ -141,7 +145,7 @@ def start_simulation(cls) -> None: ) else: NewtonManager._contacts = Contacts(0, 0) - print("[INFO] Running on start callbacks") + logger.info("Running on start callbacks") for callback in NewtonManager._on_start_callbacks: callback() if not NewtonManager._clone_physics_only: @@ -186,7 +190,6 @@ def initialize_solver(cls): with Timer(name="newton_initialize_solver", msg="Initialize solver took:", enable=True, format="ms"): NewtonManager._num_substeps = NewtonManager._cfg.num_substeps NewtonManager._solver_dt = NewtonManager._dt / NewtonManager._num_substeps - print(NewtonManager._model.gravity) NewtonManager._solver = NewtonManager._get_solver(NewtonManager._model, NewtonManager._cfg.solver_cfg) if isinstance(NewtonManager._solver, SolverMuJoCo): NewtonManager._needs_collision_pipeline = not NewtonManager._cfg.solver_cfg.get( @@ -291,9 +294,9 @@ def step(cls) -> None: if NewtonManager._cfg.debug_mode: convergence_data = NewtonManager.get_solver_convergence_steps() - # print(f"solver niter: {convergence_data}") + logger.info(f"solver niter: {convergence_data}") if convergence_data["max"] == NewtonManager._solver.mjw_model.opt.iterations: - print("solver didn't converge!", convergence_data["max"]) + logger.warning("solver didn't converge!", convergence_data["max"]) NewtonManager._sim_time += NewtonManager._solver_dt * NewtonManager._num_substeps @@ -402,21 +405,19 @@ def add_contact_sensor( if contact_partners_body_expr is not None and contact_partners_shape_expr is not None: raise ValueError("Only one of contact_partners_body_expr or contact_partners_shape_expr must be provided") if contact_partners_body_expr is None and contact_partners_shape_expr is None: - print(f"[INFO] Adding contact view for {body_names_expr}. It will report contacts with all bodies/shapes.") + logger.info(f"Adding contact view for {body_names_expr}. It will report contacts with all bodies/shapes.") else: if body_names_expr is not None: if contact_partners_body_expr is not None: - print(f"[INFO] Adding contact view for {body_names_expr} with filter {contact_partners_body_expr}.") + logger.info(f"Adding contact view for {body_names_expr} with filter {contact_partners_body_expr}.") else: - print(f"[INFO] Adding contact view for {body_names_expr} with filter {shape_names_expr}.") + logger.info(f"Adding contact view for {body_names_expr} with filter {shape_names_expr}.") else: if contact_partners_body_expr is not None: - print( - f"[INFO] Adding contact view for {shape_names_expr} with filter {contact_partners_body_expr}." - ) + logger.info(f"Adding contact view for {shape_names_expr} with filter {contact_partners_body_expr}.") else: - print( - f"[INFO] Adding contact view for {shape_names_expr} with filter {contact_partners_shape_expr}." + logger.info( + f"Adding contact view for {shape_names_expr} with filter {contact_partners_shape_expr}." ) NewtonManager._newton_contact_sensor = NewtonContactSensor( diff --git a/source/isaaclab/isaaclab/sim/utils/stage.py b/source/isaaclab/isaaclab/sim/utils/stage.py index 80d17331921..a9b487cfdf9 100644 --- a/source/isaaclab/isaaclab/sim/utils/stage.py +++ b/source/isaaclab/isaaclab/sim/utils/stage.py @@ -929,7 +929,7 @@ def remove_deleted_references(): payload_list = prim_spec.GetInfo("payload") if payload_list.deletedItems: deleted_payload_count = len(payload_list.deletedItems) - print(f"Removed {deleted_payload_count} deleted payload items from {prim.GetPath()}") + logger.info(f"Removed {deleted_payload_count} deleted payload items from {prim.GetPath()}") payload_list.deletedItems = [] prim_spec.SetInfo("payload", payload_list) deleted_count += deleted_payload_count @@ -938,10 +938,10 @@ def remove_deleted_references(): references_list = prim_spec.GetInfo("references") if references_list.deletedItems: deleted_ref_count = len(references_list.deletedItems) - print(f"Removed {deleted_ref_count} deleted reference items from {prim.GetPath()}") + logger.info(f"Removed {deleted_ref_count} deleted reference items from {prim.GetPath()}") references_list.deletedItems = [] prim_spec.SetInfo("references", references_list) deleted_count += deleted_ref_count if deleted_count == 0: - print("No deleted references or payloads found in the stage.") + logger.info("No deleted references or payloads found in the stage.") diff --git a/source/isaaclab/isaaclab/utils/pretrained_checkpoint.py b/source/isaaclab/isaaclab/utils/pretrained_checkpoint.py index be883a1f70d..baf48c1f81b 100644 --- a/source/isaaclab/isaaclab/utils/pretrained_checkpoint.py +++ b/source/isaaclab/isaaclab/utils/pretrained_checkpoint.py @@ -7,6 +7,7 @@ import glob import json +import logging import os import isaaclab.utils.assets as assets_utils @@ -45,6 +46,9 @@ "skrl": "agent.agent.experiment.directory", } +# import logger +logger = logging.getLogger(__name__) + def has_pretrained_checkpoints_asset_root_dir() -> bool: """Returns True if and only if /persistent/isaaclab/asset_root/pretrained_checkpoints exists""" @@ -117,14 +121,14 @@ def get_published_pretrained_checkpoint(workflow: str, task_name: str) -> str | resume_path = os.path.join(download_dir, WORKFLOW_PRETRAINED_CHECKPOINT_FILENAMES[workflow]) if not os.path.exists(resume_path): - print(f"Fetching pre-trained checkpoint : {ov_path}") + logger.info(f"Fetching pre-trained checkpoint : {ov_path}") try: resume_path = assets_utils.retrieve_file_path(ov_path, download_dir) except Exception: - print("A pre-trained checkpoint is currently unavailable for this task.") + logger.warning("A pre-trained checkpoint is currently unavailable for this task.") return None else: - print("Using pre-fetched pre-trained checkpoint") + logger.info("Using pre-fetched pre-trained checkpoint") return resume_path diff --git a/source/isaaclab/isaaclab/utils/timer.py b/source/isaaclab/isaaclab/utils/timer.py index 2f16e99b06f..cb7b876d63d 100644 --- a/source/isaaclab/isaaclab/utils/timer.py +++ b/source/isaaclab/isaaclab/utils/timer.py @@ -7,6 +7,7 @@ from __future__ import annotations +import logging import math import time from contextlib import ContextDecorator @@ -14,6 +15,9 @@ import warp as wp +# import logger +logger = logging.getLogger(__name__) + class TimerError(Exception): """A custom exception used to report errors in use of :class:`Timer` class.""" @@ -223,7 +227,7 @@ def __exit__(self, *exc_info: Any): # print message if self._enable: if (self._msg is not None) and (Timer.enable_display_output): - print( + logger.info( self._msg, f"Last: {(self._elapsed_time * self._multiplier):0.6f} {self._format}, " f"Mean: {(self._mean * self._multiplier):0.6f} {self._format}, " diff --git a/source/isaaclab_newton/isaaclab_newton/actuators/actuator_base.py b/source/isaaclab_newton/isaaclab_newton/actuators/actuator_base.py index 0da00d61339..b662466f5ad 100644 --- a/source/isaaclab_newton/isaaclab_newton/actuators/actuator_base.py +++ b/source/isaaclab_newton/isaaclab_newton/actuators/actuator_base.py @@ -5,6 +5,7 @@ from __future__ import annotations +import logging from abc import ABC, abstractmethod from enum import IntEnum from typing import TYPE_CHECKING, ClassVar @@ -19,6 +20,8 @@ if TYPE_CHECKING: from isaaclab_newton.assets.articulation.articulation_data import ArticulationData +logger = logging.getLogger(__name__) + class ActuatorBase(ABC): """Base class for actuator models over a collection of actuated joints in an articulation. @@ -209,7 +212,7 @@ def _parse_joint_parameter(self, cfg_value: float | dict[str, float] | None, ori # parse the parameter if cfg_value is not None: if isinstance(cfg_value, (float, int)): - print(f"Parsing joint parameter: {cfg_value} for joints {self.joint_names}") + logger.info(f"Parsing joint parameter: {cfg_value} for joints {self.joint_names}") if isinstance(cfg_value, IntEnum): cfg_value = int(cfg_value.value) if original_value.dtype is wp.float32: diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/anymal_d/__init__.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/anymal_d/__init__.py index 948283c9a22..d33431d8f45 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/anymal_d/__init__.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config/anymal_d/__init__.py @@ -11,28 +11,28 @@ # Register Gym environments. ## -gym.register( - id="Isaac-Velocity-Rough-Anymal-D-v0", - entry_point="isaaclab.envs:ManagerBasedRLEnv", - disable_env_checker=True, - kwargs={ - "env_cfg_entry_point": f"{__name__}.rough_env_cfg:AnymalDRoughEnvCfg", - "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:AnymalDRoughPPORunnerCfg", - "skrl_cfg_entry_point": f"{agents.__name__}:skrl_rough_ppo_cfg.yaml", - }, -) - - -gym.register( - id="Isaac-Velocity-Rough-Anymal-D-Play-v0", - entry_point="isaaclab.envs:ManagerBasedRLEnv", - disable_env_checker=True, - kwargs={ - "env_cfg_entry_point": f"{__name__}.rough_env_cfg:AnymalDRoughEnvCfg_PLAY", - "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:AnymalDRoughPPORunnerCfg", - "skrl_cfg_entry_point": f"{agents.__name__}:skrl_rough_ppo_cfg.yaml", - }, -) +# gym.register( +# id="Isaac-Velocity-Rough-Anymal-D-v0", +# entry_point="isaaclab.envs:ManagerBasedRLEnv", +# disable_env_checker=True, +# kwargs={ +# "env_cfg_entry_point": f"{__name__}.rough_env_cfg:AnymalDRoughEnvCfg", +# "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:AnymalDRoughPPORunnerCfg", +# "skrl_cfg_entry_point": f"{agents.__name__}:skrl_rough_ppo_cfg.yaml", +# }, +# ) + + +# gym.register( +# id="Isaac-Velocity-Rough-Anymal-D-Play-v0", +# entry_point="isaaclab.envs:ManagerBasedRLEnv", +# disable_env_checker=True, +# kwargs={ +# "env_cfg_entry_point": f"{__name__}.rough_env_cfg:AnymalDRoughEnvCfg_PLAY", +# "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:AnymalDRoughPPORunnerCfg", +# "skrl_cfg_entry_point": f"{agents.__name__}:skrl_rough_ppo_cfg.yaml", +# }, +# ) gym.register(