diff --git a/unilabos/devices/liquid_handling/prcxi/prcxi.py b/unilabos/devices/liquid_handling/prcxi/prcxi.py index ba3ff6a..446d03c 100644 --- a/unilabos/devices/liquid_handling/prcxi/prcxi.py +++ b/unilabos/devices/liquid_handling/prcxi/prcxi.py @@ -364,8 +364,8 @@ class PRCXI9300TubeRack(TubeRack): def __init__(self, name: str, size_x: float, size_y: float, size_z: float, category: str = "tube_rack", items: Optional[Dict[str, Any]] = None, - ordered_items: Optional[OrderedDict] = None, - ordering: Optional[OrderedDict] = None, + ordered_items: collections.OrderedDict = None, + ordering: Optional[collections.OrderedDict] = None, model: Optional[str] = None, material_info: Optional[Dict[str, Any]] = None, **kwargs): @@ -380,7 +380,7 @@ class PRCXI9300TubeRack(TubeRack): # ordering 的值是字符串,这种情况下我们让 TubeRack 使用默认行为 # 不在初始化时创建 items,而是在 deserialize 后处理 items_to_pass = None - ordering_param = collections.OrderedDict() # 提供空的 ordering 来满足要求 + ordering_param = collections.OrderedDict((k, None) for k in ordering.keys()) # 提供空的 ordering 来满足要求 # 保存 ordering 信息以便后续处理 self._temp_ordering = ordering else: diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index c248882..d8e3f87 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -1468,6 +1468,8 @@ class BaseROS2DeviceNode(Node, Generic[T]): if isinstance(rs, list): for r in rs: res = self.resource_tracker.parent_resource(r) # 获取 resource 对象 + elif type(rs).__name__ == "ResourceHolder": + pass else: res = self.resource_tracker.parent_resource(rs) if id(res) not in seen: diff --git a/unilabos/test/experiments/prcxi_9320_with_res_test.json b/unilabos/test/experiments/prcxi_9320_with_res_test.json index bcb5b08..e7b18d9 100644 --- a/unilabos/test/experiments/prcxi_9320_with_res_test.json +++ b/unilabos/test/experiments/prcxi_9320_with_res_test.json @@ -16283,7 +16283,7 @@ "size_y": 85.8, "size_z": 42.66, "barcode": null, - "category": null, + "category": "tube_rack", "ordering": { "A1": "PlateT6_0_0", "A2": "PlateT6_1_0",