李錚+王子豪+樊麗榮+陳爽+張月霞
摘要:針對目前小型無人機遙控器的復雜性,設計與實現了一種基于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