王先知
(棗莊職業學院,山東 棗莊 277100)
無人機作為一種無人駕駛的小型航空器,要想保證無人機能夠自動、精確地飛往指定位置并開展飛行任務,必須要對其航跡進行規劃,并密切監視無人機的飛行狀態,作出相應的調整,確保飛行順利完成。為進一步提高無人機在執行任務時的靈活性和實用性,無人機地面導航控制系統得到了廣泛運用。探究該系統的功能設計與實現方法成為當下的熱門研究課題。
本文設計的無人機地面導航控制系統主要包括3大模塊,分別是無人機、地面導航控制系統,以及負責指令上傳與數據下傳的通信系統。在地面導航控制系統的人機交互界面上,用戶可以發送控制指令,該指令在數據存儲層備份后,按照通信協議進行編碼,然后經通信系統中的上行通信信道將指令發送給無人機。位于無人機上的機載通信設備接收指令后,再控制前端執行機構(如發動機、陀螺儀等)作出相應的動作,完成地面導航控制系統對無人機的操控。機載傳感器可以動態收集無人機的各項數據,如經緯度、高度、速度、剩余油量等,然后利用通信系統中的下行通信信道將數據發送到地面導航控制系統的通信設備。經過數據解碼、存儲后,在地面導航控制系統的人機交互界面上顯示飛行軌跡和狀態參數,實現對無人機的實時監控[1]。無人機地面導航控制系統的整體架構如圖1 所示。

圖1 系統軟件架構
本文基于實用性、規范性和可復用性原則設計了無人機地面導航控制系統的功能模塊。該系統主要包括6 個功能模塊:①系統管理模塊。該模塊支持用戶注冊、用戶密碼變更、用戶權限管理等功能。②電子地圖模塊。該模塊用于實現對電子地圖的各種基本操作,如加載電子地圖,進行圖層編輯,以及電子地圖的放大或縮小等。③飛行監測模塊。該模塊通過實施獲取無人機的各項飛行數據,并利用通信系統將所得數據發送給地面站接收設備。地面主機進行數據解析后可以顯示無人機的航跡,以及及時進行故障報警。④任務管理模塊。該模塊可完成無人機航線規劃,飛行任務回放等。⑤飛行控制模塊。地面導航控制系統將編輯好的控制指令發送給無人機機載PLC,PLC 生成相應的指令,控制前端設備完成相應動作,實現對無人機的遠程控制。⑥通信與數據處理模塊。該模塊支持無人機與地面導航控制系統之間進行雙向通信。
用戶打開無人機地面導航控制系統后,首先進入登錄界面。輸入賬戶名與密碼后,系統后臺進行驗證,如果賬戶名與密碼配對,并且該賬戶已經存在于數據庫的用戶表中,則順利登錄并跳轉至系統主界面;否則登錄失敗。成功登錄后,系統進行初始化,并等待用戶的操作。用戶在人機交互界面上作出操作后,系統執行一個判斷程序“響應何種鼠標事件?”
如果鼠標事件為“發送控制指令”,則進一步判斷發出該指令的用戶是否為管理員。判斷結果為“Y”,則具備管理員權限,系統存儲該指令后,將指令數據組幀并經通信模塊將指令發送出去。
如果鼠標事件為“航跡規劃”,需要在電子地圖上采集航點,將所有航點串聯起來,得到航線。然后執行一個判斷程序“數據庫的緩沖區是否有無人機下傳的數據?”如果有數據,則解析次數據,并在解析完成后將數據存儲到數據庫中。數據解析結果在人機交互界面上顯示。繼續執行上述判斷程序,重復上述流程,直到緩沖區內沒有無人機下傳的新數據為止[2]。
本文在設計數據庫時,除了要滿足數據的實時存儲需要外,還應具備訪問速度快、代碼效率高、可擴展性強等一系列要求。目前常用的幾種數據庫訪問技術中,ODBC、DAO 和ADO 等各有優缺點。本文選擇了ADO(Active Data Object)技術,其可以通過數據提供者和數據使用者來實現廣義的數據存儲,具備良好的操控能力;支持對非關系型數據庫的訪問,具有良好的可擴展性,后期可根據無人機地面導航控制系統的功能拓展需要靈活擴展數據庫。
2.1.1 電子地圖的加載
本文使用MapX 電子地圖控件進行導航電子地圖的開發。利用MapX 自帶的CeosetManage 工具加載地圖數據,將需要在導航電子地圖中顯示的所有圖形文件以圖形文件“XX.gst”的形式保存起來。打開MapX 軟件后,點擊“新建”選項,建立一個空白電子地圖,然后選擇“添加”選項,找到“XX.gst”文件后將其加載到新建電子地圖中。文件加載完畢后,MapX 會自動打開文件中的所有圖層,并疊加顯示在地圖窗口中[3]。為了優化操作,提供一個默認的地圖縮放比例和顯示中心。每次系統重新啟動后,會根據用戶習慣自動調整電子地圖的縮放比例,并定位顯示中心。這樣就避免用戶頻繁進行縮放、拖拽等操作。
2.1.2 電子地圖的瀏覽
用戶在瀏覽電子地圖時,有時候需要獲取地圖上某個區域的詳細信息,或者是需要從更加宏觀的視角獲取地圖上的地理信息。這種情況下就需要根據用戶的實際需求放大或縮小電子地圖。本文在設計電子地圖瀏覽功能時,提供了“放大”和“縮小”2 種功能,以及“選擇”工具。用戶可使用選擇工具在當前的電子屏幕上確定一個操作的中心點,然后以該點為中心進行放大或縮小操作。在設計上述功能時,可以從MapX 的函數庫中調用SetCurrentTool 函數,并添加相應的參數來實現具體功能,各類參數及對應功能見表1。

