38 lines
1.2 KiB
Python
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()
|
||
|
|
|