Xarm-DataCollection/ufactory_lerobot/utils/utils.py
Vinman 4467e19322 feat(robot): 添加 uFactory 机械臂完整功能包
包含机器人控制(uf_robot)、遥操作(teleoperators)、
摄像头(cameras)、设备驱动(devices)和执行脚本(scripts)等模块。
2026-06-11 11:55:23 +08:00

19 lines
978 B
Python

import importlib
# recursive call, inspired from gello_software:
def instantiate_from_dict(cfg, ignore_cameras=False):
"""Instantiate objects from configuration."""
if isinstance(cfg, dict) and "_target_" in cfg:
module_path, class_name = cfg["_target_"].rsplit(".", 1)
cls = getattr(importlib.import_module(module_path), class_name)
kwargs = {k: v for k, v in cfg.items() if k != "_target_"}
# pp_dict ={k: instantiate_from_dict(v, ignore_cameras) for k, v in kwargs.items()}
# print(pp_dict)
return cls(**{k: {} if ignore_cameras and k == 'cameras' else instantiate_from_dict(v, ignore_cameras) for k, v in kwargs.items()})
elif isinstance(cfg, dict):
return {k: {} if ignore_cameras and k == 'cameras' else instantiate_from_dict(v, ignore_cameras) for k, v in cfg.items()}
elif isinstance(cfg, list):
return [instantiate_from_dict(v, ignore_cameras) for v in cfg]
else:
return cfg