李帥, 范項媛
(1.中國電子科技集團公司第三十八研究所, 安徽合肥 230088;2.孔徑陣列與空間探測安徽省重點實驗室, 安徽合肥 230088;3.智能情報處理重點實驗室, 安徽合肥 230088)
無人駕駛飛機是一種有動力,可控制,能攜帶多種任務(wù)設(shè)備,執(zhí)行多種任務(wù),由無線電遙控操縱或自主程序控制,并能重復(fù)使用的無人駕駛航空器,簡稱無人機(Unmanned Aerial Vehicle, UAV)[1]。由于其獨有的零傷亡、低損耗、可重復(fù)使用和高機動等優(yōu)勢,受到越來越多的重視,使用范圍包括軍事、民用和科學(xué)研究三大領(lǐng)域。
無人機地面站(UAV Ground Control Station)作為其中非常重要的一部分,實現(xiàn)了對無人機飛行狀態(tài)和設(shè)備狀態(tài)的實時檢測,控制無人機飛行軌跡,并對一些故障及時給與警報或采取相應(yīng)處理措施。
本文重點討論無人機地面站中軟件系統(tǒng)的設(shè)計,由于目前對國產(chǎn)化操作系統(tǒng)的推廣,要求軟件可同時支持Windows平臺和Linux平臺。Qt采用C++軟件開發(fā)框架,可實現(xiàn)“一次編寫,隨處編譯”[2],使程序在不同平臺下完美運行,選擇Qt進行地面站軟件的設(shè)計已經(jīng)是當務(wù)之急。
以下從系統(tǒng)組成、軟件系統(tǒng)設(shè)計和設(shè)計實例三個方面展開闡述,給出基于Qt開發(fā)平臺的軟件設(shè)計方案。
1.1 無人機系統(tǒng)組成
無人機系統(tǒng)主要包括兩部分:飛行器(Air Vehicle)和無人機地面站,如圖1所示。

圖1 無人機系統(tǒng)組成圖
在飛行器執(zhí)行飛行任務(wù)之前,首先進行飛行器的航跡規(guī)劃和航跡注入,由地面站通過無線通信裝備向飛行器發(fā)送航跡規(guī)劃遙測命令。確認航跡注入成功無誤,進入飛行器飛行控制,由地面站通過無線通信裝備向飛行器發(fā)送飛行遙測命令。飛行任務(wù)執(zhí)行過程中,飛行器通過無線通信設(shè)備與地面站進行鏈接,飛行器按照20 Hz的速率實時向地面站發(fā)送遙測信息,其中包括飛行器的經(jīng)度、緯度、高度、橫滾角、俯仰角、轉(zhuǎn)速、水溫等。操縱員可實時在地面站顯控席位觀察飛行器的各種狀態(tài),并對異常狀態(tài)進行適當?shù)娜斯じ深A(yù),保證飛行器的安全和飛行任務(wù)的有效完成。無人機系統(tǒng)的數(shù)據(jù)流如圖2所示。

圖2 無人機系統(tǒng)數(shù)據(jù)流
地面站系統(tǒng)[3-4]包括硬件和軟件兩個部分,硬件主要包括地面站的機房、路由器、電腦機柜、顯控席位臺等,本文重點討論地面站軟件系統(tǒng)的設(shè)計。
地面站軟件系統(tǒng)主要是對無人機的位置以及狀態(tài)信息進行實時顯示,同時可以對無人機的工作模式及參數(shù)進行控制,對飛行軌跡進行規(guī)劃,保證無人機的安全飛行和飛行任務(wù)的有效完成。
為了提高地面站軟件系統(tǒng)的魯棒性,軟件系統(tǒng)由3個獨立進程組成,包括飛行器狀態(tài)監(jiān)視進程、飛行器控制進程和航跡規(guī)劃進程。每個進程包括各個獨立功能模塊,如圖3所示。每個進程獨立進行通信,支持遙測和遙控即上行和下行數(shù)據(jù),其中通信模塊屬于重用模塊。每個進程之間的通信采用共享內(nèi)存的方式進行。

