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