base_agent/tools/uav_get_state.py

38 lines
1.2 KiB
Python

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()