This commit is contained in:
sontolau 2026-06-16 10:54:12 +08:00
parent 246b2a485f
commit 0117e2ad82
3 changed files with 20 additions and 19 deletions

View File

@ -1,7 +1,7 @@
from typing import List from typing import List
from agent.device import controller from agent.device import controller
from agent.tools.base_tool import BaseTool, ToolResult from agent.tools.base_tool import BaseTool, ToolResult
from core.uas_control.command import CommandResult
class Tool(BaseTool): class Tool(BaseTool):
@ -30,13 +30,14 @@ class Tool(BaseTool):
def execute(self, command: str, params: dict={}, actions: List[object]=()) -> ToolResult: def execute(self, command: str, params: dict={}, actions: List[object]=()) -> ToolResult:
if not controller.connect(): if not controller.is_connected:
return ToolResult(success=False, output="连接无人机失败") if not controller.connect():
return ToolResult(success=False, output="连接无人机失败")
command_handler = getattr(controller, command)
try: try:
command_handler = getattr(controller, command) result = command_handler(**params)
try: assert isinstance(result, CommandResult)
return ToolResult(success=True, output=str(command_handler(**params)))
except Exception as e: return ToolResult(success=result.success, output=result.message)
return ToolResult(success=False, output=str(e)) except Exception as e:
finally: return ToolResult(success=False, output=str(e))
controller.disconnect()

View File

@ -27,11 +27,11 @@ class Tool(BaseTool):
} }
def execute(self) -> ToolResult: def execute(self) -> ToolResult:
if not controller.connect(): if not controller.is_connected:
return ToolResult(success=False, output="连接无人机失败") if not controller.connect():
return ToolResult(success=False, output="连接无人机失败")
try: try:
telemetry = controller.get_telemetry() telemetry = controller.get_telemetry()
return ToolResult(success=True, output=json.dumps(telemetry.to_dict(), ensure_ascii=True)) return ToolResult(success=True, output=json.dumps(telemetry.to_dict(), ensure_ascii=True))
finally: except Exception as e:
controller.disconnect() return ToolResult(success=False, output=str(e))

View File

@ -17,8 +17,10 @@ class Tool(BaseTool):
解决Arming denied: Resolve system health failures first 解决Arming denied: Resolve system health failures first
""" """
# 等待健康数据 # 等待健康数据
if not controller.is_connected:
if not controller.connect():
return ToolResult(success=False, output="连接设备失败")
assert controller.connect(), "连接应成功"
try: try:
connection = controller.adapter.get_connection() connection = controller.adapter.get_connection()
check_list = [] check_list = []
@ -119,5 +121,3 @@ class Tool(BaseTool):
return ToolResult(success=True, output="\n".join(check_list)) return ToolResult(success=True, output="\n".join(check_list))
except Exception as e: except Exception as e:
return ToolResult(success=False, output=str(e)) return ToolResult(success=False, output=str(e))
finally:
controller.disconnect()