基于Android小型无人机控制软件的实现
2018-02-01李铮王子豪樊丽荣陈爽张月霞
李铮+王子豪+樊丽荣+陈爽+张月霞
摘要:针对目前小型无人机遥控器的复杂性,设计与实现了一种基于Android的小型无人机控制软件。该软件主要由飞行姿态控制模块、软件界面模块和数据传输模块组成。软件主要通过蓝牙与无人机进行无线数据交互,完成对无人机的飞行姿态控制和摄像机的图像传输经系统测试,该终端运行稳定、操作简便、易推广。
关键词:无人机;飞行姿态控制;Android;APP
引言
随着互联网的发展以及智能手机的普及,移动端无人机控制软件的设计与开发成为国内外研究的热点。传统的无人机体积大,控制系统成本高,操控技术要求高,可携带性差,不利于特定极端条件下使用。而小型四旋翼无人机具有体积小巧,易携带,控制简便且量产费用低的优点,在特定环境的勘探下具有明显优势[5]。因此,开发设计一款移动端小型无人机控制软件,具有很大的实用意义。
目前,美国已经建立了一个小型无人机研发应用中心,利用无人机进行气候变化和资源勘探等科学研究,同时也在开发小型无人机的多种民用用途。在国内,武汉新研制出了一种专门用于火情监测的无人机系统,集合了GPS定位、数字图像处理、信息传输等多种计算机技术。大疆公司也发布了旗下两款小型四旋翼无人机“御Mavic”和“晓Spark”,充分肯定了小型无人机在一些应用场合的重要性和必要性。但是,目前国内外传统无人机,其在消防、勘探等领域的应用技术还不够成熟完善,如无人机体型较大无法进入狭小空间;使用遥控器操作过于繁琐,效率不高;地面站设备过多不易携带[6]。若在小型无人机应用基础上再利用智能手机来取代传统遥控器则可扩大应用场合及简化无人机操控的难度。再利用蓝牙传输技术,在保证一定范围的同时也解决了当今一些操控软件使用外接发射器的问题,使得无人机套件携带起来更加方便。因此,设计一款仅通过蓝牙传输即可控制小型无人机飞行的软件是非常有意义和有必要的。
本文设计与实现了一种基于Android的小型无人机控制软件。该软件基于Android智能平台,主要由飞行姿态控制模块、软件界面模块和数据传输模块组成。软件通过蓝牙和无线电功能与无人机进行无线数据交互,完成对无人机的飞行姿态控制和摄像机的图像传输。经系统测试,该终端运行稳定、操作简便、易推广。
1.系统总体设计
基于Android小型无人机控制软件的系统总体设计分为飞行姿态控制模块、软件界面模块、数据传输模块三部分。飞行姿态控制模块利用各传感器产生的当前无人机状态信息以及输入的控制信号来产生飞行姿态控制信号,通过蓝牙反馈给无人机[7]。软件界面模块主要设计与绘制软件的各种界面。数据传输模块,主要实现软件与无人机之间的数据传输,包括利用蓝牙的控制信号的传输以及利用5.8Ghz信道的图像传输[1][2]。图1为系统总体设计图。
2.具体实现
2.1飞行姿态控制模块
无人机智能PID控制方法目前技术成熟,应用非常广泛。因传感器采集数据较易失真,小型四旋翼无人机采用双闭环PID控制,以角度为外环,角速度为内环,来减小姿态欧拉角的误差。同时,角速度由陀螺仪单一输出,不易受其他因素影响;又因陀螺仪对姿态变化敏感,在姿态变化时可以迅速更新角速度,增强了系统的稳定性[4]。
在Android传感器框架下,利用与传感器相关的类对各种传感器进行监听和数据采集,并处理传感器产生的飞行姿态控制信息。图2为飞行控制信号产生的流程图。
2.2软件界面模块
智能终端的屏幕刷新是通过不断的覆盖Canvas来实现的,Android系统中提供了专用的绘图应用接口,运用这些接口工具,可以在Canvas画布上绘制图形,也可以修改已经存在的图形和对象,改变它们的呈现形式。Canvas作为绘图元素,也可认作系统提供的框架,其系统配套操作是画图API。在连续的绘图过程中,所有经过表面View对象得到画布对象之前的状态会被储存。为了使图形呈现出来,必须先覆盖或者抹掉画布上之前的图像,这个步骤需要通过刷屏来实现[3]。若不进行刷屏更新画布,则新绘图即是建立在旧画布之上,这就会出现之前图形的绘图轨迹,不满足UI界面设计的基本要求。通过刷屏来更新画布的主要代码如下所示。
public void MyDraw( ){
Canvas canvas = holder.lockCanvas( );
paint.setColor(Color.BLUE);
Canvas drawRect(0, 0, this.getWidth( ), this.getHeight( ), paint );
paint.setColor(Color.ORANGE);
Canvas.drawText(“BreakLine”, textX, textY, paint );
holder.unlockCanvasAndPost(canvas);}
在使用SurfaceView對象的过程中,必须先创建 Surface,然后才能开始图形绘制任务。Surface 对象不能够直接被处理,要先使用getHolder( )方法获得 SurfaceHolder对象。最终通过 addCallback( )方法,来产生针对SurfaceHolder 对象的通知消息,从而进行SurfaceHolder.Callback 回调。
一个典型的SurfaceView 包括一个由 Thread 所派生的类,它可以在创建的时候接收对当前的SurfaceHolder 的引用,在Thread 的 run 方法中,由该引用可以得到布局中SurfaceView 的 Canvas 对象,并更新Canvas,运用SurfaceView 对象绘图的整个过程可以描述为图3流程[6]。endprint
2.3数据传输模块
软件和无人机之间的飞行姿态的控制通过蓝牙组件完成,蓝牙BLE模块选用HM11蓝牙模块,能够有效降低整个系统的整体功耗,同时软件端使用bluetoothAdaper组件来接受和发送蓝牙数据,可在30米以内的开放环境中实现与地面软件端之间的通信。
软件和无人机之间的图像传输通过图传系统完成,图传系统包括:相机、5.8GHZ天线发射端与接收端、安卓软件接收端。
相机集成5.8GHZ发射天线,型号为VM275T,重3.6g,功耗25MW,安裝在无人机表面并可拆卸,仅通过无人机电源供电,易于调试以及维护。此相机拍摄视频可直接转码后通过RTSP标准协议发送到接收端。接收端采用安卓手机OTG外接5.8GZH信号接收器,获取的模拟信号直接传到手机中,播放器解码转换为图像后展示在软件上[8]。
在图传显示方面最大的问题是图像卡顿。图像卡顿有两种情况造成,一是传输中数据丢失,二是软件接收端数据丢失。针对传输过程中数据丢失的问题,解决方法是在传输过程中选择更稳定的TCP协议[9],通过此协议数据传输更稳定但距离相对较短;针对图像软件端丢失数据的问题,解决方法是采用接收、解码显示双线程,中间通过缓存队列来进行数据的共享,避免了因接收数据和解码一个线程,导致解码不及时、接收线程阻塞造成的数据丢失。
3.系统测试
1. 无人机打开电源通电,等待自检完成。
2. 安装手机端接收天线,打开软件,点击连接出现图4界面,搜索无人机蓝牙信号并匹配。
3. 点击校准,待无人机M1和M2两灯常亮,表明无人机一切正常,可以起飞。
4. 点击解锁,机浆开始旋转,左侧按钮控制油门及旋转,右侧按钮控制飞行方向。
该软件操作主界面如图5所示,界面顶部6个按钮为功能按钮,分别实现连接、解锁、起飞、无头、定高、校准功能,两侧圆形为使用SufaceView绘制无人机的控制摇杆界面,左边控制升降旋转,右边控制前后左右飞行。
4.小结
本文设计与实现了一种基于Android的小型无人机控制软件。该软件基于Android智能平台,主要由飞行姿态控制模块、软件界面模块和数据传输模块组成。软件主要通过蓝牙与无人机进行无线数据交互,完成对无人机的飞行姿态控制和摄像机的图像传输。经系统测试,该终端运行稳定、操作简便、易推广。
[参考文献]
[1]贾辉.基于Android 系统的无人机控制及通信系统设计[D].天津:中国民航大学,2015.
[2]罗伟.基于Android 平台的即时通讯系统的研究与实现[D].湖南:湖南师范大学,2009.
[3]黄晟.基于用户体验的APP 设计研究[D].陕西:陕西科技大学,2012.
[4]陆伟男,蔡启仲,李刚,等.基于四轴飞行器的双闭环PID控制[J].科学技术与工程,2014,14(33):127-131.
[5]王晨,赵之璐,李亚儒.浅谈未来无人机发展的关键技术[A].中国航空学会.2014(第五届)中国无人机大会论文集[C].北京:航工工业出版社,2014.
[6]郭霖.第一行代码 Android[M].北京:人民邮电出版社,2014.
[7]郑华美.小型无人机地面站软件系统的设计与实现[D].成都:电子科技大学,2015.
[8]刘仲宇,张涛,李嘉全,等.超小型无人机相机系统关键技术研究[J].光电工程,2013,40(04):80-85.
[9]韩东斐.小型旋翼无人机数字图像传输系统的设计与实现[D].成都:电子科技大学,2016.
[10]张峰,佟巍,周立冬,等.国外救援无人机的发展现状[J].中国医疗设备,2016,31(06):175-177.
基金项目:北京市属高等学校高层次人才引进与培养计划项目(CIT&TCD201504058)、国家自然科学基金重点项目(51334003)、国家自然科学基金(61473039)、北京信息科技大学研究生教育质量工程类项目(NO.5121724107)。
(作者单位:北京信息科技大学信息与通信工程学院,北京 100101)endprint