圖3 地面站軟件系統(tǒng)組成
1) 通信模塊:實現(xiàn)UDP通信參數(shù)的設(shè)置,支持單播和組播發(fā)送和接收;
2) 虛擬儀表模塊:按照行業(yè)標準,基于QPainter實現(xiàn)橫滾俯仰姿態(tài)圖、指南針、通用儀表盤等設(shè)計;
3) 曲線繪制模塊:基于Qcustomplot實現(xiàn)各種曲線圖顯示,支持單條曲線及多條曲線的繪制;
4) 數(shù)據(jù)重演模塊:實現(xiàn)網(wǎng)絡(luò)報文的記錄和數(shù)據(jù)回放功能;
5) 控制參數(shù)配置模塊:實現(xiàn)飛行模式的控制,支持XML配置文件實現(xiàn)動態(tài)配置;
6) 地圖顯示模塊:基于osg庫實現(xiàn)19級瓦片地圖(精度可達到0.5 m)的顯示及操作,包括地圖的放大、縮小、漫游等功能;
7) 航點注入模塊:實現(xiàn)航點的設(shè)置和上傳注入,同時支持對話框手工輸入及刪除、地圖鼠標標繪設(shè)置及刪除。
2.1 通信報文
地面站與飛行器之間以無線方式傳輸遙測信息和遙控指令,為了保證數(shù)據(jù)不受外界的干擾而發(fā)生錯誤,對通信報文進行校驗設(shè)計,確保接收端能正確接收數(shù)據(jù)。
地面站軟件系統(tǒng)的遙測信息和遙控指令的通信報文是定長報文,每幀共64 B,格式如表1所示。

表1 通信報文格式
頭信息:2 B,在無線通信中,噪聲是以隨機字節(jié)出現(xiàn)的,使用頭信息能起到穩(wěn)定接收和發(fā)射通信的作用。地面站軟件系統(tǒng)的通信報文以0XEB9A作為頭信息,接收端只將以0XEB9A開頭的通信報文作為有效報文。
數(shù)據(jù)部分:61 B,其中第一個字節(jié)是信息類型,用來區(qū)分遙測信息還是遙控指令,剩下的60個字節(jié)用于表示具體的數(shù)據(jù)信息。若是遙測信息,其中包括空速、地速、高度、滾轉(zhuǎn)角、俯仰角、經(jīng)度、緯度、主電源電壓、主電源電流等參數(shù)信息;若是遙控信息,其中包括起飛、平飛、左傾斜5°、滑行等命令。
校驗和:1 B,數(shù)據(jù)部分所有數(shù)據(jù)項之和取低8位,確保接收端數(shù)據(jù)不會由于外界干擾而出現(xiàn)錯誤,若出現(xiàn)不對應(yīng)關(guān)系,則認為報文無效,丟棄處理。
尾信息:1 B,作為信息報文的結(jié)束標志。
可用于Qt平臺的虛擬儀表庫相對較少,其中Qwt[4]是一個基于LGPL協(xié)議的開源庫,雖然擁有封裝好的表盤類,但并不是為飛行器類產(chǎn)品專業(yè)設(shè)計,不滿足行業(yè)類的使用需求。故地面站軟件系統(tǒng)的虛擬儀表采用Qt的2D繪圖類QPainter[5]繪制。設(shè)計繪制了包括姿態(tài)儀表、指南針、豎型數(shù)值顯示圖、通用表盤四種。
1) 姿態(tài)儀表
姿態(tài)儀表包括背景、俯仰刻度線、橫滾刻度線、橫滾刻度指針四個部分,它分成兩個緯度,橫滾變化是左右旋轉(zhuǎn),俯仰變化是上下平移,采用QImage的方式繪制在QWidget上,對QImage旋轉(zhuǎn)和指針位置的重繪實現(xiàn)橫滾和俯仰的變化。
設(shè)計流程圖如圖4所示。

圖4 姿態(tài)儀表設(shè)計流程
設(shè)計效果如圖5所示。

圖5 姿態(tài)儀表效果圖
2) 指南針
指南針由背景、360°刻度線以及中間的飛機型指針組成。根據(jù)飛行器的航向?qū)崟r更新指針旋轉(zhuǎn)方向。
設(shè)計效果如圖6所示。

圖6 指南針效果圖
3) 數(shù)值顯示圖
數(shù)值顯示圖由背景、刻度線以及數(shù)值顯示框組成。可根據(jù)顯示數(shù)值的范圍動態(tài)重繪刻度,數(shù)值顯示框可實時更新數(shù)值并給出必要文字說明。
設(shè)計效果如圖7所示。

圖7 數(shù)值顯示效果圖
4) 通用表盤
通用儀表盤由背景、刻度線、指針、警示顏色條以及數(shù)值顯示框組成。可根據(jù)顯示數(shù)據(jù)的范圍動態(tài)重繪刻度線,分段警示顏色條,數(shù)值顯示框可實時更新數(shù)值并給出必要文字說明。
設(shè)計效果如圖8所示。

