项目概述
开发了一款基于ArduPilot的无人机自动化任务系统,支持火点检测、自动航线执行、灭火弹投放和实时位置调整。该系统集成MAVLink通信、MQTT消息队列、红外(IR)相机分析和WebSocket服务,适用于森林防火或应急响应场景。系统通过SITL模拟或真实飞行控制器实现自动起飞、航点飞行、悬停投弹和安全返航,同时支持摇杆覆盖控制和IR精细定位,确保无人机精准响应火点事件。
核心功能
自动任务执行:检测到火点后自动起飞、切换模式(LOITER/AUTO)、飞向目标、悬停并投弹,最后返航着陆,支持参数配置如速度、加速度和返航高度。
摇杆覆盖控制:通过专用MAVLink端口(14553)接收MQTT摇杆指令,实现RC通道覆盖,支持限频发送和模式保护(如禁用通道5防切换)。
IR位置调整:使用红外相机检测最高温像素,计算偏移角度/距离,通过位置目标命令精细调整无人机到火点正上方,支持优先最高温或中心热点。
WebSocket服务:实时推送OSD数据、目标识别结果和服务回复,支持命令下发(如直播、起飞、投弹),集成FastAPI CRUD API管理无人机列表。
MQTT服务:订阅多无人机话题,事件数据存入Redis。
技术栈
编程语言:Python 3
通信协议:MAVLink (Pymavlink库,支持SITL/真实FC),MQTT (Paho库,支持认证/订阅)
Web框架:FastAPI (API/CRUD),SocketIO (实时推送)
数据存储:Redis (实时缓存OSD/事件,过期机制),PostgreSQL (持久化无人机列表)
图像/串口处理:OpenCV (IR像素分析),PySerial (串口命令/CRC校验)
线程/并发:Threading (解耦MQTT/处理队列),Asyncio (WebSocket事件)
其他:JSON解析,UUID生成,CRC16-Modbus校验,环境变量配置(IS_TEST切换话题)
补充说明
该系统优化了实时性和安全性,通过队列解耦避免阻塞,支持重试机制(如任务上传)和fallback位置处理。适用于ArduPilot v4.7.0+,易扩展到多火点/多机协作场景。设计注重兼容性(如参数映射PX4→ArduPilot),UI/前端可通过WebSocket集成实时监控,潜在应用包括应急无人机编队。