欢迎来到天天文库
浏览记录
ID:22462990
大小:28.00 KB
页数:7页
时间:2018-10-29
《基于qt的飞行器通用上位机软件设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于Qt的飞行器通用上位机软件设计 摘要针对飞行器上位机控制器的应用需求,设计了一个适用于桌面、移动端、嵌入式平台等的跨平台飞行器上位机软件。本系统基于Qt5.5框架,运用C++语言编写出主程序,在Qt框架中调用百度地图,实现飞行器的路径规划与显示;采用JSON格式自定义的通信协议,实现上、下位机的数据交换和上位机的命令发布。另外,本文还详细讨论了通信时的界面控制逻辑与飞行器安全飞行的控制方案。 【关键词】多旋翼飞行器上位机图形视图框架数据传输协议 Qt是一个由Trolltech公司开发的,为桌面,移动端,嵌入式设计的跨平台的应用程序框架,支持包括Linux,OSX,Windo
2、ws,VxWorks,QNX,Android,iOS,BlackBerry,SailfishOS等平台。Qt本身不是一种编程语言,它是一个用C++写的框架。预处理器(MOC元对象编译器)被用于利用某些特征(例如信号和槽)来拓展C++语言。在编译步骤中,MOC解析用Qt扩展的C++源文件并从中生成符合标准的C++的源文件。因此框架本身和应用程序/库使用它可以通过任何符合标准的C++编译器例如Clang,GCC,ICC,MinGW和MSVC。 多旋翼飞行器由于其能够垂直起降,并且具有机动灵活的特点,不仅广泛应用于军事、农业、商业等领域,而且近些年逐渐进入大众的视野里,成为普通百姓也能购
3、买、操作的机械“玩具”。但由于多旋翼飞行器的旋翼转速极快,如果误操作或者飞行器失控很容易发生危险;市面上也很少有能够支持多品牌、多种多旋翼飞行器的上位机程序。为了解决这些问题,本文基于Qt平台设计了一种控制简单、操作安全、用户体验较好的通用飞行器上位机系统。 1通信原理介绍 1.1数据传输系统 本文采用的是一个主从式的数据传输系统。主设备(上位机)先对数据进行处理,然后再向从设备(下位机)发送所要执行的命令;从设备接收到数据后分析是哪种命令,接着发送已接收到的信号和相关的信息给主设备;主设备接收到从设备已接收的信号后,开始重复第一步,依次循环。数据传输系统的流程图如图1所示。
4、 1.2数据传输协议 本文采用的通信协议利用的是轻量级数据交换格式JSON,具体交换内容如表1所示。 2上位机软件设计 上位机软件的主要功能结构图如图2所示。 采用Qt框架,C++语言实现的上位机软件,主要包括以下窗口: 2.1设置窗口 主要实现通信前对各种相关数据的设置和路径规划,同时也将相关信息在窗口中显示给用户,主要包括以下界面: 2.1.1基本设置界面 主要实现对通信所需的各个数据的初始化和电量显示,主要包括以下功能(界面如图3所示): (1)串口设置:通过调用Qt的 串口库来对串口的几个参数(串口号,波特率,数据位,停止位,校验位,流控)进行设置,用户可
5、以在设置好参数后,点击打开串口按钮开始通信。 (2)安全相关提示设置:可在次部分对失控行为,低电量、超低电量提示进行设置,也可以在次部分看到电池电量,保证飞行器的安全。 2.1.2路径设置界面 主要实现在开始任务前对飞行路径的设置,主要包括以下功能(界面如图4所示): (1)地图显示:通过调用Qt的库加载在线地图,地图里包括操作手当前位置、飞行器当前位置和飞行器的行动轨迹。 (2)飞行路径设置:用户可以通过点击地图来规划飞行器的飞行轨迹,也可以按下旁边的删除一个/删除全部按钮来对之前点击的轨迹进行修改,主要通过修改.html的代码实现。 2.2控制窗口 主要实现通信时对
6、各种相关部件的控制,同时也将相关信息在窗口中显示给用户,主要包括以下功能(界面如图5所示): (1)云台控制:用户可以通过点击其中的按钮,来改变云台的状态(光圈,变倍,焦距,方向)并保存至本地,每次交换数据结束后自动清空此类数据。 (2)任务指令发布:提供8个指令方便用户操控飞行器,当用户点击按钮后,根据用户所要发布的指令,读取相关本地数据,自动构成一个符合JSON要求的字符串并通过串口发送出去。 (3)高度速度控制:用户可以通过滑动控件来改变飞行器的高度和速度。 (4)相关信息显示:在每次交换信息之后,将新传来的关键数据显示出来,方便用户在控制飞行器时实时的获取飞行器的关键
7、信息。 3关键技术的实现 3.1地图的导入和交互 要想在Qt框架中导入百度地图,首先要到百度地图API官网上注册一个密钥,可在通过其网站自动生成一个在线地图的.html文件,也可自己编写;然后在Qt设计师界面创建一个QWebView的控件,再将QWebView控件中URL选项填入之前生成的.html文件地址,注意要调用此控件的前提是在.pro文件里添加一行QT+=webkitwidgets;接着可以修改之前的.html文件,通过百度地图的API,设计
此文档下载收益归作者所有