import json from dataclasses import asdict from typing import List from agent.config.settings import settings from agent.device import controller from agent.tools.base_tool import BaseTool, ToolResult from core.uas_control import command_registry from core.uas_control.controllers.robot_dog_controller import RobotDogController from core.uas_control.controllers.uav_controller import UAVController from core.uas_control.protocols.mavlink_adapter import MAVLinkAdapter from core.uas_control.protocols.ros_adapter import ROSAdapter from core.uas_control.protocols.simulation_adapter import SimulationAdapter class Tool(BaseTool): name = "uav_get_state" description = ( "获取无人系统当前状态, 例如当前位置等信息" ) parameters = { "type": "object", "properties": { }, "required": [""], } def execute(self) -> ToolResult: if not controller.connect(): return ToolResult(success=False, output="连接无人机失败") try: telemetry = controller.get_telemetry() return ToolResult(success=True, output=json.dumps(telemetry.to_dict(), ensure_ascii=True)) finally: controller.disconnect()