楊 帆,沈寶國
(江蘇航空職業技術學院,江蘇 鎮江212134)
當下無人機已發展成融合勘察、監控、追蹤、攻擊等多功能為一體的智能化小型飛行器,它以成本低、體積小、使用便捷、隱蔽性高、適應性強等優勢,能夠適應各種極端環境,并發揮著不可替代的作用[1-2]。隨著無人機應用的不斷深入,與之相配套的地面控制系統也由支持單一任務模式逐步發展成搭載多任務模式,由接收極少量信息的系統發展成集飛行監控、航路規劃、任務分配與執行、數字地圖導航、衛星通信等多功能一體的智能化控制系統[3]。開展對地面控制系統的研究,既有利于加深對導航定位原理的理解,又有利于進一步地分析各個功能模塊的具體實現以及彼此之間的協同作用。
本文基于某型號靶機研制的實際工程背景,設計了一款集飛行監測與控制、串口通訊、路徑規劃與優化、數據記錄、轉換與重播、數據繪制與載入等多功能于一體的無人機地面檢測軟件。
本軟件主要適用于某型號靶機研制階段和發射前測試階段的飛行規劃和控制。設計需求:
(1)支持多任務加載,在線修改、添加、刪除數據,完成信息裝訂。
(2)設計基于智能算法的航路規劃方案,生成任務航線并進行優化。
(3)能夠實時監測和管理飛行數據,并實現有效控制。
(4)具備數據記錄、重播和回放功能,便于后期分析。
(5)通信系統穩定可靠、滿足大數據傳輸要求。(6)具有良好的人機交互能力。
基于上述需求,本文遵循分層模塊化設計思想,建立包含航路規劃與優化、串口通信、飛行監控、數據處理、數據加載這五個功能模塊的框架圖,如圖1所示。
圖1 軟件功能模塊框架圖
圖1 中,數據庫需要向軟件輸入任務加載文件、重播文件,相反,軟件將生成的航路規劃文件、飛行數據記錄、數據處理結果存放于數據庫;飛行監控模塊包含發送控制和檢測指令、數據監測三個子功能,是軟件的基本功能模塊;航路規劃與優化分為兩個步驟,第一步設計基于改進蟻群算法的無人機航路規劃方案,并通過Matlab 三維仿真驗證,第二步結合無人機自身特性和任務要求,用幾何優化算法對航路進行平滑處理;通信模塊關乎地空數據處理的效率和準確度,本文設計串口通信函數,實現串口大容量地處理字節數據。此外,數據加載模塊主要實現任務區和航路區的數據裝訂,數據處理模塊主要包括對飛行數據的記錄、重播、轉換和后期數據繪圖。
2.1.1 基于改進蟻群算法的航路規劃算法設計與仿真
針對蟻群算法收斂效率低和易早熟收斂的缺陷[4-5],本文首先引入蟻群系統,改進算法結構,并自適應優化揮發因子和啟發函數并限定閾值,增強算法的種群多樣性和收斂速度。其次制定基于分級警戒區的信息素初值不均勻分配方案,有效地解決初期因盲目搜索導致的交叉路徑、效率低下等問題。再次設計包含混沌算子的最優-最差信息素更新和變尺度混沌局部搜索,增加算法隨機性能,避免其陷入局部最優,最后通過仿真驗證了改進算法的有效性。
為了驗證改進算法在三維規劃環境中的有效性,本文選取典型的山峰地形環境數據,生成仿真環境。同時設定無人機滿足以下約束條件:
(1)無人機最大轉彎角為60°。
(2)最大爬升/俯沖角為30°。
(3)無人機盡可能選擇山體中較為凹地形或平緩的飛行區域,同時注意防止撞擊山體。
(4)起點為(10,3,0),終點為(8,5,0),單位為km。圖2 為航路規劃結果圖,圖3 為對應的適應度(航跡代價)收斂圖。
圖2 航路規劃結果圖
圖3 適應度(航機代價)收斂圖
由圖2 可知,無人機規劃的航路既降低高度,選擇相對平緩的區域飛行,利用山體遮掩作用,有效跟蹤地面狀態和躲避敵方雷達的探測,增強隱蔽性,又設置安全飛行高度,避免與山體碰撞。
由圖3 可知,該航路隨著迭代次數的增加,其適度度(航跡代價)值不斷減少,并且通過算法中相應的改進措施,一方面在前期收斂加速,另一方面有效提高全局尋優能力,避免早熟收斂。本文算法的設計流程圖如圖4 所示。
圖4 算法流程圖
上述算法已驗證,故不作詳細推導,如何將改進算法應用到實際工程應用是本文重點。
2.1.2 基于Visual Studio 平臺的航路規劃算法應用
具體應用流程:
(1)基于Visual Studio 設計航路規劃任務界面,如圖5 所示。
(2)實現混合Visual Studio 和Matlab 的混合編程
圖5 基于Visual Studio 設計航路規劃任務界面
2.1.3 航路平滑與優化
無人機在實際飛行過程中存在不可飛航點、無法直線轉彎、特殊任務區域航路段等問題,以不可飛航點為例,本文采用幾何算法進行航路平滑與優化。
圖6 中,原有航路段由航點Si-1、Si、Si+1組成,其中在Si處轉彎,且夾角記作ξ,且ξ <90°。因無人機最小轉彎角和最大轉彎半徑限制,一般不采用銳角轉彎方式,故這里要通過幾何算法添加航點進行優化。幾何算法設計流程如下:
(1)過Si作直線垂直于線段Si-1Si,且取=2(),由此得出航點。
(2)連接Si+1和,與線段形成新的夾角,記作ξ′。
(3)判斷ξ′>90°,如果成立,繼續(4),反之重復操作(1)。
(4)上圖中存在兩處轉彎,分別在Si和,通過圓弧轉彎幾何原理,形成新的航路路徑為:Si-1- Si-- Si+1,且在轉彎處進行圓弧轉彎。
圖6 處理不可飛航點示意圖
2.1.4 航路信息一體化管理
為了便于處理大量的航點信息,本文采用一體化管理模式。統一采用類Route 統一管理航路的相關信息,類RoutePoint 存儲航點的相關屬性值,且Route包含RoutePoint 的對象,其余類與Route 有直接或間接的聯系。以下為類RoutePoint 中變量和函數。
Class RoutePoint
{
private:
double longitue;//經度
double latitude;//緯度
double altitude;//高度
unsigned char stateChar;//狀態字
unsigned char staskChar;//任務字
CString RoutePointType;//航點類型
……
public:
RoutePoint();//構造函數
~RoutePoint();//析構函數
RoutePoint(const RoutePoint &a);//拷貝構造函數
POINTYH II2xy(double initial_longitude,double initial_latitude))//坐標轉換
void set_longitude();//以獲取經度信息為例})
本文對航路規劃的算法設計封裝在規劃RoutePlan 類中,其中包含的函數變量名如下:
Class RoutePlan
{
private:
bool plan_the_rudeway();//粗略規劃
bool smooth_the_rudeway();//航路平滑規劃
public:
void add_frontpoint(double distance);//添加前伸航點
void add_behindpoint(double distance);//添加后延航點
heightCheck();//高度判斷
qiFeiGuiHua();//起飛點規劃
void delete_the_point();//刪除非固定航點
……
})
本文基于實際應用背景,設定如下參數要求:
(1)接口方式采用異步RS-422A;波特率為11520bps。
(2)1 位起始位+8 位數據位+1 位停止位+校驗位。
(3)上行采用定幀長,即幀頭+指令編碼+數據+校驗位。
(4)下行采用不定幀長,針對不同類型的數據,采用不同長度的幀長,極大增強軟件的運行性能。
2.2.1 通信模塊的軟件架構設計
該模塊的設計思路如下:
(1)判斷串口事件屬性是否為數據接收狀態(comEvReceive),否則,等待處理。
(2)分別計算緩沖區剩余空間大小值(lenbuf)和接收到的數據長度(lentmp)。
(3)判斷lenbuf>lentmp,如果成立,表明緩沖區足夠能容納接收數據量,反之,因緩沖區為環形緩沖區,可存儲在其內,并設置數據有效標志位(RmtEnd)。
(4)將接收到的數據存儲到數組(RmtData-Buffer)。
圖7 通信模塊設計流程圖
本文設計的飛行控制模塊包括控制指令和檢測指令,分別如圖8 和9 所示。
圖8 控制指令子模塊
圖9 檢測指令子模塊
為了便于跟蹤指令的運行情況,本文采用不同顏色表征指令運行狀態。當點擊按鈕時,顏色首先是綠色,即指令發送成功;隨之變成黃色,即指令被飛控接收,最后指令變成紅色,表示已成功執行。效果如圖8 所示。此外,為了提高界面人性化、避免用戶誤操作,設置了輸入案例和限幅操作。
圖10 為監測數據顯示界面,包括飛行器基本信息、舵面、大氣機、導航、加速度計、磁羅盤、無線電高度等信息。數據顯示形式包括十進制和二進制數字、LED 燈、文字。
圖10 監測界面顯示圖
2.4.1 加載任務文件
在實際作戰中,需要加載任務數據,包括航路區和安控區數據,其中安控區按照警戒程度由低到高分為預警區和警戒區。圖11 和12 分別為加載航路數據和加載安控區數據。
圖11 加載航路
圖12 加載安控區
2.4.2 數據重播和繪圖功能
當點擊“開始”按鈕時,將飛行數據保存成“*.bin”或txt 格式存放在數據庫中,點擊“停止”按鈕標志停止記錄。當進行數據重播時,軟件可以自定義重播速率,可以任意拖動進度條,可以中途暫停、繼續或停止數據重播。點擊“轉換”按鈕可以將“*.bin”格式保存的文件通過數據解算后轉換成excel 格式的文件,以便后期研究人員分析評估。
數據繪圖模塊通過繪制時軸圖,直觀地顯示變量隨時間的變化趨勢,繪圖變量包括俯仰角給定值、滾轉角(傾斜角)給定值、實時俯仰角、滾轉角、三個角速率、三個舵面輸出值以及高度值。
本文設計的無人機地面檢測軟件,經過工程試驗,界面友好,操作便捷,運行效率高,具備一定的工程應用價值,但在航路規劃方面未實現面對突發情況的自動調整功能,有待后期補充和加強,同時,后期將添加更多功能以豐富軟件內容,提高性能。