From f2b993643f82da172565cadc3919be69ec82f993 Mon Sep 17 00:00:00 2001 From: Xuwznln <18435084+Xuwznln@users.noreply.github.com> Date: Wed, 7 Jan 2026 19:40:29 +0800 Subject: [PATCH] Fix drag materials. --- unilabos/ros/nodes/base_device_node.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index 30c2b88..e810b0b 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -796,7 +796,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): } def _handle_update( - plr_resources: List[ResourcePLR], tree_set: ResourceTreeSet, additional_add_params: Dict[str, Any] + plr_resources: List[Union[ResourcePLR, ResourceDictInstance]], tree_set: ResourceTreeSet, additional_add_params: Dict[str, Any] ) -> Dict[str, Any]: """ 处理资源更新操作的内部函数 @@ -810,6 +810,9 @@ class BaseROS2DeviceNode(Node, Generic[T]): 操作结果字典 """ for plr_resource, tree in zip(plr_resources, tree_set.trees): + if isinstance(plr_resource, ResourceDictInstance): + self._lab_logger.info(f"跳过 非资源{plr_resource.res_content.name} 的更新") + continue states = plr_resource.serialize_all_state() original_instance: ResourcePLR = self.resource_tracker.figure_resource( {"uuid": tree.root_node.res_content.uuid}, try_mode=False @@ -889,7 +892,12 @@ class BaseROS2DeviceNode(Node, Generic[T]): elif action == "update": if tree_set is None: raise ValueError("tree_set不能为None") - plr_resources = tree_set.to_plr_resources() + plr_resources = [] + for tree in tree_set.trees: + if tree.root_node.res_content.type == "device": + plr_resources.append(tree.root_node) + else: + plr_resources.append(ResourceTreeSet([tree]).to_plr_resources()[0]) result = _handle_update(plr_resources, tree_set, additional_add_params) results.append(result) elif action == "remove":