李錚+王子豪+樊麗榮+陳爽+張月霞
摘要:針對目前小型無人機遙控器的復(fù)雜性,設(shè)計與實現(xiàn)了一種基于Android的小型無人機控制軟件。該軟件主要由飛行姿態(tài)控制模塊、軟件界面模塊和數(shù)據(jù)傳輸模塊組成。軟件主要通過藍(lán)牙與無人機進(jìn)行無線數(shù)據(jù)交互,完成對無人機的飛行姿態(tài)控制和攝像機的圖像傳輸經(jīng)系統(tǒng)測試,該終端運行穩(wěn)定、操作簡便、易推廣。
關(guān)鍵詞:無人機;飛行姿態(tài)控制;Android;APP
引言
隨著互聯(lián)網(wǎng)的發(fā)展以及智能手機的普及,移動端無人機控制軟件的設(shè)計與開發(fā)成為國內(nèi)外研究的熱點。傳統(tǒng)的無人機體積大,控制系統(tǒng)成本高,操控技術(shù)要求高,可攜帶性差,不利于特定極端條件下使用。而小型四旋翼無人機具有體積小巧,易攜帶,控制簡便且量產(chǎn)費用低的優(yōu)點,在特定環(huán)境的勘探下具有明顯優(yōu)勢[5]。因此,開發(fā)設(shè)計一款移動端小型無人機控制軟件,具有很大的實用意義。
目前,美國已經(jīng)建立了一個小型無人機研發(fā)應(yīng)用中心,利用無人機進(jìn)行氣候變化和資源勘探等科學(xué)研究,同時也在開發(fā)小型無人機的多種民用用途。在國內(nèi),武漢新研制出了一種專門用于火情監(jiān)測的無人機系統(tǒng),集合了GPS定位、數(shù)字圖像處理、信息傳輸?shù)榷喾N計算機技術(shù)。大疆公司也發(fā)布了旗下兩款小型四旋翼無人機“御Mavic”和“曉Spark”,充分肯定了小型無人機在一些應(yīng)用場合的重要性和必要性。但是,目前國內(nèi)外傳統(tǒng)無人機,其在消防、勘探等領(lǐng)域的應(yīng)用技術(shù)還不夠成熟完善,如無人機體型較大無法進(jìn)入狹小空間;使用遙控器操作過于繁瑣,效率不高;地面站設(shè)備過多不易攜帶[6]。若在小型無人機應(yīng)用基礎(chǔ)上再利用智能手機來取代傳統(tǒng)遙控器則可擴大應(yīng)用場合及簡化無人機操控的難度。再利用藍(lán)牙傳輸技術(shù),在保證一定范圍的同時也解決了當(dāng)今一些操控軟件使用外接發(fā)射器的問題,使得無人機套件攜帶起來更加方便。因此,設(shè)計一款僅通過藍(lán)牙傳輸即可控制小型無人機飛行的軟件是非常有意義和有必要的。
本文設(shè)計與實現(xiàn)了一種基于Android的小型無人機控制軟件。該軟件基于Android智能平臺,主要由飛行姿態(tài)控制模塊、軟件界面模塊和數(shù)據(jù)傳輸模塊組成。軟件通過藍(lán)牙和無線電功能與無人機進(jìn)行無線數(shù)據(jù)交互,完成對無人機的飛行姿態(tài)控制和攝像機的圖像傳輸。經(jīng)系統(tǒng)測試,該終端運行穩(wěn)定、操作簡便、易推廣。
1.系統(tǒng)總體設(shè)計
基于Android小型無人機控制軟件的系統(tǒng)總體設(shè)計分為飛行姿態(tài)控制模塊、軟件界面模塊、數(shù)據(jù)傳輸模塊三部分。飛行姿態(tài)控制模塊利用各傳感器產(chǎn)生的當(dāng)前無人機狀態(tài)信息以及輸入的控制信號來產(chǎn)生飛行姿態(tài)控制信號,通過藍(lán)牙反饋給無人機[7]。軟件界面模塊主要設(shè)計與繪制軟件的各種界面。數(shù)據(jù)傳輸模塊,主要實現(xiàn)軟件與無人機之間的數(shù)據(jù)傳輸,包括利用藍(lán)牙的控制信號的傳輸以及利用5.8Ghz信道的圖像傳輸[1][2]。圖1為系統(tǒng)總體設(shè)計圖。
2.具體實現(xiàn)
2.1飛行姿態(tài)控制模塊
無人機智能PID控制方法目前技術(shù)成熟,應(yīng)用非常廣泛。因傳感器采集數(shù)據(jù)較易失真,小型四旋翼無人機采用雙閉環(huán)PID控制,以角度為外環(huán),角速度為內(nèi)環(huán),來減小姿態(tài)歐拉角的誤差。同時,角速度由陀螺儀單一輸出,不易受其他因素影響;又因陀螺儀對姿態(tài)變化敏感,在姿態(tài)變化時可以迅速更新角速度,增強了系統(tǒng)的穩(wěn)定性[4]。
在Android傳感器框架下,利用與傳感器相關(guān)的類對各種傳感器進(jìn)行監(jiān)聽和數(shù)據(jù)采集,并處理傳感器產(chǎn)生的飛行姿態(tài)控制信息。圖2為飛行控制信號產(chǎn)生的流程圖。
2.2軟件界面模塊
智能終端的屏幕刷新是通過不斷的覆蓋Canvas來實現(xiàn)的,Android系統(tǒng)中提供了專用的繪圖應(yīng)用接口,運用這些接口工具,可以在Canvas畫布上繪制圖形,也可以修改已經(jīng)存在的圖形和對象,改變它們的呈現(xiàn)形式。Canvas作為繪圖元素,也可認(rèn)作系統(tǒng)提供的框架,其系統(tǒng)配套操作是畫圖API。在連續(xù)的繪圖過程中,所有經(jīng)過表面View對象得到畫布對象之前的狀態(tài)會被儲存。為了使圖形呈現(xiàn)出來,必須先覆蓋或者抹掉畫布上之前的圖像,這個步驟需要通過刷屏來實現(xiàn)[3]。若不進(jìn)行刷屏更新畫布,則新繪圖即是建立在舊畫布之上,這就會出現(xiàn)之前圖形的繪圖軌跡,不滿足UI界面設(shè)計的基本要求。通過刷屏來更新畫布的主要代碼如下所示。
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對象的過程中,必須先創(chuàng)建 Surface,然后才能開始圖形繪制任務(wù)。Surface 對象不能夠直接被處理,要先使用getHolder( )方法獲得 SurfaceHolder對象。最終通過 addCallback( )方法,來產(chǎn)生針對SurfaceHolder 對象的通知消息,從而進(jìn)行SurfaceHolder.Callback 回調(diào)。
一個典型的SurfaceView 包括一個由 Thread 所派生的類,它可以在創(chuàng)建的時候接收對當(dāng)前的SurfaceHolder 的引用,在Thread 的 run 方法中,由該引用可以得到布局中SurfaceView 的 Canvas 對象,并更新Canvas,運用SurfaceView 對象繪圖的整個過程可以描述為圖3流程[6]。endprint
2.3數(shù)據(jù)傳輸模塊
軟件和無人機之間的飛行姿態(tài)的控制通過藍(lán)牙組件完成,藍(lán)牙BLE模塊選用HM11藍(lán)牙模塊,能夠有效降低整個系統(tǒng)的整體功耗,同時軟件端使用bluetoothAdaper組件來接受和發(fā)送藍(lán)牙數(shù)據(jù),可在30米以內(nèi)的開放環(huán)境中實現(xiàn)與地面軟件端之間的通信。
軟件和無人機之間的圖像傳輸通過圖傳系統(tǒng)完成,圖傳系統(tǒng)包括:相機、5.8GHZ天線發(fā)射端與接收端、安卓軟件接收端。
相機集成5.8GHZ發(fā)射天線,型號為VM275T,重3.6g,功耗25MW,安裝在無人機表面并可拆卸,僅通過無人機電源供電,易于調(diào)試以及維護(hù)。此相機拍攝視頻可直接轉(zhuǎn)碼后通過RTSP標(biāo)準(zhǔn)協(xié)議發(fā)送到接收端。接收端采用安卓手機OTG外接5.8GZH信號接收器,獲取的模擬信號直接傳到手機中,播放器解碼轉(zhuǎn)換為圖像后展示在軟件上[8]。
在圖傳顯示方面最大的問題是圖像卡頓。圖像卡頓有兩種情況造成,一是傳輸中數(shù)據(jù)丟失,二是軟件接收端數(shù)據(jù)丟失。針對傳輸過程中數(shù)據(jù)丟失的問題,解決方法是在傳輸過程中選擇更穩(wěn)定的TCP協(xié)議[9],通過此協(xié)議數(shù)據(jù)傳輸更穩(wěn)定但距離相對較短;針對圖像軟件端丟失數(shù)據(jù)的問題,解決方法是采用接收、解碼顯示雙線程,中間通過緩存隊列來進(jìn)行數(shù)據(jù)的共享,避免了因接收數(shù)據(jù)和解碼一個線程,導(dǎo)致解碼不及時、接收線程阻塞造成的數(shù)據(jù)丟失。
3.系統(tǒng)測試
1. 無人機打開電源通電,等待自檢完成。
2. 安裝手機端接收天線,打開軟件,點擊連接出現(xiàn)圖4界面,搜索無人機藍(lán)牙信號并匹配。
3. 點擊校準(zhǔn),待無人機M1和M2兩燈常亮,表明無人機一切正常,可以起飛。
4. 點擊解鎖,機漿開始旋轉(zhuǎn),左側(cè)按鈕控制油門及旋轉(zhuǎn),右側(cè)按鈕控制飛行方向。
該軟件操作主界面如圖5所示,界面頂部6個按鈕為功能按鈕,分別實現(xiàn)連接、解鎖、起飛、無頭、定高、校準(zhǔn)功能,兩側(cè)圓形為使用SufaceView繪制無人機的控制搖桿界面,左邊控制升降旋轉(zhuǎn),右邊控制前后左右飛行。
4.小結(jié)
本文設(shè)計與實現(xiàn)了一種基于Android的小型無人機控制軟件。該軟件基于Android智能平臺,主要由飛行姿態(tài)控制模塊、軟件界面模塊和數(shù)據(jù)傳輸模塊組成。軟件主要通過藍(lán)牙與無人機進(jìn)行無線數(shù)據(jù)交互,完成對無人機的飛行姿態(tài)控制和攝像機的圖像傳輸。經(jīng)系統(tǒng)測試,該終端運行穩(wěn)定、操作簡便、易推廣。
[參考文獻(xiàn)]
[1]賈輝.基于Android 系統(tǒng)的無人機控制及通信系統(tǒng)設(shè)計[D].天津:中國民航大學(xué),2015.
[2]羅偉.基于Android 平臺的即時通訊系統(tǒng)的研究與實現(xiàn)[D].湖南:湖南師范大學(xué),2009.
[3]黃晟.基于用戶體驗的APP 設(shè)計研究[D].陜西:陜西科技大學(xué),2012.
[4]陸偉男,蔡啟仲,李剛,等.基于四軸飛行器的雙閉環(huán)PID控制[J].科學(xué)技術(shù)與工程,2014,14(33):127-131.
[5]王晨,趙之璐,李亞儒.淺談未來無人機發(fā)展的關(guān)鍵技術(shù)[A].中國航空學(xué)會.2014(第五屆)中國無人機大會論文集[C].北京:航工工業(yè)出版社,2014.
[6]郭霖.第一行代碼 Android[M].北京:人民郵電出版社,2014.
[7]鄭華美.小型無人機地面站軟件系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2015.
[8]劉仲宇,張濤,李嘉全,等.超小型無人機相機系統(tǒng)關(guān)鍵技術(shù)研究[J].光電工程,2013,40(04):80-85.
[9]韓東斐.小型旋翼無人機數(shù)字圖像傳輸系統(tǒng)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2016.
[10]張峰,佟巍,周立冬,等.國外救援無人機的發(fā)展現(xiàn)狀[J].中國醫(yī)療設(shè)備,2016,31(06):175-177.
基金項目:北京市屬高等學(xué)校高層次人才引進(jìn)與培養(yǎng)計劃項目(CIT&TCD201504058)、國家自然科學(xué)基金重點項目(51334003)、國家自然科學(xué)基金(61473039)、北京信息科技大學(xué)研究生教育質(zhì)量工程類項目(NO.5121724107)。
(作者單位:北京信息科技大學(xué)信息與通信工程學(xué)院,北京 100101)endprint