mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 21:11:12 +00:00
正确发送return_info结果
This commit is contained in:
@@ -164,11 +164,11 @@ class MQTTClient:
|
||||
self.client.publish(address, json.dumps(status), qos=2)
|
||||
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:
|
||||
return
|
||||
if return_info is None:
|
||||
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)
|
||||
|
||||
|
||||
@@ -756,9 +756,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
|
||||
goal_handle.succeed()
|
||||
self.lab_logger().info(f"设置动作成功: {action_name}")
|
||||
|
||||
result_values = {
|
||||
"return_value": serialize_result_info(execution_error, execution_success, action_return_value)
|
||||
}
|
||||
result_values = {}
|
||||
for msg_name, attr_name in action_value_mapping["result"].items():
|
||||
if hasattr(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():
|
||||
if attr_name in ["success", "reached_goal"]:
|
||||
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} 完成并返回结果")
|
||||
return result_msg
|
||||
|
||||
@@ -622,7 +622,7 @@ class HostNode(BaseROS2DeviceNode):
|
||||
if uuid_str:
|
||||
for bridge in self.bridges:
|
||||
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:
|
||||
"""取消目标"""
|
||||
|
||||
Reference in New Issue
Block a user