base_agent/uas/uas_control/controllers/usv_controller.py

49 lines
1.8 KiB
Python
Raw Normal View History

2026-06-18 03:28:14 +00:00
from __future__ import annotations
from uas.uas_control.base_controller import BaseUASController
from uas.uas_control.command import Command, CommandResult, CommandType, Commands
# ═════════════════════════════════════════════════════════════════
# 扩展示例:自定义无人船控制器(演示扩展性)
# ═════════════════════════════════════════════════════════════════
class USVController(BaseUASController):
"""
无人水面艇USV控制器 扩展示例
演示如何通过继承 BaseUASController 快速接入新设备类型
只需实现 device_type 和设备专有 API
底层协议由 Adapter 屏蔽可复用 MAVLink / ROS / 自定义 SDK
"""
@property
def device_type(self) -> str:
return "usv"
def set_throttle(self, left: float, right: float) -> CommandResult:
"""差速推进(左/右推进器油门,-1.0~1.0"""
return self.send(Commands.custom(
self.device_id, "set_throttle",
left=left, right=right,
))
def anchor(self) -> CommandResult:
"""抛锚(原地保持)"""
return self.send(Commands.custom(
self.device_id, "anchor"
))
def patrol(self, waypoints: list) -> CommandResult:
"""水面巡逻"""
return self.send(Command(
command_type = CommandType.FOLLOW_ROUTE,
target_id = self.device_id,
params = {"waypoints": waypoints, "mode": "patrol"},
))
@property
def device_type(self) -> str:
return "usv"