mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01: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)
|
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)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
"""取消目标"""
|
"""取消目标"""
|
||||||
|
|||||||
Reference in New Issue
Block a user