diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index 76dd7649..872bc62e 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -697,7 +697,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): else: final_resource = [convert_resources_to_type([i], final_type)[0] for i in resources_list] try: - action_kwargs[k] = self.resource_tracker.figure_resource(final_resource) + action_kwargs[k] = self.resource_tracker.figure_resource(final_resource, try_mode=True) except Exception as e: self.lab_logger().error(f"物料实例获取失败: {e}\n{traceback.format_exc()}") error_skip = True diff --git a/unilabos/ros/nodes/resource_tracker.py b/unilabos/ros/nodes/resource_tracker.py index 45355f0d..a96c4459 100644 --- a/unilabos/ros/nodes/resource_tracker.py +++ b/unilabos/ros/nodes/resource_tracker.py @@ -36,9 +36,9 @@ class DeviceNodeResourceTracker(object): def figure_resource(self, query_resource, try_mode=False): if isinstance(query_resource, list): - return [self.figure_resource(r) for r in query_resource] + return [self.figure_resource(r, try_mode) for r in query_resource] elif isinstance(query_resource, dict) and "id" not in query_resource and "name" not in query_resource: # 临时处理,要删除的,driver有太多类型错误标注 - return [self.figure_resource(r) for r in query_resource.values()] + return [self.figure_resource(r, try_mode) for r in query_resource.values()] res_id = query_resource.id if hasattr(query_resource, "id") else (query_resource.get("id") if isinstance(query_resource, dict) else None) res_name = query_resource.name if hasattr(query_resource, "name") else (query_resource.get("name") if isinstance(query_resource, dict) else None) res_identifier = res_id if res_id else res_name