表1 瀏覽電子地圖的函數
這里以電子地圖的放大功能為例,其實現方式:用戶在屏幕上點選“放大”圖標后,通過響應點擊操作,觸發SetCurrentTool 函數,并成功識別miZoomInTool 參數。用戶再從屏幕上選擇任意一點,點擊后即可以該點為中心進行放大。
2.1.3 添加導航圖層
無人機的航線規劃、航跡顯示等功能,都是通過在電子地圖的某一圖層上繪制導航圖標與航跡來實現的。常用方法是利用GDI 方式繪制航跡,但是在每次刷新視圖時會出現不同程度的航跡缺失,不利于無人機的精確控制。本文提出了一種添加導航圖層的方式,通過在當前電子地圖中新建一個導航圖層,并將該圖層加入到電子地圖文件的方式,繪制航點,將航點串聯起來即可得到航跡。由于無人機在飛行期間位置始終處于動態變化中,通過創建動態導航圖層的方式,保證了動態圖層在其他靜態圖層之上,避免出現航跡覆蓋或航跡丟失的情況[4]。在繪制航跡時,要檢索電子地圖上的所有圖層,并判斷是否存在動態圖層“tempLayer”,如果存在該圖層,則將其添加到地圖文件中,并設置圖層屬性;如果完成所有圖層的檢索后,未發現動態圖層“tempLayer”,則創建一個新的圖層文件,右鍵點擊該圖層文件,在“屬性”一欄中將其設置為動態圖層,然后將其添加到電子地圖文件中,整個過程如圖2 所示。

圖2 添加導航圖層流程圖
2.2.1 飛行數據監測功能
為更加全面地了解無人機的飛行狀態,需要獲取無人機在整個飛行過程中的各項數據。本文設計的無人機地面導航控制系統,其飛行數據監測界面主要分為兩部分,其一是飛行姿態及運動數據,主要采集并顯示經緯度、高度、速度、滾轉角和方位角和俯仰角等參數;其二是機載設備工作數據,主要采集并顯示電源電壓、發動機溫度、電量余量等參數。飛行數據監測功能的實現方式:地面導航控制系統按照通信協議接收從無人機下傳的實時數據后,進行數據解析、轉換,將同源異構數據轉化成標準格式的運動參數、姿態參數或者狀態參數。調用界面文本框控件Edit,分別建立各參數與文本框之間的關系,這樣就能通過人機交互界面直觀地顯示監測數據。
2.2.2 故障報警功能
無人機在飛行過程中,地面導航控制系統需要實時掌握機載設備的運行工況,如電池電壓、剩余電量、發動機狀態,以及飛行速度是否過高或過低等。如果機載設備或工作狀態出現異常,應當立即進行報警,提醒地面操控人員了解故障類型、分析故障原因,并采取相應的措施,防止造成墜機等事故。無人機的故障報警實現過程:無人機與地面導航控制系統之間使用無線電建立通信,并將無人機的各項參數下傳到地面計算機,對數據進行解析。根據分析結果,判斷實時數據是否處于合理范圍內,以此來判斷無人機是否存在故障。例如,發動機在正常運行時,溫度閾值為10~50 ℃;將監測到的發動機溫度數據與溫度閾值進行對比,如果發動機當前溫度低于10 ℃,或者高于50 ℃,即可判斷為發動機溫度異常,并進行故障報警。地面操作人員根據地面導航控制系統的報警信息,即可了解故障類型,以便于及時作出相應的操作。
2.3.1 飛行航跡規劃
在明確飛行任務后,可以提前規劃無人機的飛行航跡,在無人機起飛后可以根據航跡自動飛行。在地面導航控制系統的菜單欄中,選擇“航跡規劃”后,系統會在電子地圖上創建一個用于繪制航跡的動態圖層。用戶可以在動態圖層上設置航點,所有航點設置完畢后,系統會根據航點地理坐標數據進行連線,從而得到一條航跡[5]。在飛行航跡規劃中,航點坐標的設置方式有2 種。一種是將鼠標在電子地圖上移動,當鼠標停留在某處后,會顯示該點的經緯度坐標。在該位置點擊鼠標左鍵,即可將該點確定為航點。同時,系統會根據屏幕位置與地理位置的轉換關系,獲得電子地圖上該點對應的地理坐標,并將該點的經度和緯度分別填入數據表MapX[]和MapY[]中。另一種是手動錄入準確坐標,適用于對航點位置要求精確的情況。手動輸入的坐標可以精確到小數點后6 位,例如經度123.600 353°、緯度45.726 616°。同樣的,航點的精度和緯度也會填入數據表MapX[]和MapY[]中。飛行航跡規劃流程如圖3所示。

圖3 飛行航跡規劃流程圖
2.3.2 飛行任務回放
任務回放的作用是重現已經存儲的飛行數據,除了飛行參數、設備參數外,還有航跡等,方便工作人員以更加直觀的形式了解過去某個時間段內無人機的飛行任務。本文設計的飛行任務回放模塊,在回放數據庫內已經保存的數據時,支持播放、暫停、快速、慢速等操作。該功能的實現過程:在地面導航控制系統中加入一個常規定時器,可根據人為設定的時間,定時讀取數據庫中無人機的數據表文件。一個定時周期對應一幀導航數據,不斷重復定時周期即可在可視化界面上動態、連續地顯示各種數據。在達到設定的結束時間,或者是手動關閉后可以停止回放。為了滿足不同的回放需求,本文添加了3 種不同周期的定時器:1 號定時器的定時周期為1 s,用于以正常速度播放回放;2 號定時器的定時周期為0.5 s,用于以2 倍正常速度播放回放;3 號定時器的定時周期為2.0 s,用于以0.5 倍正常速度播放回放。飛行任務回放的實現流程如圖4 所示。

圖4 飛行任務回放流程圖
在無人機技術日益成熟的背景下,無人機已經在地籍測量、環境保護、災后救援等方面得到了廣泛應用。無人機地面導航控制系統可以根據飛行任務提前規劃航行軌跡,讓無人機按照預設路線執行飛行任務。同時,無人機采集到的數據,以及無人機自身的工作參數都可以借助于通信模塊實時反饋給地面導航控制系統,并且在屏幕上直觀地顯示,方便地面工作人員隨時掌握無人機的工作狀態。當工作人員想要遠程控制無人機時,也可以編輯并發送指令給無人機,從而遙控無人機作出相應的動作,保證無人機更好地完成任務。