何永勃,贾 辉,姜 坤,马婷婷
(1.中国民航大学航空自动化学院,天津 300300;2.南山航空学院机务工程系,山东烟台 265703;3.中国移动兰州分公司业务支撑中心,兰州 730070)
基于Android终端陀螺仪传感器的无人机飞行姿态控制
何永勃1*,贾 辉1,姜 坤2,马婷婷3
(1.中国民航大学航空自动化学院,天津 300300;2.南山航空学院机务工程系,山东烟台 265703;3.中国移动兰州分公司业务支撑中心,兰州 730070)
由于传统的无人机无线电操控方式在遥控距离、数据传输规模及操纵的灵活性等方面有较大限制,提出了基于Android智能终端控制飞行姿态的设计方案。在Android平台的传感器框架下对陀螺仪状态信息进行三维空间实时解析和监测,经过数据提取及变换,形成在线姿态模拟信息,编写操控界面,实现了无人机姿态控制。结果表明,基于Android智能终端在线控制具有直观、廉价、可移植性强等优越性,有助于进一步推动小型无人机操控方式的变革和发展。
飞行姿态控制;Android;陀螺仪传感器;传感器框架
传统的航模和无人机操控一般采用专用的无线电遥控器[1]。虽然具有一定的灵活性和较好的安全性,但是随着综合化航空电子系统的发展,传统的操控模式越来越滞后于现实的需求和技术的发展,在控制距离、通用性、数据传输量等方面暴露出不足。首先,小型无人机操控平台因发射功率的不同,控制距离一般在几十米到几百米,控制范围有限,若想通过增加天线长度加大控制距离,将会导致功率消耗增加和设备体积的增大,操控平台便携性降低;其次,市场在售的操控平台缺乏统一的标准和规范,操作方式单一,其通用性和交互性均不够理想;再次,由于一些场合的视频传输要求和控制复杂度的提升,传统的无线电操控方式在数据传输方面也存在较大限制。
因此本文提出利用Android智能终端控制[2]飞行姿态的设计方案,以Android系统为软件设计平台,采用内置陀螺仪传感器的智能终端进行无人机飞行姿态感知和模拟。国内鲜见相关研究,国际上,法国派诺特公司提出用手机控制飞行器,推出四旋翼航模AR.Drone,它自身能发射wifi信号,理论作用距离仅在50 m之内。
目前采用Android系统的手机及Pad等智能终端应用十分广泛。其控制范围可以覆盖移动互联网所在的任何区域。Android智能终端便于携带、功能集成,可以运行功能丰富的App,操作直观,易于实现功能扩展和更新完善,有利于飞行控制软件的再次开发,成本低廉。借助于移动互联网,Android智能终端可以实现大量视频数据的传输。这些优点都是传统的无线电操控方式所不具备的。
本文以陀螺仪传感器为研究主体,通过Android系统平台开发出相关子程序,读取陀螺仪传感器的姿态信息并反演为实时姿态控制信号,展现在Android智能终端屏幕上,证明了利用Android智能终端控制飞行姿态的方案具备可行性。
使用陀螺仪传感器动态[3]地模拟无人机飞行姿态[4],其整体架构如图1所示。
图1 整体架构图
硬件方面,本设计仅需内置有陀螺仪传感器芯片的智能终端。软件设计方面,采用了基于Android系统的全新设计理念。在对智能终端姿态变化准确感知的基础上,正确使用和监听传感器事件,合理运用传感器相关类及对象,在传感器框架下使用面向对象Java语言和XML编程语言进行Android仿真开发,最终,飞行姿态控制信息动态地呈现在智能终端屏幕上。
2.1 陀螺仪传感器
iPhone 4是第一款采用MEMS(Micro-Electro-Mechanical System)微机电系统陀螺仪传感器[5]的智能终端,可以跟踪并捕捉智能终端在三维空间中的运动,为用户提供现场感很强的使用体验,由此开启了运动控制式用户界面的新时代。随着用户对智能终端功能要求的不断提高,目前市面上大部分智能终端都已经内置了MEMS陀螺仪传感器芯片。
MEMS陀螺仪传感器芯片体积小,重量轻,惯性小,谐振频率高,响应时间短[6],非常适合应用于智能终端。该芯片由一块封装而成的金属片组成,当驱动信号加载于驱动电容片时,金属片将产生振动。当智能终端发生偏转、倾斜时,由于科里奥利力(Coriolisforce)的作用,金属片在X、Y、Z轴产生偏移,专用电路能感知这些微小的转动角速度,并将其转换成智能终端可以接收到的数字信号,以完成对转动、偏转等动作的测量[4-5,7]。由此可以精确地分析并判断操作者对智能终端施加的具体动作。
2.2 陀螺仪传感器空间姿态分析
对陀螺仪传感器空间姿态的分析,需在特定的坐标系下完成,常使用标准三维坐标系进行定位[8-9]。智能终端硬件工程师通常按以下方式设定坐标系,以屏幕为参照物,X轴表示从左到右的水平方向,Y轴表示自下而上的垂直方向,Z轴表示相对屏幕表面由内而外的方向[3,10],如图2中实线所示。
陀螺仪传感器的参考坐标系是陀螺仪传感器当前所在位置的地平坐标系,由于陀螺效应,陀螺仪传感器的3个轴向始终与参考轴向平行。姿态发生变化时,智能终端所设定的实际坐标系轴向与陀螺仪传感器的参考坐标系轴向之间形成滚转角φ,俯仰角θ及偏航角ψ[7],其关系如图2所示,虚线所示为参考坐标系。
图2 手机姿态变化时的坐标系
陀螺仪传感器的坐标系设定逆时针旋转为正方向,即处于原始方位的设备,如果逆时针旋转,其接收的数值为正值。陀螺仪传感器的测量值是任意时刻坐标系物理三维方向(x、y和z轴)的转动角速度[11-12]。而智能终端的滚转角φ,俯仰角θ及偏航角ψ,其实质是一组欧拉角[15],因此需采用欧拉角公式确定智能终端运动坐标系相对于陀螺仪传感器参考坐标系的角位置变换关系,如式(1)所示。
式中:p、q、r分别表示滚转角速度、俯仰角速度和偏转角速度。
2.3 传感器框架搭建
在Android系统中,传感器的开发是在传感器框架下进行的,传感器相关类和传感器事件的使用都要遵循特定的规则,统一的框架和接口不仅有助于设计人员开发过程中的规范化处理,而且有助于软件的更新和升级。
2.3.1 传感器相关类
Android传感器框架[13]是 android.hardware包的子部分,通过该框架下传感器相关类的使用,可以对传感器进行访问并读取原始数据,传感器相关类之间的关系如图3所示。
①SensorManager类
用以创建陀螺仪传感器实例。该类提供多种方法,用于访问及获取传感器列表、注册及注销传感器事件监听器等。与此同时该类还提供了多个传感器常量,用于报告传感器精度、设置数据采样率和校准传感器。
②Sensor类
用于为传感器提供各项服务,例如传感器类型的选择、数据的获取等。
图3 传感器相关类关系图
③SensorEventListener类
通过创建回调方法,捕捉和接收因传感器数值或精度变化产生的传感器事件。
④SensorEvent类
用于创建陀螺仪传感器事件的对象,提供陀螺仪传感器事件的相关信息,例如原始数据、生成本事件的传感器类型、数据的精度、事件的时间戳。
2.3.2 API下的传感器事件
Framework API对传感器进行了封装,提供了一个传感器类,开发者根据设计需求获得传感器类型。在此,陀螺仪传感器选择TYPE_GYROSCOPE类。
手机陀螺仪传感器测量值的实质为手机围绕每个物理三维方向(x、y和z轴)的转动角速度,当手机姿态发生变化时,就会产生相应的传感器事件。因此在设计上以毫秒为周期设定触发机制,定期监听传感器事件,并加以功能逻辑分析,从中获取有效信息。
图4 软件示意图
2.4 陀螺仪传感器模拟飞行姿态的软件实现过程
在Android程序设计中,以事件监听器(eventlistener)的方式来处理UI用户事件。每个事件监听器都包含一个回调函数(Callback Method),用来回应和处理用户的操作。通常在程序 Activity的onResume()中启动服务,在onPause()中停止服务程序。在一个Activity生命周期[14]内,该软件运行过程如图4所示。
与传感器进行交互[10],应用程序必须注册和监听[13]与传感器有关的各项活动。Android平台提供registerListener方法来注册传感器,并提供unregisterListener方法来卸载传感器。以下是软件开发过程中的核心内容。
①注册传感器
protected void onResume(){
super.onResume();
mSensorManager.registerListener(this,mGyroscope,Sensor-Manager.SENSOR_DELAY_FASTEST);}
其中registerListener方法包含3个参数,分别表示接收信号的Listener实例,接收的传感器类型的列表,即上一步创建的List<Sensor>对象,以及接收数据的频度。
在调用 registerListener()时指定了数据延时SENSOR_DELAY_FASTEST,该延时(采样率)控制着onSensorChanged()发送给应用程序的传感器事件的触发间隔。无人机姿态控制对实时性要求较高,需采用更小的延时以缩短采样间隔,提高采样频率,故指定SENSOR_DELAY_FASTEST。
②卸载传感器
protected void onPause(){
super.onPause();
mSensorManager.unregisterListener(this);}
卸载传感器是为了保证在不使用传感器时及时关闭传感器,特别是当Activity被暂停时。若陀螺仪传感器一直处于运行状态,会持续消耗电池电量。
③SensorEventListener的相关方法
SensorEventListener是使用传感器的核心所在,必须实现以下两个方法:
(a)onSensorChanged(SensorEvent event)方法在传感器值更改时被调用。该方法只被受此应用程序监视的传感器调用,其参数包括一个SensorEvent对象,利用该对象可获得传感器测得的具体信息:
float x=event.values[SensorManager.DATA_X];
float y=event.values[SensorManager.DATA_Y];
float z=event.values[SensorManager.DATA_Z];
(b)onAccuracyChanged(Sensor sensor,int accuracy)方法在传感器精确度发生改变时调用,其参数有两个:一个表示传感器,另一个表示该传感器新的精确值。
基于上述内容,本文通过软件开发平台测试整体的功能实现效果,该平台基于Android 3.0,通过在Eclipse中创建Android程序包项目,执行 Android tools下的Export Unsigned Application Package操作指令,对程序进行打包封装,并生成APK文件,下载到红米手机中运行,运行效果如图5所示。图5(a)为水平位置时的飞行姿态图,b图为倾斜位置时的飞行姿态图,水平刻度表示无人机的朝向,垂直刻度表示无人机的俯仰角度,灰黑交界线表示无人机的侧滚程度,手机在水平位置和发生倾斜时皆能模拟飞行姿态,且运行流畅,满足设计要求,验证了本方案的可行性。
图5 运行效果图
本文详细论述了以陀螺仪传感器为开发主体,模拟并控制无人机飞行姿态的相关问题。随着智能终端姿态不断变化,陀螺仪传感器收集到的信息不断更新,通过合理的姿态分析,在Android传感器框架下进行代码编辑,实现实时飞行姿态的模拟,从而得到控制飞行姿态所需要的信息。作为一款Android飞行控制软件下的重要部分,陀螺仪传感器的开发效果直接影响到该款Android飞行控制软件的性能。本文作为Android智能终端控制无人机的一种探索,有非常积极的实用价值。
[1] 周焱.无人机地面站发展综述[J].航空电子技术,2010,41(1):3-5.
[2] 王朝华,陈德艳,黄国宏.基于Android的智能家居系统的研究与实现[J].计算机技术与发展,2012,22(6):226.
[3] 庄翠翠,李成荣,韦玮.基于Android系统的多传感器移动体感应用[J].计算机系统应用,2013,22(8):72.
[4] 赵海生,胥效文.小型无人机飞行姿态测量系统的设计[J].计算机测量与控制,2011,20(3):583-584.
[5] 蒋海涛,郭战营.基于MEMS加速度传感器的飞行器倾角测量系统设计[J].计算机测量与控制,2010,18(1):107.
[6] 秦勇,臧希喆,王晓宇.基于MEMS惯性传感器的机器人姿态检测系统的研究[J].传感技术学报,2007,20(2):298.
[7] 王占平,唐小宏,王亚非.基于MEMS加速度计的飞行器姿态识别技术研究[J].压电与声光,2007,29(2):224.
[8] 翟昱涛,魏强,王晓浩.基于MEMS惯性传感器的微型姿态测量系统[J].纳米技术与精密工程,2009,7(4):376.
[9] 蒋窍,李杰,刘俊.基于单片机的GPS/MEMS陀螺仪航向角实时测量系统[J].传感技术学报,2011,24(6):920.
[10]韩迪,潘志宏.基于Android移动设备传感器的体感应用[J].华南理工大学学报,2012,40(9):75.
[11]曹晓棠,石云波,周兆英.基于MEMS的微型飞行器姿态测量系统[J].传感器与微系统,2013,32(2):122.
[12]覃霖,赵锡钧.航天飞行体自旋角速度的测量[J].传感器技术,2001,20(11):38-39.
[13]程展传.基于Android平台的传感器技术应用研究[D].广州:华南理工大学软件学院,2011.
[14]段琳.深入剖析Android Activity[J].中国新技术新产品,2011,16(1):33.
[15]吴森堂,费玉华.飞行控制系统[M].北京:北京航空航天大学出版社,2005:9-1.
何永勃(1971-),男,陕西蒲城人,汉族,中国民航大学航空自动化学院副教授,硕士生导师,博士,主要研究领域为航空电气、自动化仪表;
贾 辉(1985-),男,甘肃张掖人,汉族,中国民航大学航空自动化学院在读硕士,主要研究方向为无人机控制。
UAV Attitude Control Based on Gyroscope Sensor of the Android Terminal
HE Yongbo1*,JIA Hui1,JIANG Kun2,MA Tingting3
(1.Civil Aviation University of China,College of Aeronautical Automation,Tianjin 300300,China;2.Nanshan Aeronautical College,Maintenance engineering department,Yantai Shandong 265703,China;3.China mobile Communication Company Lanzhou branch,Business support center,Lanzhou 730070,China)
UAV is usually controlled with a radio based remote controller,which has many limitations such as short distance,less data and low flexibility.A design scheme based on Android intelligent terminal is proposed to control the flight attitude.With the help of the sensors framework,the three dimensional state information of gyroscope integrated in the Android device can be collected.Further,these data is transformed to consist the real time attitude simulation information.Finally,a software is designed to control the attitude of UAV.The Android based controller has the advantages of intuition,low price and portability,which is conducive to further reform and development of control methods to small UAV.
flight attitude control;Android;gyroscope sensor;sensor framework
TP391
A
1004-1699(2015)04-0474-05
7230
10.3969/j.issn.1004-1699.2015.04.004
2014-11-19 修改日期:2015-01-15