正确发送return_info结果

This commit is contained in:
Xuwznln
2025-06-08 15:06:38 +08:00
parent ab0c4b708b
commit 6a14104e6b
3 changed files with 6 additions and 6 deletions

View File

@@ -164,11 +164,11 @@ class MQTTClient:
self.client.publish(address, json.dumps(status), qos=2) self.client.publish(address, json.dumps(status), qos=2)
logger.critical(f"Device status published: address: {address}, {status}") logger.critical(f"Device status published: address: {address}, {status}")
def publish_job_status(self, feedback_data: dict, job_id: str, status: str, return_info: Optional[dict] = None): def publish_job_status(self, feedback_data: dict, job_id: str, status: str, return_info: Optional[str] = None):
if self.mqtt_disable: if self.mqtt_disable:
return return
if return_info is None: if return_info is None:
return_info = {} return_info = "{}"
jobdata = {"job_id": job_id, "data": feedback_data, "status": status, "return_info": return_info} jobdata = {"job_id": job_id, "data": feedback_data, "status": status, "return_info": return_info}
self.client.publish(f"labs/{MQConfig.lab_id}/job/list/", json.dumps(jobdata), qos=2) self.client.publish(f"labs/{MQConfig.lab_id}/job/list/", json.dumps(jobdata), qos=2)

View File

@@ -756,9 +756,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
goal_handle.succeed() goal_handle.succeed()
self.lab_logger().info(f"设置动作成功: {action_name}") self.lab_logger().info(f"设置动作成功: {action_name}")
result_values = { result_values = {}
"return_value": serialize_result_info(execution_error, execution_success, action_return_value)
}
for msg_name, attr_name in action_value_mapping["result"].items(): for msg_name, attr_name in action_value_mapping["result"].items():
if hasattr(self.driver_instance, f"get_{attr_name}"): if hasattr(self.driver_instance, f"get_{attr_name}"):
result_values[msg_name] = getattr(self.driver_instance, f"get_{attr_name}")() result_values[msg_name] = getattr(self.driver_instance, f"get_{attr_name}")()
@@ -772,6 +770,8 @@ class BaseROS2DeviceNode(Node, Generic[T]):
for attr_name in result_msg_types.keys(): for attr_name in result_msg_types.keys():
if attr_name in ["success", "reached_goal"]: if attr_name in ["success", "reached_goal"]:
setattr(result_msg, attr_name, True) setattr(result_msg, attr_name, True)
elif attr_name == "return_info":
setattr(result_msg, attr_name, serialize_result_info(execution_error, execution_success, action_return_value))
self.lab_logger().info(f"动作 {action_name} 完成并返回结果") self.lab_logger().info(f"动作 {action_name} 完成并返回结果")
return result_msg return result_msg

View File

@@ -622,7 +622,7 @@ class HostNode(BaseROS2DeviceNode):
if uuid_str: if uuid_str:
for bridge in self.bridges: for bridge in self.bridges:
if hasattr(bridge, "publish_job_status"): if hasattr(bridge, "publish_job_status"):
bridge.publish_job_status(result_data, uuid_str, "success", result_data) bridge.publish_job_status(result_data, uuid_str, "success", result_data.get("return_info", "{}"))
def cancel_goal(self, goal_uuid: str) -> None: def cancel_goal(self, goal_uuid: str) -> None:
"""取消目标""" """取消目标"""