何永勃,賈 輝,姜 坤,馬婷婷
(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