# 集群无人机分布式编队飞行上位机系统
## 项目目的
室外场景中集群无人机基于GPS的分布式编队飞行,项目工作:
1. 分布式自主协同编队
2. 集群内无人机之间的避碰
3. 实时路径规划
4. 无人机与地面站、无人机之间的实时信息传输
## 为何开源
无人机协同编队控制系统涵盖控制与通信,其中控制部分包括无人机的路径规划和轨迹跟随控制;通信部分包括多架无人机之间的通信、无人机与地面站之间的通信。我们构建了集群无人机编队飞行的基础平台,实现了集群的三维队形生成与队形切换、合作式避碰、编队保持、通信协议以及上位机系统。内嵌离线谷歌地图的上位机使用Qt开发,可实时监控各无人机的状态,并能随时接管无人机的控制;同时,上位机系统包括三维队形生成与队形切换、目标点匹配、手动设置目标点以及通信协议的功能模块。考虑到QT的跨平台型,开源上位机系统可以给更多的对于集群无人机自主编队飞行感兴趣的开发者们减少前期环境搭建的时间开销,更好地进行集群无人机分布式编队飞行方面的开发,希望更多的对于集群无人机自主飞行感兴趣的开发者们可以一起继承完善该上位机工程,同时对于不同的开发者们,我们允许并且友好的提供通信协议的接口,可以改进我们现有的通信协议,或者采用开发者自己的通信协议(修改或替换UAV_link类的相关函数实现),维护该上位机工程的多态性和可扩展性。
## 流程图
![image](http://ww4.sinaimg.cn/large/006HJ39wgy1ffu7cq4m39j30ia0lf74x.jpg)
## 上位机工程
地面站,也就是地面的基站,它能够通过GPS和串口通信实时监测无人机当前的飞行路线、状况等,能够发送命令,控制调度无人机群,也能够存储无人机群的飞行数据以进行后期的分析等。
考虑到QT的跨平台型,上位机工程由Qt编写。测试使用系统为Windows7、Windows8.1和Windows10,使用的Qt Creator版本为Qt Creator 3.4.2(opensource)。Qt Creator编辑文本格式为UTF-8。
### 功能说明
1. 上位机与无人机进行串口通信
2. 上位机实时监测无人机位置并在地图上显示
3. 上位机可以发送相关指令控制无人机
4. 上位机实时显示无人机状态,和具体坐标
地面站上位机实现人机交互功能主要依赖于三个子界面:串口配置页、地图页和状态页。
页面| 功能
---|---
串口页| 串口配置;与433M无线模块通信,获取无人机通信网络中的信息,并将地面站的信息发送到无人机通信网络中
地图页| 监测:将串口页获取到的无人机位置信息实时显示到google离线地图上
地图页|控制:发送起飞、降落、停止、执行任务(包括编队飞行、切换队形、手动设置目标点)等命令;从google地图上获取目标位置,并通过串口页发送出去
状态页| 从串口页获取到所有无人机的当前状态信息,并定时刷新
地图页采取在QT中嵌套html网页框架的形式,实现基于谷歌电子地图瓦片的离线地图功能,主要涉及到相关js方面的技术,允许上位机在户外实测时离线的情况下加载当前地图。
### 串口页
![aa](http://ww1.sinaimg.cn/large/006HJ39wgy1fftd1pvgs6j30r40hqwg1.jpg)
### 地图页
![aa](http://ww1.sinaimg.cn/large/006HJ39wgy1ffu73fz8iqj30w60k3dhp.jpg)
### 状态页
![aa](http://ww3.sinaimg.cn/large/006HJ39wgy1fftd24c61dj30r40hq763.jpg)
### 上位机工程类图
![Markdown](http://ww4.sinaimg.cn/large/006HJ39wgy1ffu4drmhh6j30up04bt8n.jpg)
### 相关文件说明
文件名 | 功能说明
---|---
parameter.h | parameter.h为通信协议基本变量和参数文件
commons.h | commons.h为数据类型定义文件
MainWidget类 | MainWidget为主界面,生成MapPage、SerialportPage、StatusPage这三个子界面,只完成界面布置功能
MapPage类 | MapPage为地图界面,用于显示离线地图和无人机当前位置,目标位置以及飞行轨迹等相关信息
SerialportPage类 | SerialportPage为串口调试界面,用于实现串口的基本功能,包括串口配置,通信的收发功能。SerialportPage包含串口类(Win_Qextserialport)和通信协议类(UAV_link)
UAV_link类 |UAV_link类为通信协议类,继承,本上位机充当飞行器编队分布式系统中虚拟飞行器,通信协议类用于解析数据包,向编队中的其他飞行器发送指令等。UAV_link包含parameter.h和commons.h。
protocol类 | protocol作为UAV_link的父类,用于实现串口的接收数据updateDataBuff和发送数据sendData的函数,UAV_link继承后,可以调用上面俩个函数进行串口通信
### 通信协议
无人机系统通信协议使用了自己的通信协议,分布式无人机编队系统要求每个无人机都知道其他无人机的数据以及地面站发送来的命令。在通信网络中,我们将地面站设置为0号无人机。
无人机通信数据包如表所示:
![image](http://ww1.sinaimg.cn/large/006HJ39wgy1ffu63a0bozj30j103n3yg.jpg)
分布式广播通信
![image](http://ww1.sinaimg.cn/large/006HJ39wgy1ffu67kv5xrj30gf0e7mxm.jpg)
当所有无人机都开始运行程序准备就绪后,点击地面站检查通信,地面站会触发通信。为了保证通信网络中的各个节点按照一定顺序发送信息,避免因为同时发送,导致信号干扰出现丢包或者误码。所以,我们制定了通信协议如上图所示:理想情况下,第N架无人机发送信息,通信网络中其他无人机接收信息,但只有第N+1架无人机收到信息后开始发送自己的信息(由于是闭环网络,应注意临界条件),当第N架无人机收到第N+1架无人机发出的信息后,视为第N架无人机成功应答。
### 自定义通信协议
需要一个类继承protocol类,得到父类关于串口的接收数据和发送数据的方法,接收到串口的原始数据后,根据开发者自己的协议设计,添加对串口数据进行具体处理的函数(当前版本采用了Data_Receive_Anl()方法),得到解析后的数据,进行下一步动作,实现通信协议的多态和可扩展性。
### 硬件部分
- 433M无线通信模块
- GPS模块
- 树莓派3代
## 问题与展望
进一步完善上位机系统,主要可以分为以下几个目标,根据需要实现:
1. 关联数据库记录飞行状态相关数据。
2. opengl多角度三维显示无人机飞行轨迹。
3. 进一步完善通信协议,当前采用的简单轮询方式并且每个数据包固定字节长度,效率较低开销较大。
4. 当前采用了CVT算法进行最优目标点匹配,可以新增相关避障算法,仿真通过后,实物上机测试算法。
## 实验结果
### 检查通信
![image](http://ww3.sinaimg.cn/large/006HJ39wgy1ffu7q7hzpgj30gi0bf438.jpg)
### 起飞
![image](http://ww3.sinaimg.cn/large/006HJ39wgy1ffu7qr34fcj30f708btam.jpg)
### 选取队形
![image](http://ww4.sinaimg.cn/large/006HJ39wgy1ffu7rfr0lgj30c80aot9u.jpg)
### 队形切换
![image](http://ww2.sinaimg.cn/large/006HJ39wgy1ffu7s02ml9j30kn0b9q4p.jpg)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目),含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业使用,该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目)基于Qt+C++开发的室外基于
资源推荐
资源详情
资源评论
收起资源包目录
基于Qt+C++开发的室外基于GPS的无人机分布式编队避障飞行项目源码(高分项目) (2000个子文件)
libCVT.a 541KB
cell.cc 67KB
v_compute.cc 41KB
v_base_wl.cc 39KB
container_prd.cc 28KB
container.cc 22KB
unitcell.cc 9KB
pre_container.cc 8KB
c_loops.cc 5KB
wall.cc 5KB
v_base.cc 4KB
common.cc 2KB
voro++.cc 483B
qrc_Ground_Station.cpp 47KB
win_qextserialport.cpp 34KB
mappage.cpp 20KB
serialportpage.cpp 11KB
uav_link.cpp 11KB
statuspage.cpp 8KB
moc_mappage.cpp 7KB
qextserialbase.cpp 6KB
parameter.cpp 5KB
moc_serialportpage.cpp 4KB
moc_statuspage.cpp 4KB
moc_returnvlc.cpp 4KB
moc_qextserialbase.cpp 4KB
moc_mainwidget.cpp 4KB
CVT.cpp 3KB
qextserialport.cpp 3KB
moc_win_qextserialport.cpp 3KB
moc_qextserialport.cpp 3KB
CVT_method.cpp 3KB
mainwidget.cpp 2KB
CVT_shape.cpp 2KB
protocol.cpp 659B
returnvlc.cpp 438B
main.cpp 172B
popup_laye.css 2KB
object_script.Ground_Station.Debug 584B
qextserialbase.h 7KB
win_qextserialport.h 5KB
parameter.h 4KB
mappage.h 2KB
serialportpage.h 1KB
protocol.h 1KB
statuspage.h 1KB
qextserialport.h 865B
uav_link.h 823B
commons.h 600B
mainwidget.h 538B
returnvlc.h 466B
container.hh 28KB
container_prd.hh 26KB
cell.hh 22KB
voro++.hh 19KB
c_loops.hh 15KB
rad_option.hh 7KB
pre_container.hh 6KB
v_compute.hh 5KB
config.hh 5KB
wall.hh 4KB
v_base.hh 3KB
unitcell.hh 2KB
common.hh 2KB
worklist.hh 995B
CVT.hpp 1KB
CVT_method.hpp 1KB
CVT_shape.hpp 881B
test.html 18KB
upper_monitor.ico 69KB
jquery.js 91KB
controls.js 57KB
common.js 45KB
util.js 45KB
poly.js 42KB
main.js 36KB
map.js 35KB
directions.js 31KB
onion.js 23KB
marker.js 22KB
复件 map_helper.js 13KB
kml.js 11KB
infowindow.js 10KB
drawing_impl.js 10KB
places_impl.js 9KB
map_helper.js 8KB
popup_layer.js 6KB
geometry.js 5KB
stats.js 4KB
usage.js 4KB
mapapi_3.12.15.js 3KB
search_impl.js 2KB
geocoder.js 2KB
distance_matrix.js 2KB
places.js 2KB
overlay.js 1KB
elevation.js 1KB
layers.js 542B
maxzoom.js 468B
drawing.js 404B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
yava_free
- 粉丝: 2847
- 资源: 1107
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功