This commit is contained in:
wty-yy
2025-11-28 22:08:32 +08:00
parent 4cc0687114
commit c58ac0ab89
39 changed files with 406 additions and 114 deletions

View File

@@ -14,7 +14,7 @@ from argparse import ArgumentParser
from pathlib import Path
from robogauge import ROBOGAUGE_ROOT_DIR
def pares_path(path):
def parse_path(path):
if "{ROBOGAUGE_ROOT_DIR}" in str(path):
path = str(path).replace("{ROBOGAUGE_ROOT_DIR}", ROBOGAUGE_ROOT_DIR)
return path
@@ -47,10 +47,13 @@ def parse_args():
parser = ArgumentParser()
parameters = [
{"name": "--task-name", "type": str, "default": "base", "help": "Name of the task to run."},
{"name": "--experiment-name", "type": str, "default": "base", "help": "Name of the experiment to run."},
{"name": "--experiment-name", "type": str, "help": "Name of the experiment to run."},
{"name": "--headless", "action": "store_true", "default": False, "help": "Run in headless mode."},
{"name": "--save-video", "action": "store_true", "default": False, "help": "Save video output."},
]
for param in parameters:
parser.add_argument(param['name'], **{k: v for k, v in param.items() if k != 'name'})
return parser.parse_args()
args = parser.parse_args()
if args.experiment_name is None:
args.experiment_name = f"{args.task_name}_exp"
return args

View File

@@ -14,6 +14,7 @@ import time
import logging
from pathlib import Path
from robogauge import ROBOGAUGE_ROOT_DIR
from torch.utils.tensorboard import SummaryWriter
class LogColor:
""" ANSI color codes """
@@ -49,6 +50,10 @@ class ColorFormatter(logging.Formatter):
class Logger:
logger: logging.Logger = None
log_dir: Path = None
writer: SummaryWriter = None
def create(self,
experiment_name,
console_output=True, color_output=True,
@@ -93,6 +98,12 @@ class Logger:
fh = logging.FileHandler(path_log_file, mode=save_file_mode, encoding='utf-8')
fh.setFormatter(file_formatter)
self.logger.addHandler(fh)
def create_tensorboard(self, run_name: str):
if self.writer is not None:
self.writer.close()
self.writer = SummaryWriter(str(self.log_dir / run_name))
self.info(f"Tensorboard writer created at: {self.log_dir / run_name}")
def debug(self, msg, *args, **kwargs):
self.logger.debug(msg, *args, **kwargs, stacklevel=2)
@@ -108,6 +119,19 @@ class Logger:
def critical(self, msg, *args, **kwargs):
self.logger.critical(msg, *args, **kwargs, stacklevel=2)
def log(self, value, tag, step):
""" Log scalar value to tensorboard
Args:
value (float): scalar value
tag (str): tag name
step (int): step number
"""
if self.writer is not None:
self.writer.add_scalar(tag, value, step)
else:
self.warning("Tensorboard writer is not initialized, skipping log.")
logger = Logger()

View File

@@ -33,7 +33,7 @@ class TaskRegister():
robot_cfg = self.robot_cfgs[name]
return sim_cfg, gauger_cfg, robot_cfg
def make_pipeline(self, name, args=None, sim_cfg=None, gauger_cfg=None, robot_cfg=None):
def make_pipeline(self, name, args=None, sim_cfg=None, gauger_cfg=None, robot_cfg=None, run_name='0'):
default_cfgs = self.get_cfgs(name)
if sim_cfg is None:
sim_cfg = default_cfgs[0]
@@ -44,7 +44,7 @@ class TaskRegister():
if args is not None:
self.update_args_to_cfg(sim_cfg, gauger_cfg, robot_cfg, args)
pipeline_class = self.get_pipeline_class(name)
return pipeline_class(sim_cfg, robot_cfg, gauger_cfg)
return pipeline_class(run_name, sim_cfg, robot_cfg, gauger_cfg)
def update_args_to_cfg(self, sim_cfg, gauger_cfg, robot_cfg, args):
if args.headless is not None: