基于Android系统的手持式无人机地面控制端的设计

2015-09-18 05:53丁梦雨吴嘉扬葛玢
现代计算机 2015年13期
关键词:服务器端蓝牙飞行器

丁梦雨,吴嘉扬,葛玢

(1.西安卫星测控中心渭南测控站,渭南714011;2.西安卫星测控中心,西安710043)

基于Android系统的手持式无人机地面控制端的设计

丁梦雨1,吴嘉扬2,葛玢1

(1.西安卫星测控中心渭南测控站,渭南714011;2.西安卫星测控中心,西安710043)

在Android系统下,利用Eclipse开发平台和蓝牙技术,研究并设计实现一个满足小型无人机飞行需要的地面控制平台,该平台要求在手机终端能搜索连接模拟飞机模块,能对飞行器进行简单的飞行控制以及对飞行参数数据的显示,手机终端飞行参数能通过手动更新或自动更新以保持与飞行器参数一致。从而实现无人机地面站的便携化,为下一步更精准便携式地面站提供相关依据。

Android;无人机;蓝牙;地面控制

0 引言

近年来,无人机的应用与研究在全球范围内不断升温,各个大国也争前恐后地加紧对无人机及其相关方面的研究与开发。无人机地面控制站是在现代无人机不断发展和应用的过程中逐步提出的。为了能够更好地监视无人机的飞行状况并对其进行遥控操作,人们根据不同需求研究设计了相应类型的地面站,用以辅助操作人员对无人机各种飞行数据和任务设备状况等的实时监控。

1 系统设计相关技术

1.1Android平台技术

Android是一款基于Linux开放性内核的开源操作标准平台,它采用了分层的体系结构,可以分为以下4个部分[4]:

(1)Linux内核(Linux Kernel)

Android的核心系统服务是依赖于Linux 2.6内核的,它作为硬件抽象层在手机物理硬件与Android系统的软件栈之间处理核心系统服务。

(2)各种程序库(Libraries)及Android运行环境(RunTime)

Android包含了一组能被Android系统中不同组件所使用的C/C++函数库,它们通过组件间接提供给开发者。Android的运行环境包含了Dalvik虚拟机及一组Java核心函数库,它们可以有效地优化Java程序的运行过程。所有的Android项目都运行在它自己的进程里,而该进程就是一个Dalvik虚拟机的实例。

(3)应用程序框架(Application Framework)

应用程序框架是Google在发布核心应用时所使用的API框架,通过提供这个开源的应用程序框架,能够使Android程序员通过框架直接访问核心应用程序及系统中的API,从而达到简化程序设计工作同时又提高编码效率的目的。

(4)应用程序(Application)

Android应用程序包含了四个构建块,即:Activity、Intent Receiver、Service以及Content Provider。它并不一定要同时包含这四个构建块,因为某些程序可能只用到其中几个构建块的组合[1]。

1.2蓝牙技术

蓝牙(Bluetooth),是一种能够支持设备与设备间短距离通信的无线电技术,是目前使用最为广泛的无线通讯协议,近距离无线通讯的标准[2]。它使用的是2.4GHz的ISM公用频道,该频道可自由使用也不需用户进行申请,频道采用跳频速率为1600跳/秒来进行全双工工作,如此一来蓝牙设备更简单并且性能优越,同时还具备很强的抗干扰能力。根据它不同的发射功率,蓝牙设备之间的有效通讯距离在10m~100m之间不等。蓝牙设备具有比较灵活的组网方式,包括点对点和点对多点的无线连接[6]。

1.3Socket网络编程

蓝牙通讯在Android上的实现,实质就是Socket网络编程的应用。

网络编程,一定离不开套接字(Socket)的使用。套接字接口是应用程序访问下层网络协议的必经之路。套接字是介于应用层和传输层之间的编程接口,它提供了大量的系统调用和相应的数据结构功能,用来访问下层通信协议。套接字在网络模型中的地位如图1所示。

图1 套接字(Socket)在网络模型中的地位

应用程序可以通过套接字(Socket)进行通信,Android系统中的套接字一般分为两种类型:TCP套接字和UDP套接字。前者把消息分解成数据包(数据报,datagrams)并在接收端按照规定的正确顺序把它们重新装配起来。而后者UDP则不提供装配和重传请求功能,它只是向前传送信息包。Socket的基本通信模型如图2所示。

2 系统总体设计

2.1系统设计内容要求

论文设计并制作一款用蓝牙来模拟控制飞行器的手持式地面控制平台,要求在手机终端能搜索连接模拟飞机模块,能对飞行器进行简单的飞行控制以及对飞行参数数据的显示,手机终端飞行参数能通过手动更新或自动更新以保持与飞行器参数一致,能简单控制飞行器的飞行姿态。

要求:

(1)控制范围能在5米~20米间,能越过墙壁等障碍物进行监控;

(2)手机端软件能够显示飞机的速度、飞机姿态(有个平衡点,可以看出飞机现在是左偏右偏还是俯视飞行)、飞机的高度等这些参数手机终端数据与飞行器实际参数实时一致;

(3)手机端软件有个操控界面,需要四个按钮,表示控制飞行器上下左右的键;

(4)手机端软件有个可以显示地图的界面,通过飞行器的经纬度参数,来显示其地理位置;

(5)手机终端软件对不同型号的手机兼容性要好;

(6)实现界面简洁,用户体验良好。

图2 Socket的通信模型

2.2系统总体结构设计

随着无人机系统的快速应用与发展,它所必备的地面控制系统也被提出并逐步向更多元化发展。当代的无人机已经从最原始的单一战斗任务中脱身而出,它装载了各种用途的设备。为了能够更好地对无人机进行遥控操作,人们相继采用了不同形式的地面控制站系统,以便对无人机的飞行状态和任务设备等进行实时的监控[3]。一般而言,地面控制站系统是一个具有遥测数据的实时采集、遥控指令的实时发送和飞行航迹的实时显示等功能的监控系统。该系统是无人机系统中的重要环节,它的稳定与否直接影响着整个系统的性能实现。

拟定基于Android系统的便携式无人机地面控制平台设计的总体框图如图3所示,单片机模拟模块由速度传感器、位移传感器、回转仪感应器、飞机机体部分等组成,主要负责采集飞行器飞行数据和对操控命令作出响应。手机监控终端模块分为三大功能子块,分别负责搜索链接蓝牙设备,显示飞行数据信息和匹配输出操控命令。

图3 系统总体结构图

2.3Android手机端软件设计

便携式无人机地面站,作为连接操作人员与无人机的桥梁,其基本功能要求如下:

(1)能够实现对飞行器姿态的控制,即在任何时间飞行器的前、后、左、右方向等姿态都是可以通过地面站进行控制的。

(2)可以时刻观察飞行器即时的滚转角、俯仰、偏航、高度、速度、经纬度等数据。

(4)对所有飞行数据进行保存,并对历史数据任务回放功能,方便查看航行轨迹等数据。

(5)保证系统稳定可靠、实时高效的数据传输机制,以满足大数据量的通讯要求。

(6)在满足可靠性的基础上,监控数据的直观性、控制的易操作性也要予以考虑。

手机端地面控制平台软件的设计主要实现通过Android手机终端软件控制飞行器,将从蓝牙串口模块接收的飞行参数信息显示在手机屏幕上,通过操作界面的按钮点击生成响应的操作指令发送给来蓝牙串口模块,以实现对模拟装置的监控和指令操作。手机端软件分成蓝牙搜索连接、参数显示以及操作主界面、命令匹配输出三大子块,蓝牙搜索连接子块负责手机周边蓝牙设备的搜索,匹配和连接;主界面子块负责显示飞行器的飞行速度、高度、滚转角、俯仰、偏航、经纬度(通过地图展现)等数据,点击参数对应的按钮可实现手动刷新数据,点击前后左右等按钮对飞行器进行相应的控制;命令匹配输出模块响应主界面按钮的点击操作以生成对应的操控指令,然后将指令发送单片机上的蓝牙子模块。

手机端软件大体可分为以下几个区域:

数据显示区:显示飞行器的滚转角、俯仰、偏航、高度等数据。

操控区域:包括可点击的四个按钮,分别是对飞行器前、后、左、右的行驶控制。

仪表盘显示区:可以动态显示飞行器的飞行速度、高度、姿态数据,通过仪表盘的形式来直观体现。

地图显示区:通过上一个界面点击可以进入地图显示区,显示当前位置信息。

(1)构建项目开发环境

本节对软件的开发环境及目标平台进行简要的介绍[7]。

●开发环境

①Eclipse集成开发环境选择3.5及以上版本;

②JDK 1.6及以上版本;

③Android SDK;

④Android SDK和Eclipse开发插件ADT;

⑤数据库:Android自带的SQLite数据库,每款Android手机都支持。

●目标平台

本软件的目标平台为Android 2.1、Android 2.2或者更高的版本。

(2)软件设计框架

手机端地面控制平台终端整体框架图如图4所示:手机终端地面控制平台软件操作流程如图5所示:

图4 手机地面控制平台终端框架

图5 手机终端地面控制平台软件操作流程

●布局设计

程序的主体部分大概可划分三个操作交互界面(即Activity):第一个界面显示已搜索到或者已配对的蓝牙设备列表界面,该界面还包括有搜索蓝牙设备以及启动服务端等按钮,点击列表中某一个已配对的设备项,就会跳入数据显示和操控的界面,若未配对,则会提示,成功后直接跳入第二界面;第二个界面是数据显示和操控界面,主要显示数据区、操控区、仪表盘区,通过点击“地图显示”按钮,跳转到下一界面:地图显示界面。该界面通过不断接收飞行器发送来的经纬度数据,实时更新飞行器在地图上的位置显示。整体布局设计如图6、图7所示。

图6 设备搜索界面设计

图7 主界面设计

在设置手机界面的时候,选择Android 2.2版本,工程名命名为Bluetooth-plane,选择Create Activity,则自动创建了一个Activity。在创建Activity时,需注意一个Activity就是一个类,并且这个类要继承Activity;需要复写Oncreate方法;每一个Activity都需要在Androidmanifast.xml文件当中配置。

(4)系统模块设计

便携式无人地面控制平台系统主要功能为通过Android设备的蓝牙模块和模拟无人机蓝牙模块通讯,从而控制无人机的飞行方向,并且接收无人机飞行参数数据,把数据按指定的格式展现出来。做到对数据的实时显示和存储,事后可以调取存储的遥测数据进行回放分析。系统模块结构如图8所示。

每个模块的功能:

●通信控制模块:

①蓝牙的开关:在手机端程序运行开始时,会检测手机的蓝牙模块是否打开,如果没有打开,则会弹出提示框,并请求打开蓝牙:如果用户选择了同意打开,则自动打开蓝牙模块,否则,后续工作无法进行。

②通信角色的分配:手机端便携无人机地面站既可以当作服务器端来监听客户端的连接,也可以作为客户端去连接服务器端。假如作为服务器端进行监听,则点击软件界面的“启动服务器端”来进行等待,启动的同时,会跳到软件的控制面板界面;假如客户端要作为客户端去连接服务器端,则在搜索到的蓝牙设备中点击想要连接的设备,前提是此设备已经是处于等待客户端连接的状态。

●蓝牙搜索与配对:在软件的初始界面(设备列表界面),假如蓝牙模块已经被打开,则可以点击“开始搜索”按钮来进行设备的搜索,搜索的过程中此按钮变为“停止搜索”,可以点击来停止搜索。

●数据传输模块:在已连接好的两个蓝牙设备之间,可以进行数据的相互传输。从手机端控制站的角度来看,主要传输的数据是对飞机前、后、左、右方向的控制。当用户点击不同方向的按键时,会发送相应的指令到飞机的蓝牙模块上。同时,飞机也接收手机客户端手动刷新某项飞行参数的指令,当收到该指令之后,应立即向手机客户端返回一条相应的参数数据。

●数据接收模块:手机客户端也可以实时地接收飞机传送过来的各种飞行参数,并且对数据进行相应的处理。这些参数包括滚转角、俯仰、偏航、高度、速度、经纬度等。

图8 系统模块结构

●数据的处理:

手机控制站客户端应包含对接收到数据的处理,包括数据的展示、数据存储、数据分析等。其中数据的展示有对数据的直观显示(滚转角、俯仰、偏航、高度等)、地图位置标点显示(对经纬度的显示)、仪表盘显示(速度、高度、姿态)。数据存储主要把这些数据以SQLite数据库的方式存储到手机中,待需要时进行必要的数据分析统计等。

3 编码实现

3.1UI实现

●设备列表界面:该界面布局比较简单:包含有一个ListView,该ListView的适配器(Adapter)是使用了自定义的Adapter,用来指定列表中每一项的样式。

●控制面板主界面:控制面板主界面主要通过一个继承自SurfaceView的类来实现界面的绘制。SurfaceView是从View基类中派生出来的显示类,由于本系统的功能要求时事接收数据的同时,将数据反馈到相应的显示形式上(如仪表盘),所以使用SurfaceView来绘制界面是不二之选。

●地图显示界面:这里调用了百度的SDK,可以很方便地创建一张地图。在建立的Activity中,首先通过findViewById方法找到地图控件对应的MapView对象,然后初始化MapView的一些属性。当接收消息的线程接收到飞机发送过来的经纬度数据时,通过Handler对象的sendMessage方法,把经纬度数据发送到UI绘制的线程,从而在地图上标注出这个点。自定义的地图标注点的实现是依赖于百度地图SDK的com.baidu. mapapi.Overlay类:自定义一个类,并且继承自com. baidu.mapapi.Overlay这个类,并且复写draw函数,进行地图点的绘制。

3.2蓝牙搜索及配对的实现

首先,获得系统默认的蓝牙适配器,点击“开始搜索”按钮,则通过调用mBtAdapter的startDiscovery方法来搜索蓝牙设备,在搜索的过程中或发出一系列广播,我们可以通过接收广播来获得搜索的反馈。

当相应的广播发出之后,在自定义的广播接收器BroadcastReceiver中进行相关处理;在初始化控件之后,先要检测是否有已经配对的蓝牙设备,如果有,则不需要再配对,直接将此设备列出来。

3.3服务器端的监听和客户端的链接

3.5数据的保存

作为手机地面控制平台软件而言,可以以两种身份来建立连接:服务器端或者客户端。如果作为服务器端,则需要启动一个新线程,去监听服务器端的连接;而如果作为客户端,则需要去主动连接一个服务器端。在操作时,需要先启动服务器端,再启动客户端。

3.4蓝牙通信的实现

在服务器端与客户端连接成功之后,就可以进行设备之间的通讯了。手机地面站软件既要发送数据,又要接收数据。发送数据的机制是监听四个方向键的按下,当按下时,发送相应的指令到飞机设备。接收数据需要新启动一个线程,通过循环体来不断地读取数据,在对方没有发送数据时,则该次循环阻塞。

由于Android内嵌了功能比其他手机操作系统强大的关系型数据库SQLite,SQL语句基本都可以使用。所以可以使用这种方法来保存数据[10~11]。只需要自定义一个继承自SQLiteOpenHelper类,它提供了访问数据库、事务等API,使用起来很方便。这里采用DAO模式来封装数据库操作。

4 系统测试

4.1测试工具

一台配有蓝牙功能并支持Android系统的手机、装有蓝牙模块的四旋翼无人飞行器。

图9 四旋翼飞行器室内飞行图

图10 四旋翼飞行器室外短距离飞行图

图11 手机端主界面

图12 地图显示界面

4.2测试项目器的控制正常,如图9~13所示。

测试的项目内容主要有:软件在Android系统上运行的展示效果、功能效果。功能包括蓝牙的正常连接、蓝牙通讯的顺畅、数据传输是否正常、是否可以操控飞行器。

4.3测试结果

在高于2.1版本之上的Android手机上可以正常运行;数据的实时显示、地图显示正常;手机端对飞行

5  结语

本次设计完成了基于Android的蓝牙模拟手持式无人机地面控制平台装置,它充分发挥了蓝牙无线传输速度快,距离远,不受障碍物干扰或干扰很小的优点,可在10m范围的室内空间实现对飞行器的数据传输及简单飞行操控。

[1]杨越.精通Android[M].北京:人民邮电出版社,2010

[2]刘挺,尤韦彦,王耀明.蓝牙系统服务发现协议(SDP)的分析和应用[J].计算机工程,2002,28(6):7~8

[3]宁金星,卢京潮,闫建国.基于VC++的无人机飞控地面站软件的开发[J].计算机测量与控制,2009,17(3):596~598

[4]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011

[5]FrankAbleson.Introduction to Android Development[J].developerWorks,2009,10(7)

[6]金纯,肖玲娜,罗纬,聂增丽.超低功耗(ULP)蓝牙技术规范解析[M].北京:国防工业出版社,2010.8

[7]盖索林.Google Android开发入门指导[M].北京:人民邮电出版社,2007

[8]MP2028 Installation and Operation,Canadian MicroPilot Company,2003

[9]倪天龙,张贤高.数据库SQLite在嵌入式系统中的应用单片机与嵌入式系统应用[J],2005,10

[10]庄宗辉,薛毓强.嵌入式数据库SQLite在远程监控系统中的应用[J].现代电子技术,2007,8

[11]PV.Biyenburgh.UAVs:an Overview.AIR&Space Europe,1999,11(1)

Android;UAV(Unmanned Aerocraft Vehicle);Bluetooth;Ground Control

Design of GCS for UAV Based on Android System

DINGMeng-yu1,Wu Jia-yang2,GE Bin1

(1.Weinan Satellite TT&CStation,Xi'an Satellite Control Center of China,Weinan 714011;2.Xi'an Satellite Control Center of China,Xi'an 710043)

Under the Android system,uses the Eclipse development platform and Bluetooth technology,researches and designs a control p latform whichmeets the needs of small UAV flighton the ground,the platform in themobile terminal can search link simulationmodule,plane to simple aircraft flight control aswell as to the flight parameter data display,mobile terminal flight parameters can be updated bymanual or automatic updates to keep consistentwith the craft parameter.So as to realize the UAV ground stationmore portable,provides the basis of more accurate portable ground station for the next step.

1007-1423(2015)16-0036-07

10.3969/j.issn.1007-1423.2015.16.009

丁梦雨(1989-),女,黑龙江哈尔滨人,硕士研究生,研究方向为无人机地面控制站

2015-05-13

2015-05-19

猜你喜欢
服务器端蓝牙飞行器
蓝牙音箱的直线之美
高超声速飞行器
Linux环境下基于Socket的数据传输软件设计
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
复杂飞行器的容错控制
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
神秘的飞行器