圖8 通用表盤效果圖
航跡規(guī)劃模塊包括地圖顯示及操作、航點注入兩個部分。
1) 地圖顯示及操作
采用osg(open scene graph)[6]開源庫進行二次開發(fā),osg擁有強大的地圖顯示功能,可加載高精度瓦片地圖,可實現(xiàn)地圖的基本操作,如放大、縮小、平移等。
使用osg開源庫首先需要編譯針對當前軟件開發(fā)Qt版本的osg庫文件,并將庫文件、頭文件的路徑加載到軟件開發(fā)環(huán)境中;然后,準備好需要加載的瓦片地圖文件;最后,編寫osg庫讀取地圖文件的配置文件,按照需要的格式,設(shè)置參數(shù),加載地圖文件路徑,即可進行地圖顯示。
2) 航點注入
航點注入分為航點設(shè)置、航點對比及航點啟用三個步驟。
航點設(shè)置包括3種方式,第一種是地圖標繪,即通過鼠標進行選擇指定航點的位置,第二種是對話框手動輸入,第三種是手動編輯航點文件,通過讀取文件進行設(shè)置。這3種方式可以互相配合使用。航點設(shè)置可在地圖上按照其地理位置進行疊加顯示,會按照編號順序用直線段將各個航點連接起來形成規(guī)劃航跡。
航點對比就是比較本地航點設(shè)置與飛行器上的航點設(shè)置情況是否一致,作為飛行器飛行前的確認工作。飛行器上的回送航點支持在地圖上按照規(guī)劃航跡的方式顯示,并可查看其具體數(shù)值。
航點啟用屬于航跡規(guī)劃的結(jié)束標志,當航點對比確認成功,即完成航線規(guī)劃任務(wù)。飛行器會按照機上航跡規(guī)劃的路徑執(zhí)行任務(wù)。
航跡規(guī)劃如圖9所示。

圖9 航跡規(guī)劃對話框
在某項目中采用Qt 5.3進行地面站軟件系統(tǒng)的開發(fā)設(shè)計,顯示效果如圖10、圖11所示。
圖10為無人機地面站系統(tǒng)的狀態(tài)監(jiān)控和控制軟件,其中集成了姿態(tài)儀表、指南針、通用儀表盤、曲線圖、各類BIT的回饋顯示以及飛行控制的指令按鈕。
圖11為無人機地面站的航跡規(guī)劃軟件,其中包括了二維精細地圖顯示,可支持放大、縮小、漫游,地圖上設(shè)置了6個航點,按照順序連成預(yù)設(shè)航線,確定的預(yù)設(shè)航線在界面上顯示的同時會上傳至無人機機上系統(tǒng)用于實際飛行控制。

圖10 無人機地面控制軟件界面

圖11 航跡規(guī)劃軟件界面
本文提出的無人機地面站軟件系統(tǒng)設(shè)計是基于Qt平臺的,并可以同時滿足在Windows平臺和Linux平臺上的完美顯示。文中給出了地面站軟件的架構(gòu)組成和工作原理,并對設(shè)計關(guān)鍵技術(shù)進行了詳細描述,可以有效地解決軟件設(shè)計中遇到的問題,具有很強的可操作性。該設(shè)計可以滿足大多數(shù)無人機地面站軟件設(shè)計的要求,可廣泛用于無人機地面站軟件或相關(guān)的類似軟件中去。
[1]周焱. 無人機地面站發(fā)展綜述[J]. 航空電子技術(shù), 2010, 41(1):1-6.
[2]李繼進. 基于Qt的通用態(tài)勢顯示系統(tǒng)的構(gòu)架及關(guān)鍵技術(shù)研究[D]. 南京:南京理工大學(xué), 2012:6.
[3]魏明哲. 無人機航跡規(guī)劃與狀態(tài)追蹤系統(tǒng)[J]. 唐山學(xué)院學(xué)報, 2016, 29(3):31-32.
[4]劉洋,韓泉泉,趙娜. 無人機地面綜合監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J]. 2016, 24(14):110-111.
[5]盧華偉,秦品健,鄭銳. 基于Qt/Qwt的操作監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J]. 微計算機信息, 2010, 26(1):72-74.
[6]陸文周. Qt5開發(fā)及實例[M]. 北京:電子工業(yè)出版社, 2014:206-238.
[7]肖鵬,劉更代,徐明亮. OpenSceneGraph三維渲染引擎編程指南[M]. 北京:清華大學(xué)出版社, 2010:41-71.