注册很久了,一直只是查找一些资源,实际用的不多。借着这次项目的机会,顺便记录下开发过程,聊表以记促学吧。
先说说大致的想法,项目整体分三部分:控制中心-->工作站-->硬件,这么设想的目的是硬件部分包含不同品牌、不同型号的无人机、机巢、负载,所支持SDK的平台有window、linux、mac,Mobile等,所以在控制中心与硬件中间加入一级工作站,由工作站负责具体控制无人机及机巢及气象站,控制中心与工作站根据自定义协议通信,工作站起到一个中间件的作用。工作站与飞机、机巢、气象站是1对1模式,后续增加新硬件,只需增加工作站加一套硬件。
本文档主要针对控制中心的上位机软件,目标是开发一个类似地面站的软件系统,实现调度无人机来按任务航线巡检的功能。开发平台打算用VS2019+QT5+MYSQL5.7。C/S结构,Client实现用户交互,Server做数据处理及跟工作站交互。
大概功能:1、登录权限控制。目前计划分3级权限,管理员,操作员,用户。2、巡检任务指挥调度。负责调度每架飞机的巡检任务,航线的上传下载,巡检任务的一键启动3、任务航线规划。航线的编辑、保存、上传、下载4、任务数据综合分析。综合任务的图片、视频、飞行数据进行统计分析。5、显示:地图显示任务轨迹、实时视频、气象信息、飞机状态、机巢状态。6、根据协议提供API二次开发接口。7、自动升级功能。8、后期考虑:手机端、虚拟摇杆及视觉分析功能。9、日志及调试。
数据库设计:用户表、工作站表、无人机表、机巢表、电池表、航线表、任务表、操作记录表、系统配置表。
大概模块:
界面UI类:客户端界面布局的实现、资源的分配、调用
User类:封装用户属性及增删操作
设备信息类:封装设备属性 get set方法
地图模块:加载地图数据、刷新位置信息在地图显示
视频模块:封装视频流的显示、存储、文件播放
通讯模块:封装通讯的连接、断开、收发操作
DB类:封装数据库操作:连接、断开、执行
日志及调试类:记录系统关键日志及调试信息
Settings类:封装对系统设置参数的保存与读取
Update模块:客户端自动更新的检测与升级
通信方面:
基于TCP协议的socket网络通信,server端开启服务,监听端口,维护与client和工作站的连接,转发客户端对飞机、机巢的控制指令,转发飞机、机巢等实时状态至客户端。
协议:自定义协议格式
名称 | 帧头 | 目的地址 | 命令号 | 数据长度 | 数据内容 | 校验和 | 帧尾 | ||
字节长度 | 2 | 1 | 1 | 1 | n | 1 | 2 | ||
示例 |
大概流程: